» » » Валентин Озеров - Советы по Delphi. Версия 1.4.3 от 1.1.2001


Авторские права

Валентин Озеров - Советы по Delphi. Версия 1.4.3 от 1.1.2001

Здесь можно скачать бесплатно "Валентин Озеров - Советы по Delphi. Версия 1.4.3 от 1.1.2001" в формате fb2, epub, txt, doc, pdf. Жанр: Программирование. Так же Вы можете читать книгу онлайн без регистрации и SMS на сайте LibFox.Ru (ЛибФокс) или прочесть описание и ознакомиться с отзывами.
Валентин Озеров - Советы по Delphi. Версия 1.4.3 от 1.1.2001
Рейтинг:
Название:
Советы по Delphi. Версия 1.4.3 от 1.1.2001
Издательство:
неизвестно
Год:
неизвестен
ISBN:
нет данных
Скачать:

99Пожалуйста дождитесь своей очереди, идёт подготовка вашей ссылки для скачивания...

Скачивание начинается... Если скачивание не началось автоматически, пожалуйста нажмите на эту ссылку.

Вы автор?
Жалоба
Все книги на сайте размещаются его пользователями. Приносим свои глубочайшие извинения, если Ваша книга была опубликована без Вашего на то согласия.
Напишите нам, и мы в срочном порядке примем меры.

Как получить книгу?
Оплатили, но не знаете что делать дальше? Инструкция.

Описание книги "Советы по Delphi. Версия 1.4.3 от 1.1.2001"

Описание и краткое содержание "Советы по Delphi. Версия 1.4.3 от 1.1.2001" читать бесплатно онлайн.



…начиная с 1001. Смотрите другие файлы…






    Height = 21

    DataField = 'Area'

    DataSource = DataSource1

    MaxLength = 0

    TabOrder = 3

   end

   object EditPopulation: TDBEdit

    Left = 6

    Top = 173

    Width = 65

    Height = 21

    DataField = 'Population'

    DataSource = DataSource1

    MaxLength = 0

    TabOrder = 4

   end

  end

 end

 object DataSource1: TDataSource

  Left = 95

  Top = 177

 end

 object Database1: TDatabase

  DatabaseName = 'DB1'

  LoginPrompt = False

  SessionName = 'Default'

  Left = 128

  Top = 176

 end

end

Как вызывать функцию 16-битной DLL из 32-битного приложения?

Из советов Nomadic'a:

Надо использовать Thunks.

Кусок работающего только под Windows 95 кода —

const

 Gfsr_SystemResources = 0;

 Gfsr_GdiResources = 1;

 Gfsr_UserResources = 2;

var

 hInst16: THandle;

 GFSR: Pointer;

 { Undocumented Kernel32 calls. }

function LoadLibrary16(LibraryName: PChar): THandle; stdcall; external kernel32 index 35;

procedure FreeLibrary16(HInstance: THandle); stdcall; external kernel32 index 36;

function GetProcAddress16(Hinstance: THandle; ProcName: PChar): Pointer; stdcall; external kernel32 index 37;

procedure QT_Thunk; cdecl; external kernel32 name 'QT_Thunk';


{ QT_Thunk needs a stack frame. }

{$StackFrames On}

{ Thunking call to 16-bit USER.EXE. The ThunkTrash argumentallocates space on the stack for QT_Thunk. }

function NewGetFreeSystemResources(SysResource: Word): Word;

var ThunkTrash: array[0..$20] of Word;

