Thema: Delphi OLE. DLL Zugriff. XE2

Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.071 Beiträge
 
Delphi 12 Athens
 
#8

AW: OLE. DLL Zugriff. XE2

  Alt 12. Nov 2014, 17:41
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?
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.

Geändert von himitsu (13. Nov 2014 um 08:41 Uhr)
  Mit Zitat antworten Zitat