Mir ist eben aufgefallen das length nicht immer die "richtige" Länge des Strings zurückgibt.
Beispiel:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11:
| var test: string; len: integer; begin test := 'schorsch'; len := length(test); test := test+#0; len := length(test); trim(test); len := length(test); end; |
Da ein String nur bis zur ersten absoluten Null gültig ist, müsste auch beim zweiten Length '8' heraus kommen. Ich kann mir das nur so erklären:
Bei einer Addition eines Zeichens an den String wird das Längenbyte in der Klasse String verändert, was zur folge hat das Length, das dieses Byte abfragt, anstelle die Zeichen zu zählen, den verfälschten Wert zurückgibt.
Führt man nun 'trim' über dem String aus wird das Längenbyte des strings an die tatsächliche Länge der Zeichenfolge angepasst und ein 'richtiges' Ergebnis wird angezeigt.
Liege ich mit meinen Vermutungen richtig?
Gruss
Michael
Moderiert von
Tino: Delphi-Tags hinzugefügt & Topic verschoben.