begin

 { Prevent the optimizer from getting rid of ThunkTrash. }

 ThunkTrash[0] := hInst16;

 hInst16 := LoadLibrary16('user.exe');

 if hInst16 < 32 then raise Exception.Create('Can''t load USER.EXE!');

 { Decrement the usage count. This doesn't really free the library, since USER.EXE is always loaded. }

 FreeLibrary16(hInst16);

 { Get the function pointer for the 16-bit function in USER.EXE. }

 GFSR := GetProcAddress16(hInst16, 'GetFreeSystemResources');

 if GFSR = nil then raise Exception.Create('Can''t get address of GetFreeSystemResources!');

 { Thunk down to USER.EXE. }

 asm

  push SysResource { push arguments }

  mov edx, GFSR { load 16-bit procedure pointer }

  call QT_Thunk { call thunk }

  mov Result, ax { save the result }

 end;

end

Как написать DLL, которую можно было-бы выполнить с помощью RunDll, RunDll32?

Из советов Nomadic'a :

Вы должны определить в программе вызываемую снаружи функцию.

Функция должна быть __stdcall (или WINAPI, что то же самое ;)) и иметь четыре аргумента. Первый – HWND окна, порождаемого rundll32 (можно использовать в качестве owner'а своих dialog box'ов), второй – HINSTANCE задачи, третий – остаток командной строки (LPCSTR, даже под NT), четвертый – не знаю ;).

Hапример –

int __stdcall __declspec(dllexport) Test (HWND hWnd, HINSTANCE hInstance, LPCSTR lpCmdLine, DWORD dummy) {

 MessageBox(hWnd, lpCmdLine, "Command Line", MB_OK);

 return 0;

}

Исполняем таким образом –

rundll32 test.dll,_Test@16 this is a command line

выдаст message box со строкой «this is a command line».

На Паскале –

Function test(hWnd: Integer; hInstance: Integer; lpCmdLine: PChar; dummy: Longint): Integer; StdCall; export;

begin

 Windows.MessageBox(hWnd, lpCmdLine, 'Command Line', MB_OK);

 Result := 0;

end;

Давненько я ждал эту информацию! Сел проверять и наткнулся на очень забавную вещь. А именно – пусть у нас есть исходник на Си пpимерно такого вида:

int WINAPI RunDll(HWND hWnd, HINSTANCE hInstance, LPCSTR lpszCmdLine, DWORD dummy);

……

int WINAPI RunDllW(HWND hWnd, HINSTANCE hInstance, LPCWSTR lpszCmdLine, DWORD dummy);

……

и .def-файл примерно такого вида:

EXPORTS

RunDll

RunDllA=RunDll

RunDllW

то rundll32 становится разборчивой — под NT вызывает UNICODE-версию. Под 95, разумеется, ANSI.

Продукты третьих фирм 

Adobe 

Читаем Adobe Acrobat PDF файлы из нашего приложения

Igor Nikolaev aKa The Sprite советует:

Adobe Acrobat PDF — хорошо известный формат, который нравится многим пользователям. Давайте посмотрим, как можно заставить приложение на Delphi прочитать файл такого формата.

Совместимость: Delphi 3.x (или выше)

Итак, Вы должны быть уверены, что у вас проинсталлирован Acrobat Reader, если таковой программы нет, то её можно скачать с www.adobe.com После этого необходимо проинсталировать типовую библиотеку для Acrobat (Project→Import Type Library из меню Delphi) выберите "Acrobat Control for ActiveX (version x)". Где x — текущая версия библиотеки. Hажмите кнопку инсталяции. Теперь создайте новое приложение, поместите на форму проинсталлированный компонент TPDF, далее добавите OpenDialog, и в заключении кнопку, при на нажатии на которую будет вызываться процедура открытия файла:

procedure TForm1.Button1Click(Sender: TObject);

begin

 if OpenDialog1.Execute then pdf1.src := OpenDialog1.FileName;

end;

в юните PdfLib_TLB вы можете найти интерфейс класса TPdf:

TPdf = class(TOleControl)

private

 FIntf: _DPdf;

 function  GetControlInterface: _DPdf;

protected

 procedure CreateControl;

 procedure InitControlData; override;

