17. juni 2000 - 12:28
Der er
3 kommentarer og
1 løsning
Hvordan laver man en DLL i Delphi 5 ??
Er der en venlig sjæl der vil lave et lille eksempel på sourcen i en dll med to funktioner. En funktion der er tilgængelig for programmer der benytter DLL'en og en funktion som kun kan bruges internt i DLL'en.
Funktionerne kunne evt. returnerer noget i stil med "Hello World" eller what ever...
Først skal du lave et "library" - det gøres fra "File|New...", hvor du vælger "library". Så indtaster du følgende kode, og gemmer det som fx DllProject1.dpr
---- kode ----
library DllProject1;
uses
ShareMem,
SysUtils,
Dialogs,
Classes;
{$R *.RES}
procedure SM(Msg: String); //denne proc er intern !!
begin
Showmessage(Msg);
end;
function Func1: String; //da jeg kalder disse funktioner med String, SKAL man bruge ShareMem-unitet i alle filer, der skal bruge denne funktion.
//hvis man vil undgå det - eller hvis man vil lave en dll, der også kan bruges af fx Visual Basic-programmer, skal man lave det om til pchar !!
begin
SM('Hejsa1');
Result:='Hello World 1';
end;
function Func2: String; //samme her!
begin
SM('Hejsa2');
Result:='Hello World 2';
end;
exports
Func1,
Func2;
begin
end.
---- kode ----
så laver du et program (exe), der kan bruge dll'en - fx UseDll.dpr. I dette eksempel har jeg fjernet alle forms, da de ikke behøves!
---- kode ----
program UseDll;
uses
ShareMem,Windows,SysUtils,Dialogs;
{$R *.RES}
function Func1: String; external 'DllProject1.dll' name 'Func1';
function Func2: String; external 'DllProject1.dll' name 'Func2';
begin
ShowMessage('Kalder Func1');
ShowMessage(Func1); //viser resultatet i en msgbox
ShowMessage('Kalder Func2');
ShowMessage(Func1); //viser resultatet i en msgbox
end.
---- kode ----
Og så virker det!
Du kan selvfølgelig også lave parametre til funktionerne - bare husk at ret både i DllProject1 og i UseDll !!