![]() |
2 PChar´s vergleichen
Delphi-Quellcode:
Wenn ich also a und b vergleiche, heisst das, es werden eigentlich die Speicheraddressen zum Auswertung gebracht...Habe ich das richtig verstanden ?
procedure TForm1.Button1Click(Sender: TObject);
var a, b : PChar; begin caption := edit1.Text[1]+ ' '+edit1.Text[2]; a := @edit1.Text[1]; b := @edit1.Text[2]; Memo1.Lines.Add('a = '+a^+' '+inttostr(Cardinal(Addr(a^)))+' '+inttostr(Cardinal(a))); Memo1.Lines.Add('b = '+b^+' '+inttostr(Cardinal(b))); if a<b then Memo1.Lines.Add('a<b is true') else if a>b then Memo1.Lines.Add('a>b is true') else Memo1.Lines.Add('a=b is true'); end; |
Re: 2 PChar´s vergleichen
hast du.
du wuerdest somit identitaet statt gleichheit testen. in c wuerde man strcmp() auf die beiden zeiger anwenden. (pchars sind ja zeiger auf speicher, wo die eigentlichen zeichenketten liegen). |
Re: 2 PChar´s vergleichen
Bist du sicher, dass sich das:
Delphi-Quellcode:
ausführen läßt, ohne dass du zuvor Speicher für die PChar Variablen a und b angefordert hast?
a := @edit1.Text[1];
b := @edit1.Text[2]; |
Re: 2 PChar´s vergleichen
100% sicher, denn denn Speicher ist schon da, ich weise es nur zu.
|
Re: 2 PChar´s vergleichen
ein pchar ist nur ein zeiger. man kann ihn auf vorhandenen speicher zeigen lassen oder auf frisch angeforderten.
wer das wesen der pchars verstehen will, sollte sich unbedingt mit zeigern und den internen ablaeufen bei speichergeschichten beschaeftigen. eine portion C hilft auch. |
Re: 2 PChar´s vergleichen
die Aussage
Zitat:
TEdit.Text bzw TControl.GetText() gibt lediglich einen temporären String zurück... es ist also eine Frage der Zeit, bis der Pointer ins nichts zeigt.... |
Re: 2 PChar´s vergleichen
Nein, da liegst du falsch.
Ich bin mir sicher, denn in diesem trivialem Beispiel ist Edit1.Text immer NICHT leer... |
Re: 2 PChar´s vergleichen
man kann aber davon ausgehen, dass fuer die zeit der ereignismethode sich nichts aendert...
hast aber recht, die strings koennen kommentarlos verschwinden und schon hat man lustige fehler. edit: "leer" ist was anderes als "woanders"... |
Re: 2 PChar´s vergleichen
Zitat:
|
Re: 2 PChar´s vergleichen
Ich frage mich die ganze Zeit schon, wieso du nicht einfach anstatt a>b zu schreiben, a^>b^ schreibst.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:47 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-2025 by Thomas Breitkreuz