public

 function  LoadFile(const fileName: WideString): WordBool;

 procedure setShowToolbar(On_: WordBool);

 procedure gotoFirstPage;

 procedure gotoLastPage;

 procedure gotoNextPage;

 procedure gotoPreviousPage;

 procedure setCurrentPage(n: Integer);

 procedure goForwardStack;

 procedure goBackwardStack;

 procedure setPageMode(const pageMode: WideString);

 procedure setLayoutMode(const layoutMode: WideString);

 procedure setNamedDest(const namedDest: WideString);

 procedure Print;

 procedure printWithDialog;

 procedure setZoom(percent: Single);

 procedure setZoomScroll(percent: Single; left: Single; top: Single);

 procedure setView(const viewMode: WideString);

 procedure setViewScroll(constviewMode: WideString; offset: Single);

 procedure setViewRect(left: Single; top: Single; width: Single; height: Single);

 procedure printPages(from: Integer; to_: Integer);

 procedureprintPagesFit(from: Integer; to_: Integer; shrinkToFit: WordBool);

 procedure printAll;

 procedure printAllFit(shrinkToFit: WordBool);

 procedure setShowScrollbars(On_: WordBool);

 procedure AboutBox;

 property ControlInterface: _DPdf read GetControlInterface;

 property DefaultInterface: _DPdf read GetControlInterface;

published

 property TabStop;

 property Align;

 property DragCursor;

 property DragMode;

 property ParentShowHint;

 property PopupMenu;

 property ShowHint;

 property TabOrder;

 property Visible;

 property OnDragDrop;

 property OnDragOver;

 property OnEndDrag;

 property OnEnter;

 property OnExit;

 property OnStartDrag;

 property src: WideString index 1 read GetWideStringProp write SetWideStringProp stored False;

end;

в заключение можно добавить следующее: Если Вы не уверены, что у конечного пользователя Вашей программы установлен Acrobat Reader, то необходимо, чтобы приложение проверяло эту ситуацию, прежде чем будут производится различные манипуляции с компонентой TPdf. И второе, если файл PDF имеет различные связи, например с AVI файлами, то они не будут работать из Delphi.

Надеюсь этот пример будет Вам полезен. 

Vista Software Apollo 

Какие есть рекомендации по использованию Apollo SDE?

Nomadic советует: 

1. При работе с Аполло (если у тебя базы используются и досовскими задачами) — то в dbgrid'e поставь значение Font→Charset = OEM_Charset. И не забудь сразу после открытия базы вызывать метод Apollo1.SetTranslate(True). Если твое приложение будет работать с базами одновременно с досовскими, то советую перед открытием баз вызывать метод Apollo1.SysProp(SDE_SP_SETOBUFFER, Pointer(0)); для отключения буферизации операций чтения/записи в базы.

2. Если ты пишешь приложение, которое будет использовать базы только в кодировке Windows (CP1251), то тебе достаточно будет указать в dbgrid'e значение Font→Charset = Russian_Charset. Если базы в 866 кодиpовке, то:


На Facebook В Твиттере В Instagram В Одноклассниках Мы Вконтакте
Подписывайтесь на наши страницы в социальных сетях.
Будьте в курсе последних книжных новинок, комментируйте, обсуждайте. Мы ждём Вас!

Похожие книги на "Советы по Delphi. Версия 1.4.3 от 1.1.2001"

Книги похожие на "Советы по Delphi. Версия 1.4.3 от 1.1.2001" читать онлайн или скачать бесплатно полные версии.


Понравилась книга? Оставьте Ваш комментарий, поделитесь впечатлениями или расскажите друзьям

Все книги автора Валентин Озеров

Валентин Озеров - все книги автора в одном месте на сайте онлайн библиотеки LibFox.

Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.

Отзывы о "Валентин Озеров - Советы по Delphi. Версия 1.4.3 от 1.1.2001"

Отзывы читателей о книге "Советы по Delphi. Версия 1.4.3 от 1.1.2001", комментарии и мнения людей о произведении.

А что Вы думаете о книге? Оставьте Ваш отзыв.