Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi noob frage: array [0..259] of char in string un umgekehrt (https://www.delphipraxis.net/98683-noob-frage-array-%5B0-259%5D-char-string-un-umgekehrt.html)

Weazy 30. Aug 2007 22:32


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;

3_of_8 30. Aug 2007 22:34

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.

Rastaman 30. Aug 2007 23:16

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?

TBx 31. Aug 2007 00:00

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.

3_of_8 31. Aug 2007 00:51

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.

Hansa 31. Aug 2007 01:19

Re: noob frage: array [0..259] of char in string un umgeke
 
Zitat:

Zitat von Weazy
..array [0..259] of char... doch es klappt irgendwie nicht so ganz...

Wie üblich wurde die genaue Fehlermeldung unterschlagen und dann die Frage gestellt. 8) Wundert mich allerdings, dass keiner bemerkt hat, dass der Wert nicht im Bereich von 0..255 liegt, sondern darüber hinausgeht.

Sunlight7 31. Aug 2007 02:19

Re: noob frage: array [0..259] of char in string un umgeke
 
Zitat:

Zitat von Hansa
Wundert mich allerdings, dass keiner bemerkt hat, dass der Wert nicht im Bereich von 0..255 liegt, sondern darüber hinausgeht.

Mich nicht, weil vielleicht MAX_PATH (260 Zeichen) von der Komponente verwendet wird.



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;

Hansa 31. Aug 2007 02:25

Re: noob frage: array [0..259] of char in string un umgeke
 
Dann wundert Dich das wohl auch kaum :

Zitat:

Zitat von Weazy
for i:=0 to 259 do
result[i]:=chr[i];


Sunlight7 31. Aug 2007 02:43

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];

Hansa 31. Aug 2007 02:47

Re: noob frage: array [0..259] of char in string un umgeke
 
Welches Zeichen ergibt denn :
Delphi-Quellcode:
ch := chr (259);
Macht das Sinn ? :mrgreen:


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:11 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz