Entwickler-Ecke
Sonstiges (Delphi) - PChar mit Delphi2009
hanshermann - Fr 18.09.09 18:01
Titel: PChar mit Delphi2009
Der folgende Code funktioniert under Delphi5 einwandfrei.
Unter Delphi2009 kommt der String in s nicht in der procedure an.
Delphi-Quelltext
1: 2: 3: 4: 5:
| procedure swe_set_ephe_path(path : PChar) stdcall; far; external 'swedll32.dll' Name '_swe_set_ephe_path@4';
s := GetCurrentDir + '\ephe'; swe_set_ephe_path(PChar(s)); |
Es hängt sicher mit der anderen Pointer-Behandlung von Strings zusammen.
Was muss man undter Delphi2009 ändern??
Hanshermann
Moderiert von
Gausi: Topic aus Programmierwerkzeuge verschoben am Fr 18.09.2009 um 18:06
Moderiert von
Gausi: Delphi-Tags hinzugefügt
Gausi - Fr 18.09.09 18:06
Hallo und :welcome: in der Entwickler-Ecke,
Wenn die dll einen AnsiChar erwartet (also 1 Byte pro Zeichen), dann muss man unter D2009 PAnsiChar verwenden. Theoretisch sollte es so funktionieren:
Delphi-Quelltext
1: 2: 3: 4: 5:
| procedure swe_set_ephe_path(path : PAnsiChar) stdcall; far; external 'swedll32.dll' Name '_swe_set_ephe_path@4';
s := GetCurrentDir + '\ephe'; swe_set_ephe_path(PAnsiChar(s)); |
Es kann aber gut sein, dass die dll dann auch noch an anderen Stellen Probleme macht. ;-)
hanshermann - Sa 19.09.09 09:44
Danke! Die Idee war gut, doch es funkt nicht. Ich hab die Pointer durch AnsiString ersetzt .- dann ging's!!
Ich weiss nicht warum.
Delphi-Quelltext
1: 2: 3: 4:
| procedure swe_set_ephe_path(path : AnsiString) stdcall; far; external 'swedll32.dll' Name '_swe_set_ephe_path@4'; s := GetCurrentDir + '\ephe'; swe_set_ephe_path(s); |
LG
Hans
Moderiert von
Gausi: Delphi-Tags hinzugefügt
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!