![]() |
PChar to String & zurück - Zeichen geht verloren
Hallihallo liebe Delphigemeinde
ein kleines (aber nerviges) Problem mit PChar und Strings.. Ich habe eine Funktion in eine .dll ausgelagert, das einbinden und aufrufen und so weiter funkzioniert auch. Allerdings, da die Funktionen ja ohne die Borlandbiliotheken keine Strings als Parameter übergeben können, habe ich PChar's verwendet. Nun Übergebe ich der Funktion einen PChar in dem "2+3" steht. Das kommt auch an. In der Funktio habe ich dann eine Variable vom Typ Sring erstellt und mittels
Delphi-Quellcode:
Den PChar wieder in einen String verwandelt.
String_var := Pchar_var;
Nun habe ich testweise einfach den String wieder in einen PChar konvertiert via
Delphi-Quellcode:
und zurückgeben lassen.. Allerdings kommt jetzt im Mutterprogramm nur noch der String "2+" zurück, d.h. das letzte Zeichen ist verlorengegangen..
result := PChar(String_var);
// Result ist natürlich vom Typ PChar.. Gesamt besteht meine Funkion aus:
Delphi-Quellcode:
Wahrscheinlich ist das ein wirklich dämlicher Fehler.. aber er macht mich verrückt.. plz help!
function aufreg(meinParameter: PChar): PChar;
var meinString: String; begin meinString := meinParameter; result := PChar(meinString); end; //Aufgerufen mit -> PChar('2+3') //Raus kommt -> 2+ MfG BliZZarD |
Re: PChar to String & zurück - Zeichen geht verloren
Füg dem String mal ein #0 hinzu und übergib den Pointer darauf, also @Str[1].
|
Re: PChar to String & zurück - Zeichen geht verloren
Das #0 am Ende des Strings ist immer da, soweit ich mich erinnern kann.
|
Re: PChar to String & zurück - Zeichen geht verloren
@Zacherl: Das hab ich jetzt nicht ganz kapiert.. Sry :-(
Würdest du mir ein kleines Codebeispiel spendieren? |
Re: PChar to String & zurück - Zeichen geht verloren
Wo wird den abgeschnitten? Kommt das richtige in der Dll an?
|
Re: PChar to String & zurück - Zeichen geht verloren
@mkinzler: ja in der dll kommts richtig an, wenn ich das hier mache:
Delphi-Quellcode:
Dann kommt ds richtige raus.. also muss es an den zwei Type-casts liegen..function aufreg(meinParameter: PChar): PChar; var meinString: String; begin result := meinParameter; end; |
Re: PChar to String & zurück - Zeichen geht verloren
Du gibts nen Pointer auf eine Lokale Variable zurück. Da ist es total zufällig was zurückgeliefert wird.
|
Re: PChar to String & zurück - Zeichen geht verloren
Dann versuch mal:
Delphi-Quellcode:
result := PChar(meinString+#0);
|
Re: PChar to String & zurück - Zeichen geht verloren
Und so?
Delphi-Quellcode:
function aufreg(meinParameter: PChar): PChar;
var meinString: String; begin meinString := StrPas(meinParameter); result := PChar(meinString); end; |
Re: PChar to String & zurück - Zeichen geht verloren
Nein versuchs so nicht. Funktionen geben keine PChars zurück. Nimm nen String oder packs als Parameter rein und lass die Aufrufende Funktion den Speicher allokieren.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:37 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