![]() |
string in array of char kopieren
Sorry für die wahrscheinlich "simple" Frage,
aber ich habe trotzt Forensuche nicht das gefunden was ich gesucht habe. Folgendes will ich machen ich habe ein array of char[0.1023] und einen String jetzt will ich die chars vom string in den array kopieren... Doch mit Stringoperationen bin ich nicht so vertraut (natürlich schon wie ein string aufgebaut inst (/0 terminiert oder mit Längenangabe etc..) Mir fehlt hier lediglich die dazugehörige Delphi-Funktion?! Danke euch! Gruß DM |
Re: string in array of char kopieren
|
Re: string in array of char kopieren
oder vielleicht so:
Delphi-Quellcode:
Gruß
var
s : string; sa: array[0..1023] of char; begin fillchar(sa,sizeof(sa),#0); s:=' beispieltext |'; move(s[1],sa[0],length(s)); showmessage(sa); end; K-H |
Re: string in array of char kopieren
ein String ist ja praktisch zusätzlich noch 0-terminiert
Delphi-Quellcode:
und falls der String mal leer ist, dann solte man besser noch die Exception verhindern (welche übrigens auch in p80286's Code auftreten würde)
var
s : string; sa: array[0..1023] of char; begin s := ' beispieltext |'; move(s[1], sa[0], length(s) + 1); showmessage(sa); end;
Delphi-Quellcode:
s := ' beispieltext |';
if s = '' then sa[0] := #0 else move(s[1], sa[0], length(s) + 1); showmessage(sa); |
Re: string in array of char kopieren
Dein Code ist mM keine Verbesserung und p80286's Code wird auch keine Exception auslösen, falls der String mal leer ist; denn length ist dann 0 und es wird nix verschoben. Was bei Euch beiden fehlt ist ein Test if length(s)<sizeof(sa)... (Die beliebten Bufferoverflows lassen grüßen).
|
Re: string in array of char kopieren
Da PChar zu Array of Char zuweisungskompatibel ist, erähne ich hier einfach nur mal
![]() |
Re: string in array of char kopieren
Zitat:
denn s[1] wird wohl die Exception auslösen, da dort auf ein Char zugegriffen wird, welches nicht existiert. |
Re: string in array of char kopieren
Zitat:
Zitat:
|
Re: string in array of char kopieren
Zitat:
In der Originalversion kracht es nicht! Versuch es einfach mal :angel2: |
Re: string in array of char kopieren
tja, beim debuggen sollte man halt gewisse optionen mal aktivieren (z.B. die Indexprüfung) :angel2:
array immer 0-terminiert und immer ohne exceptions
Delphi-Quellcode:
oder mal etwas effektiver:
var
s, s2: string; sa: array[0..1023] of char; begin s := ' beispieltext |'; s2 := Copy(s, 1, High(sa)); move(PChar(s2)^, @sa, (length(s2) + 1) * SizeOf(Char)); showmessage(sa); end;
Delphi-Quellcode:
var
s: string; sa: array[0..1023] of char; i: integer; begin s := ' beispieltext |'; i := Max(Length(s), High(sa)); move(PChar(s)^, sa, i * SizeOf(Char)); sa[i] := #0; showmessage(sa); end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:03 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