Was macht eigentlich das PAnsiChar da in dem Code?
String => PChar
AnsiString => PAnsiChar
Muß die
DLL "zwingend" us dem Programmverzeichnis geladen werden?
Wenn nein, dann kann der Pfad weggelassen werden. LoadLibrary sucht sich die
DLL schon von allein. Angefangen beim Programmpfad, bis zu den System-Verzeichnissen.
Delphi-Quellcode:
function LoadIK220DLL(DLLName: String): Bool32;
var
err: Boolean; // wird das noch verwendet? (aber es fehlt ja eh der halbe Code)
begin
try
if FileExists(DLLName) then
begin
ShowMessage('Mich gibt es: ' + DLLName);
DLLHandle := LoadLibrary(PChar(DLLName));
if DLLHandle = 0 then
RaiseLastOSError; // alt = RaiseLastWin32Error;
end else
begin
//ShowMessage('Datei IK220DLL64.dll gibt es nicht!'); // Und wenn via DLLName ein anderer Dateiname übergeben wurde?
ShowMessage('Datei ' + DLLName + ' gibt es nicht!');
DLLHandle := 0;
Exit; // Schau mal bitte in die Compilermeldung und beheben die aufgezählten Fehlermeldungen (vorallem bezüglich Result sei nicht initialisiert)
end;
...
- Und, wie bereits genannt, erstellt Delphi 7 ausschließlich Win32-Programme.
- Win32-Programme können nur Win32-DLLs laden.
- Aber ein Win32-Programm kann auch in einem Win64 ausgeführt werden. (dort genauer im WoW64 "Windows-on-Windows", welches das 32-Bit-Subsystem vom 64-Bit-Windows ist)
- Wenn unbedingt eine 64-Bit-DLL nötig ist, z.B. weil die 32-Bit-DLL im Windows 64 den Treiber nicht ansprechen kann,
dann muß dafür auch ein Win64-Programm erstellt werden. (neues Delphi mit Win64-Unterstützung oder Alternativen ala Lazarus)