Witam wszystkich,
Chcialbym poprosic o pomoc, chocby sam pocztatek, czyli jak sie tego zabrac. Sytuacja wyglada nastepujaco: mam zewnetrzna biblioteke DLL przez ktora moge laczyc sie do programu X oraz API do tej bliblioteki. I teraz:
W sekcji type
utworzylem typ:
T_initialize = procedure(host: String; login: String; password: String);
Nastepnie dalej zadeklarowalem funkcje, ktora bede chcial uzywac. Funkcja znajduje sie w DLL-ce.
procedure FAPI_Init(host: String; login: String; password: String); stdcall external 'biblioteka.dll' name 'FAPI_Init';
Funkacja umozliwia nawiazanie polaczenia z programem X.
Nastepnie gdzies na dole chcialem wykorzystac te funkcje. Wrzucilem kod pod buttona:
procedure TB_RT2004.Button1Click(Sender: TObject);
var
TDLL_initialize : T_initialize;
begin
DLL := LoadLibrary('biblioteka.dll'); // laduj biblioteke
try
@TDLL_initialize := GetProcAddress(DLL, 'FAPI_Init');
if @TDLL_initialize = nil then raise Exception.Create('Bład - nie mogę znaleźć proceudry w bibliotece!');
TDLL_initialize('127.0.0.1','jkowalski','123456'); // wywolaj procedure z biblioteki
finally
FreeLibrary(DLL); // zwolnij pamiec
end;
end;
Wiem, ze funkcja FAPI_Init zwraca uchwyt do połączenia z programem X lub NULL w przypadku braku możliwości nawiązania połączenia.
Chcialbym teraz jakos zadeklarowac typ do tego uchwytu, poniewaz wszystkie inne funkcje API wymagaja tego uchwytu jako parametru. Czy ktos z Was moglby mi podpowiedziec jak to zadeklarowac...???
Serdeczni pozdrawiam
Marek