Man_Without_Face
Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору unit uMain; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, cxGraphics, cxLookAndFeels, cxLookAndFeelPainters, Menus, StdCtrls, cxButtons, DB, DBTables; type TfrmMain = class(TForm) cxButton1: TcxButton; Database1: TDatabase; procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure cxButton1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var frmMain: TfrmMain; implementation {$R *.dfm} procedure TfrmMain.cxButton1Click(Sender: TObject); var LibHandle: THandle; fDisplaySampleReport: procedure; begin LibHandle := LoadLibrary('bbc5_reports.dll'); if LibHandle = 0 then raise Exception.Create('Не могу загрузить файл отчета...') else begin try @fDisplaySampleReport := GetProcAddress(LibHandle, 'DisplaySampleReport'); if @fDisplaySampleReport <> nil then fDisplaySampleReport; // Вызов процедуры из Dll except on E: Exception do ShowMessage('Ошибка: ' + E.Message); end; end; FreeLibrary(LibHandle); // Освобождение памяти занятой Dll end; procedure TfrmMain.FormClose(Sender: TObject; var Action: TCloseAction); begin Action := caFree; Release; frmMain := nil; end; end. |