[ Ilija Studen @ 19.05.2003. 17:32 ] @
Kako da ucitavam DLL-ove u vreme izvrsavanja?

Kako se poziva procedura po imenu (znam ime, znam parametre, ali DLL povezujem sa aplikacijom u vreme izvrsavanja)?

Da li ce biti problema ako proceduri iz DLL-a koju pozivam po imenu kao parametar prosledjujem objekat?
[ -zombie- @ 19.05.2003. 18:30 ] @
Code:

type
    tFunkcija=function (param1: integer; var param2: real): integer; stdcall;
var
    func: tFunkcija;

procedure Load;
var
    s: string;
    hDll: tHandle;
begin
    s:='c:\putanja\do\biblioteke.dll';
    hDll:=LoadLibrary(pchar(s));
    if hDll=0 then raise Exception.Create('Greška u učitavanju dll-a');
    @func:=GetProcAddress(hDll,'ime_exportovane_funkcije');
end;

procedure Use;
var 
    param2: Real;
begin
    func(13, param2);
end;


(jedino obrati pažnju oko prenosa stringova.. najlakše je ako ti ne trebaju stringovi duži od 255 karaktera da cepaš sa ShortString tipovima, ali ako ti ne odgovara, pogledaj text koji dobiješ kada klikneš na File->New->Library)


a za objekte zavisi u kom je jeziku pisan taj dll. ako je isto delphi, onda ne brini nego samo prosledi pointer na objekat. ako nije, onda bolje da pogledaš COM.