![]() |
Unterschied zwischen String und PChar
Hi,
ich würde gerne wissen, was genau der Unterschied zwischen einem Pascal String und einem PChar (von Windows bzw. C++) ist und wieso diese nicht (meistens zumindest, z.B. bei DLLs) kompatibel zueinander sind ? Ein String müsste doch eigentlich genauso ein Pointer auf einen Speicher mit den Zeichen sein, oder ? cu, stefan2005 |
Re: Unterschied zwischen String und PChar
string (eigentlich nur ein Alias von AnsiString bzw. ShortString) ist ein Compiler-Feature von Delphi. Der besitzt einen Speichermanager und einen Referenzzähler. Man kann mit einem Delphi-String auch einen direkten Vergleich machen, also "if string1 = strin2 then...".
PChar ist offiziell nur ein Zeiger auf ein Char. Delphi verwendet hier auch einige Tricks, wenn ein Stringliteral schon zur Kompilierzeit existiert, aber generell besitzt ein PChar nicht die Features eines Delphi-Strings. Soweit ich weiß zählt Delphi hier keine Referenzen, und auch ein Vergleich ist nur mithilfe einer Funktion möglich, "if pchar1 = pchar2 then..." wird nicht funktionieren. |
Re: Unterschied zwischen String und PChar
Ein PChar ist nur ein Zeiger auf einen Char. Von dieser Stelle an wird solange weiter gelesen, bis man auf #0 (nicht als Zeichen, sondern als Wert) stößt. Dort ist der PChar zuende. Da ein PChar immer mit einer solchen Null beendet wird, spricht man auch von null-terminierten Zeichenketten.
Die Short-Strings von Delphi haben hingegen im ersten Byte einen Zähler, der die Länge angibt. MfG Binärbaum |
Re: Unterschied zwischen String und PChar
Zitat:
Zitat:
Zitat:
Normalerweise benutzt man also String anstatt PChar. Da, wo PChar Pflicht ist, stolpert man ggf. früh genug. :mrgreen: |
Re: Unterschied zwischen String und PChar
Hallo,
Zitat:
Entschuldige: aber was für ein Stuss! Rainer |
Re: Unterschied zwischen String und PChar
das eine halt '#0', das andere chr(0);
|
Re: Unterschied zwischen String und PChar
Bei der Frage, frage ich gleichmal mit:
Gibts eigendlich einen PChar für WideStrings, um sie z.B. In einer DLL zu exportieren? Oder wie macht man das? Bye |
Re: Unterschied zwischen String und PChar
Zitat:
|
Re: Unterschied zwischen String und PChar
taucht auch als PWCHAR auf ... z.B. im MSDN ^^
|
Re: Unterschied zwischen String und PChar
Detailierte Infos zu den ganzen String-Typen (abgesehen vom WideString) findest du in meinem String-Tutorial auf
![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:22 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