Форум: "Базы";
Текущий архив: 2002.04.11;
Скачать: [xml.tar.bz2];
Внизкруговерть с DLL Найти похожие ветки
← →
sniknik (2002-03-14 13:48) [5]Шутиш? Только динамическими пользуйся! гораздо удобнее (больше возможностей)
type
TCashProc = class(TComponent)
private
DllHandle: Thandle;
public
Proc: TCashProc;
DllName: String;
ConString: WideString;
DllInit: function (Own: TComponent; ConString: WideString): Boolean; stdcall;
DllClose: function: Boolean; stdcall;
GetInfo: function: PChar; stdcall; {}
GetConString: function (Handle: HWND; ConString: WideString): WideString; stdcall;
GetZNumber: function: PChar; stdcall; {}
ExistIn: function (Path: PChar): Boolean; stdcall;
CopyIn: function: PChar; stdcall;
DeleteIn: function (Path: PChar): Boolean; stdcall;
ExistOut: function (CashNo: Integer): Integer; stdcall;
CopyOut: function (CashNo: Integer; Path: PChar): PChar; stdcall;
DeleteOut: function: Boolean; stdcall;
constructor Create(Owner: TComponent; Dll: String; ConStr: WideString);
destructor Destroy; override;
end;
Const LoadOk: Boolean= True;
implementation
constructor TCashProc.Create(Owner: TComponent; Dll: String; ConStr: WideString);
begin
inherited Create(Owner);
DllHandle:= LoadLibrary(PChar(Dll));
if DllHandle >= 32 then begin
DllInit:= GetProcAddress(DllHandle, "DllInit");
if @DllInit = nil then begin
MessageDlg("Ошибка: в модуле не найдена функция DllInit", mtError, [mbOk], 0);
LoadOk:= False;
end;
DllClose:= GetProcAddress(DllHandle, "DllClose");
if @DllClose = nil then begin
MessageDlg("Ошибка: в модуле не найдена функция DllClose", mtError, [mbOk], 0);
LoadOk:= False;
end;
GetInfo:= GetProcAddress(DllHandle, "GetInfo");
if @GetInfo = nil then begin
MessageDlg("Ошибка: в модуле не найдена функция GetInfo", mtError, [mbOk], 0);
LoadOk:= False;
end;
GetConString:= GetProcAddress(DllHandle, "GetConString");
if @GetConString = nil then begin
MessageDlg("Ошибка: в модуле не найдена функция GetConString", mtError, [mbOk], 0);
LoadOk:= False;
end;
GetZNumber:= GetProcAddress(DllHandle, "GetZNumber");
if @GetZNumber = nil then begin
MessageDlg("Ошибка: в модуле не найдена функция GetZNumber", mtError, [mbOk], 0);
LoadOk:= False;
end;
ExistIn:= GetProcAddress(DllHandle, "ExistIn");
if @ExistIn = nil then begin
MessageDlg("Ошибка: в модуле не найдена функция ExistIn", mtError, [mbOk], 0);
LoadOk:= False;
end;
CopyIn:= GetProcAddress(DllHandle, "CopyIn");
if @CopyIn = nil then begin
MessageDlg("Ошибка: в модуле не найдена функция CopyIn", mtError, [mbOk], 0);
LoadOk:= False;
end;
DeleteIn:= GetProcAddress(DllHandle, "DeleteIn");
if @DeleteIn = nil then begin
MessageDlg("Ошибка: в модуле не найдена функция DeleteIn", mtError, [mbOk], 0);
LoadOk:= False;
end;
ExistOut:= GetProcAddress(DllHandle, "ExistOut");
if @ExistOut = nil then begin
MessageDlg("Ошибка: в модуле не найдена функция ExistOut", mtError, [mbOk], 0);
LoadOk:= False;
end;
CopyOut:= GetProcAddress(DllHandle, "CopyOut");
if @CopyOut = nil then begin
MessageDlg("Ошибка: в модуле не найдена функция CopyOut", mtError, [mbOk], 0);
LoadOk:= False;
end;
DeleteOut:= GetProcAddress(DllHandle, "DeleteOut");
if @DeleteOut = nil then begin
MessageDlg("Ошибка: в модуле не найдена функция DeleteOut", mtError, [mbOk], 0);
LoadOk:= False;
end;
ConString:= ConStr;
if LoadOk then LoadOk:= DllInit(Owner, ConString);
end else begin
MessageDlg("Ошибка: не могу найти "+Dll, mtError, [mbOk], 0);
LoadOk:= False;
end;
end;
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2002.04.11;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.005 c