![]() |
Warum sieht Delphi einen dyn. Array of Char nicht als Zeichenkette an?
Also das erste Beispiel mit statischem Array of Char klappt. Ich kann es im Grunde hier und da fast wie ein String nutzen. Warum sperrt sich Delphi aber bei einem dynamischen Array of Char?
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
type Tx = array[0..3] of Char; var i: Integer; x: Tx; begin for i := Low(x) to High(x) do x[i] := Chr(65 + i); ShowMessage(x); end; procedure TForm1.Button2Click(Sender: TObject); type Tx = array of Char; var i: Integer; x: Tx; begin SetLength(x, 4); for i := Low(x) to High(x) do x[i] := Chr(65 + i); ShowMessage(x); //geht nicht end; |
AW: Warum sieht Delphi einen dyn. Array of Char nicht als Zeichenkette an?
Wenn du "x" auf String castest, dann gehts:
Delphi-Quellcode:
ShowMessage(String(x));
|
AW: Warum sieht Delphi einen dyn. Array of Char nicht als Zeichenkette an?
Hm, klappt, danke.
Allerdings hängt bei der Aktion noch ein fünftes Zeichen dran. Ich konnte es mit Trim beseitigen, weil es #8 war, aber kann man davon ausgehen, dass es immer #8 sein wird? |
AW: Warum sieht Delphi einen dyn. Array of Char nicht als Zeichenkette an?
Nein, das war Zufall. Am Besten #0 anhängen.
|
AW: Warum sieht Delphi einen dyn. Array of Char nicht als Zeichenkette an?
Für statische Char-Array, welche mit 0 indiziert sind, gibt es im Compiler einen impliziten Cast nach String, wobei das Array dann als PChar mit einer Maximallänge behandelt wird (String-Ende = #0 oder Array-Ende ... was halt zuerst kommt)
Bei statischen Arrays, welche nicht mit 0 beginnen, gibt es auch gerne Probleme. Oder du gibst die Arrays manuell z.B. an ![]() |
AW: Warum sieht Delphi einen dyn. Array of Char nicht als Zeichenkette an?
Zitat:
Delphi-Quellcode:
drin vor. (D7) das schein dann wohl eher ein Problem der neueren Versionen zu sein.
Satz: array [32..64] of char
Gruß K-H |
AW: Warum sieht Delphi einen dyn. Array of Char nicht als Zeichenkette an?
Kann auch sein, daß dieses Problem nur/vorwiegend bei Zuweisungen ala
Delphi-Quellcode:
auftritt.
Arr := S;
Ich hab halt nur noch in Erinnerung, daß es bei 0-indizierten Arrays insgesamt weniger Probleme gab. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:58 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