![]() |
Delphi-Version: XE2
Convert PWideChart to WideString
Hallo liebe Gemeinde,
da ich eine DLL schreibe die Informationen zwischen 2 Programmen austauschen muss habe ich die Datentypen PWideChar und WideString fest vorgegeben. Als Parameter bekomme ich PChar und muss diesen als WideString weiterreichen. Dabei scheint es Konvertierungsfehler zu geben, aktuell habe ich leider nichts zu diesem Problem gefunden. Wie Konvertiere ich einen PChar korrekt zu einem WideString? Vielen Dank.
Delphi-Quellcode:
function svnrevision(Path: PChar): Integer; stdcall;
var svn: ISubWCRev; begin svn := CoSubWCRev.Create; try svn.GetWCInfo(WideString(Path), True, True); Result := StrToInt(svn.revision); finally svn := nil; end; end; |
AW: Convert PWideChart to WideString
Ich habe jetzt nicht so genau hingeschaut, aber vielleicht liegt es daran, dass Du die Konstante 'Path' verwendest statt des übergebenen Parameters?
|
AW: Convert PWideChart to WideString
Zitat:
Hatte zwischendurch den Pfad fest eingetippt, daher das Überbleibsel. |
AW: Convert PWideChart to WideString
Bin nun folgenden Weg gegangen
Delphi-Quellcode:
svn.GetWCInfo(string(ShortString(Path)), True, True);
sicher nicht der eleganteste, aber es funktioniert und ich kenne keine andere Lösung. |
AW: Convert PWideChart to WideString
Eigentlich sollte deine ursprüngliche Lösung auch funktionieren, aber den Umweg über ShortString würde ich mir ersparen (wenn der überhaupt korrekt ist).
Delphi-Quellcode:
sollte es tun.
svn.GetWCInfo(string(Path), True, True);
|
AW: Convert PWideChart to WideString
Hi,
es passt vielleicht nicht 100% zum Problem, aber ich würde bei solchen Funktionen die in einer DLL per Export arbeiten und auch bei der Deklaration in den Programmen auf "veränderliche Typen" wie PChar verzichten. Lieber die expliziten Typen wie in diesem Fall PAnsiChar oder PWideChar. PChar kann ja je nach Entwicklungsumgebung was anderes sein. Gruß, Chris |
AW: Convert PWideChart to WideString
Zitat:
Danke für den Hinweis, aber ohne ShortString geht es bei mir nicht. |
AW: Convert PWideChart to WideString
Zitat:
Delphi-Quellcode:
Gruß, Chris
function svnrevision(Path: PAnsiChar): Integer; stdcall;
var svn: ISubWCRev; begin svn := CoSubWCRev.Create; try svn.GetWCInfo(WideString(AnsiString(Path)), True, True); Result := StrToInt(svn.revision); finally svn := nil; end; end; |
AW: Convert PWideChart to WideString
Die Schnittstelle der Fremdsoftware verwendet nach Dokumentation angeblich ShortString also einen String mit fester Größe von 255. Könnte sein, dass meine TypeCast daher klappt und bisher zu keinen Verlusten geführt hat.
Leider muss ich sagen, dass die Kollegen mit der Dokumentation nicht auf dem Laufenden sind. Aber mit diesem Problem bin ich ja nicht alleine. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:11 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz