![]() |
noob frage: array [0..259] of char in string un umgekehrt
Eine komponente die ich benutze hat ein property mit dem typ array [0..259] of char. Dieses property möchte ich nun schreiben und lesen. Hier ist mein versuch, doch es klappt irgendwie nicht so ganz...
Delphi-Quellcode:
function CharToStr(chr: array [0..259] of char):string;
var i:integer; begin for i:=0 to 259 do result[i]:=chr[i]; end; function StrToChar(str:string):array [0..259] of char; var i:integer; begin for i:=0 to 259 do result[i]:=str[i]; end; |
Re: noob frage: array [0..259] of char in string un umgeke
Bei CharToStr erst noch ein setlength(result, length(chr));
Aber eigentlich müsste das auch als direkte Zuweisung funktionieren, also Result:=chr; und umgekehrt. |
Re: noob frage: array [0..259] of char in string un umgeke
Array of char is doch das Gleiche wie String oder? :shock:
@3_of_8: SetLength bei vorgegebener Größe von 260? Is das nich nur für dynamische Arrays? |
Re: noob frage: array [0..259] of char in string un umgeke
Du bekommst schon alleine deshalb Probleme, weil die Indizierung von Strings bei 1 beginnt und nicht wie von Dir gecoded bei 0.
Gruß onlinekater BTW: Was ist das für eine Komponente? Es wird ja sicherlich seinen Grund haben, dass ein solches array of char verwendet wird. Sollte es womöglich passieren können, dass ein Element dieses Arrays #0 ist? Dann wäre mit erreichen dieses Elementes der String automatisch zu Ende. |
Re: noob frage: array [0..259] of char in string un umgeke
@Rastaman: Sein Rückgabetyp ist ein String, kein String[260]. Und er kann nicht einfach in einen String mit noch nicht zugewiesenem Speicher schreiben, weil ein Leerstring nämlich standardmäßig auf nil zeigt. Und ein array of Char ist nicht ganz das gleiche wie ein String. Es ist im Speicher fast das gleiche, aber die Compiler Magic schlägt beim String mehr zu und außerdem hängt an Strings immer noch ein #0 dran.
|
Re: noob frage: array [0..259] of char in string un umgeke
Zitat:
|
Re: noob frage: array [0..259] of char in string un umgeke
Zitat:
Delphi-Quellcode:
type
TChr=array[0..259] of char; function CharToStr(chr: TChr):string; begin Result:=Chr; end; function StrToChar(str:string):TChr; begin StrPLCopy(Result, Str, 260); end; |
Re: noob frage: array [0..259] of char in string un umgeke
Dann wundert Dich das wohl auch kaum :
Zitat:
|
Re: noob frage: array [0..259] of char in string un umgeke
Das wurde 1. schon angesprochen, 2. von mir nicht weiter verwendet und wär 3. ne (umständliche) Möglichkeit, wenn wie bereits gesagt SetLength verwendet und der kleine Fehler korrigiert würde...
Delphi-Quellcode:
for i:=0 to 259 do
result[i+1]:=chr[i]; |
Re: noob frage: array [0..259] of char in string un umgeke
Welches Zeichen ergibt denn :
Delphi-Quellcode:
Macht das Sinn ? :mrgreen:
ch := chr (259);
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:09 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