Toon posts:

[Delphi] werken met DLL's

Pagina: 1
Acties:
  • 129 views sinds 30-01-2008
  • Reageer

Verwijderd

Topicstarter
Ik heb Delphi 6 en wil een *.dll file loaden wanneer die nodig is. nu heb ik wel wat in de help gevonden maar ik kom der nie uit. Kan iemand me uitleggen hoe.

Bijv. dll is xxxxx.dll

en dan moet er je met LoadLibrary(xxxxx.dll); de dll laden. Maar dan komt het probleem, ik wil een functie in de dll aanroepen, hoe moet dit?

functie doetwat : string; of zo

Verwijderd

Topicstarter
Ik heb al in de search gezocht maar kon niks vinden wat ik kan gebruiken. Ik weet en kan wel de dll gewoon laden als de app start, maar ik wil dus de dll laden wanneer ik de functie in de dll nodig heb. Dynamic Loading zoals Delphi dat noemt.

  • jelmervos
  • Registratie: Oktober 2000
  • Niet online

jelmervos

Simple user

Check je e-mail voor een aantal leuke voorbeelden over DLL's en Delphi.

"The shell stopped unexpectedly and Explorer.exe was restarted."


Verwijderd

Waarom nu weer via de email , als je het nu hier neerzet leer ik ook ook nog wat van :)

  • jelmervos
  • Registratie: Oktober 2000
  • Niet online

jelmervos

Simple user

Op zondag 24 maart 2002 18:31 schreef kia het volgende:
Waarom nu weer via de email , als je het nu hier neerzet leer ik ook ook nog wat van :)
Zo'n reactie kon ik verwachten natuurlijk, maar heb geen host waar het op kan staan, als jij die nou even regelt dan komt alles goed voor iedereen. :) :)

"The shell stopped unexpectedly and Explorer.exe was restarted."


Verwijderd

Topicstarter
thx jelmervos, sorry dat ik nu pas reageer maar ik heb effe gegeten.

Verwijderd

Topicstarter
voor iedereen die de zip file will hier is de link

members.home.nl\skynet2097\md5code_14.zip

Verwijderd

Topicstarter
Oke het werkt.... maaar enkele sec na de procedure onstaat er een access violation bij 0x000000000 en dan slui t de app af. Iemand een idee hoe en waarom?

Verwijderd

unloaden/?

Verwijderd

Topicstarter
Dit is de functie. alles gaat goed ook het resultaat komt goed in de memoveld maar enkele sec na het resultaat BOEM gaat het mis. Dus error komt na de functie.

function TForm1.loadDLL : string;
var
HInst : THandle;
FPointer : TFarProc;
MyFunct : TIntFunction;
begin
HInst := LoadLibrary(DLLName);
result := 'WordDLL.dll loaded';

if HInst > 0 then
try
FPointer := GetProcAddress(HInst,'randomWord');
MyFunct := TIntFunction(FPointer);
MemoStatus.Lines.Add(MyFunct);
finally
FreeLibrary(HInst);
end;
end;

Edit : Huh, waarom neemt ie de spatie nie mee :?

  • Varienaja
  • Registratie: Februari 2001
  • Laatst online: 14-06-2025

Varienaja

Wie dit leest is gek.

Ik heb 1x een dll gebruikt:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
unit Lib;

interface
uses Windows;

type
  ULARGE_INTEGER = record
                Low,High:cardinal;
             end;
const
  kernel32  = 'kernel32.dll';

function GetDFS(lpDirectoryName: PChar;
  var lpFreeBytesAvailableToCaller, lpTotalNumberOfBytes,lpTotalNumberOfFreeBytes: ULARGE_INTEGER
): BOOL; stdcall;

implementation

function GetDFS; external kernel32 name 'GetDiskFreeSpaceExA';

end.

Siditamentis astuentis pactum.


Verwijderd

Wat is de calling convention van de functie in de dll? Wat is de calling convention van TIntFunction?

Maw, hoe is randomWord gedefinieerd in de dll?

Als de dll in C/C++ geschreven is [randomWord begint met een kleine letter, dus zou goed kunnen :)] dan moet de calling convention van TIntFunction cdecl zijn.
Pagina: 1