In diesem Beispiel wird aber nirgendwo PChar verwendet. (jedenfalls nicht für die gezeigten Schnittstellen zur
DLL -> DLLCheck/CHECK_DB_CONNECTION hat weder entsprechenden Parameter noch Result)
Der Code aus #1 einfach nur etwas gekürzt.
Delphi-Quellcode:
DLLHandle := LoadLibrary('
mes_toolbox.dll');
// Windows sucht sowieso zuerst im Programmverzeichnis
DLLCheck := GetProcAddress(DLLHandle, '
CHECK_DB_CONNECTION');
// siehe (1)
Assert(Assigned(DLLCheck));
j := DLLCheck;
if j = 0
then StatusBar1.Panels[0].Text := IntToStr(j) + '
Datenbank Verbindung OK';
if j = -1000
then StatusBar1.Panels[0].Text := IntToStr(j) + '
Fehler: keine Verbindung zur DB';
1) Links vom
:=
baut Delphi implizit ein
@
ein.
Bzw. ist es hier eigentlich andersrum, denn Delphi baut bei Prozedurzeigern implizit immer ein
^
(Dereferenzierung) ein und lässt es bei einer Zuweisung implizit weg, außer man macht ein explizites @ davor.
Die Funktionen LoadLibrary und GetProcAddress werden nicht in der
DLL ausgeführt.
Das Einzige, wo es hier Probleme geben könnte, wenn "Path" kein String, sondern z.B. ein AnsiString ist. (ab Delphi 2009)
Nutzt die
DLL sowas wie ShareMem?
Oder gibt es noch weitere exportierte Funktionen, wo es knallt?