Thema: Delphi PChar ???

Einzelnen Beitrag anzeigen

jbg

Registriert seit: 12. Jun 2002
3.483 Beiträge
 
Delphi 10.1 Berlin Professional
 
#2

Re: PChar ???

  Alt 18. Okt 2007, 11:25
Um Gotteswillen.

Zitat von edeWelzheim:
in den knappen Beschreibungen, die ich habe, sieht alles ganz klar + einfach aus, wenngleich es
auch Widersprüche gibt
Das sind keine Widersprüche, sonder die Tatsache, dass ein PChar auf den selben Speicherbereich zeigen kann, wie ein String. Änderst du die Daten über den PChar, ändern sich automatisch auch die Daten des Strings. Das kann, wenn man nicht weiß, was man tut, gefährlich werden.

Zitat:
1)
//s:=Edit1.Text; pCh:=strPCopy(x,s); {->nicht ok; Müll hinten dran..?}
Lass mich raten. Der "Müll" steht hinter einem #0-Zeichen, also nicht im String, sondern einfach in den nicht benutzen Elementen des Arrays.

Zitat:
2)
{pCh:=strCat(pCh,pCh);} {ergibt 'ungültige Zeigeroperation' ?}
Das lasse ich jetzt mal unkommentiert.

Zitat:
3)
//das folgende tut auch nicht.. ?}
s:=inttoStr(StrLen(pCh));{StrPas(pCh);} Label1.Caption:=s;
Kann es sein, dass pCh ins Nirvana zeigt?


Zitat:
PS:
a) wird strAlloc überhaupt benötigt?
Das kommt darauf an, wie du an die Sache herangehst. Im Moment mischt du da kräftig durcheinander.
Zitat:
b) wie gesagt: eigentlich möchte ich nur Char/PChar aneinanderreihen (analog s:=s+'x');
PChars kann man nicht aneinanderreihen, da es Zeiger sind. Oder wie würdest du Zeiger aneinanderreihen? (außer vielleicht in einem Array)


Zitat:
pCh:='123';
Damit zeigt pCh auf den konstanten string '123', der insgesamt 4 Bytes enthält '123'#0. Wenn du nun versuchst da noch was anzuhängen, überschreibst du Speicher. Das ist auch als "Buffer Overflow" bekannt.



Mein Tipp: Schmeiß alles weg und probiere es ohne PChars nochmal.
  Mit Zitat antworten Zitat