Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Software-Projekte der Mitglieder (https://www.delphipraxis.net/26-software-projekte-der-mitglieder/)
-   -   DLL-interface Probleme in Delphi2009 (https://www.delphipraxis.net/123143-dll-interface-probleme-delphi2009.html)

GPR-Man 28. Okt 2008 13:30


DLL-interface Probleme in Delphi2009
 
Hallo
Ich nutze eine DLL mit einem Delphi-Interface. Unter Delphi7 habe ich keine Probleme gehabt, seit der direkten Umstellung auf Delphi 2009 klappt leider nichts mehr. Das Öffnen der Datei erfolgt mit dem Befehl:

Delphi-Quellcode:
   file_id := H5Fopen(PChar(OpenDialog1.Files[0]), H5F_ACC_RDWR, H5P_DEFAULT);
wobei das Interface so aussieht:

Delphi-Quellcode:
function H5Fopen(filename: PChar; flags: Cardinal; access_plist: hid_t): hid_t; stdcall external 'hdf5dll3dr.dll' index 62;
Unter der Variabeln file_id erhalte ich unter Delphi2009 nur das Resultat -1, was einen Fehlschlag bedeutet.
Hängt dies mit der Unicode-Unterstützung zusammen? Falls ja, wie muss ich den Code abändern?

mkinzler 28. Okt 2008 13:48

Re: DLL-interface Probleme in Delphi2009
 
Speichere den wert zuerst als expliziten AnsiString, bevor du ihn der Funktion übergibst.

Lasse2002 28. Okt 2008 13:49

Re: DLL-interface Probleme in Delphi2009
 
PChar verweist in D2009 auf PWideChar. Also solange deine DLL die Daten im Ansi-Format erwartet, mußt du diese als PAnsiChar übergeben.

Delphi-Quellcode:
   file_id := H5Fopen(PAnsiChar(AnsiString(OpenDialog1.Files[0])), H5F_ACC_RDWR, H5P_DEFAULT);
Delphi-Quellcode:
function H5Fopen(filename: PAnsiChar; flags: Cardinal; access_plist: hid_t): hid_t; stdcall external 'hdf5dll3dr.dll' index 62;
Besser wäre es natürlich, wenn die dll auch eine Wide-Funktion hätte, damit du die gesamten Vorteile von Unicode nutzen kannst.

GPR-Man 30. Okt 2008 07:13

Re: DLL-interface Probleme in Delphi2009
 
:-D Besten Dank! Nachdem ich den Rest des Interface und des Programms entsprechend angepasst habe, läuft das Programm wieder.


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:54 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz