![]() |
PChar als string übergeben?
Hallo ihr,
ich habe folgendes Problem. Und zwar habe ich eine Funktion die einen string annimmt. Allerdings kann ich dieser Funktion keinem PChar übergeben:
Delphi-Quellcode:
MfG
procedure Proc1(S : PChar);
begin Proc2(S); end; procedure Proc2(S : string); begin [...] end; xZise |
Re: PChar als string übergeben?
Ein PChar ist nichts anderes als ein Pointer. Ein String hingegen ist in Delphi etwas komplexer (Längenangabe, Referenzzählung etc.).
Wenn du nur einen PChar (Pointer auf Chars) hast und einen String benötigst musst du die Chars eben in einen String schreiben (sofern Delphi da nicht schon automatisch etwas convertiert). Das kannst du zum einen in einer Schleife machen oder mit dem Befehl move. An was genau scheiterst du dabei? |
Re: PChar als string übergeben?
Naja die Methode Proc2 weigert sich einen PChar anzunehmen. Und ich war/bin mir nicht sicher, wie man das am elegantesten macht. Ich meine von string zu PChar ist es einfach PChar(....) fertig ;)
MfG xZise |
Re: PChar als string übergeben?
Hallo,
einfach so:
Delphi-Quellcode:
Ciao Chris
procedure Proc1(S : PChar);
begin Proc2(StrPas(S)); end; procedure Proc2(S : string); begin [...] end; |
Re: PChar als string übergeben?
oder
Delphi-Quellcode:
Proc2(String(PChar));
|
Re: PChar als string übergeben?
Zitat:
Transferleistung bitte! ;) Sherlock |
Re: PChar als string übergeben?
Übrigens es hätte sowas doch funktioniert ;) Er hat nicht dabei rumgemeckert, sondern, dass ich zwei PChars miteinander verknüpfen wollte.
Wie lässt sich das den am besten regeln? MfG xZise |
Re: PChar als string übergeben?
Da gibt es kein Patentrezept. Das Problem ist, dass du Speicher reservieren und dementsprechend auch wieder freigeben musst. Wenn das ganze nur eine Routine lang halten muss, kannst du String(pc1) + String(pc2) verwenden.
|
Re: PChar als string übergeben?
ich hatte mich schon gewundert.
von PChar nach String macht die CompilerMagic ja automatisch, nur andersrum geht's natürlich nicht.
Delphi-Quellcode:
aber wenn du mit einem String anfängst, dann könnte man da auch wieder die CompilerMagic ausnutzen und
STRING := String(PCHAR) + String(PCHAR);
Delphi-Quellcode:
rein logisch geht dieses auch,
STRING := String(PCHAR) + PCHAR;
Delphi-Quellcode:
aber da man nicht beeinflussen kann, wie der interne temporäte String verwaltet wird, ist natürlich nicht sichergestellt, wie lange der Ergebnis-PChar, auf diesen temporären String, gültig ist/bleibt.
PCHAR := PChar(String(PCHAR) + PCHAR);
|
Re: PChar als string übergeben?
Hehe, also ich ha be sowas gebastelt (was im Allgemeinen ja eures ist):
Delphi-Quellcode:
MfG
var
s : string; begin s := MyPChar1; s := s + MyPChar2; end; xZise |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:57 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