AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

string in array of char kopieren

Ein Thema von DelphiManiac · begonnen am 9. Jul 2009 · letzter Beitrag vom 10. Jul 2009
Antwort Antwort
Seite 1 von 3  1 23   
DelphiManiac

Registriert seit: 5. Dez 2005
742 Beiträge
 
#1

string in array of char kopieren

  Alt 9. Jul 2009, 12:46
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
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.657 Beiträge
 
Delphi 10.4 Sydney
 
#2

Re: string in array of char kopieren

  Alt 9. Jul 2009, 13:06
Hallo,

schau mal hier

Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#3

Re: string in array of char kopieren

  Alt 9. Jul 2009, 13:10
oder vielleicht so:
Delphi-Quellcode:
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;
Gruß
K-H
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
39.652 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: string in array of char kopieren

  Alt 9. Jul 2009, 13:26
ein String ist ja praktisch zusätzlich noch 0-terminiert
Delphi-Quellcode:
var
  s : string;
  sa: array[0..1023] of char;
begin
  s := ' beispieltext |';
  move(s[1], sa[0], length(s) + 1);
  showmessage(sa);
end;
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)
Delphi-Quellcode:
s := ' beispieltext |';
if s = 'then sa[0] := #0
else move(s[1], sa[0], length(s) + 1);
showmessage(sa);
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
Delphi-Tage 2005-2014
  Mit Zitat antworten Zitat
gammatester

Registriert seit: 6. Dez 2005
999 Beiträge
 
#5

Re: string in array of char kopieren

  Alt 9. Jul 2009, 13:49
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).
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#6

Re: string in array of char kopieren

  Alt 9. Jul 2009, 14:10
Da PChar zu Array of Char zuweisungskompatibel ist, erähne ich hier einfach nur mal Delphi-Referenz durchsuchenStrPLCopy()
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
39.652 Beiträge
 
Delphi 11 Alexandria
 
#7

Re: string in array of char kopieren

  Alt 9. Jul 2009, 14:12
Zitat von gammatester:
... und p80286's Code wird auch keine Exception auslösen
versuch es einfach mal

denn s[1] wird wohl die Exception auslösen, da dort auf ein Char zugegriffen wird, welches nicht existiert.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
Delphi-Tage 2005-2014
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#8

Re: string in array of char kopieren

  Alt 9. Jul 2009, 14:13
Zitat von himitsu:
versuch es einfach mal :angel2:
Dito.

Zitat von himitsu:
denn s[1] wird wohl die Exception auslösen, da dort auf ein Char zugegriffen wird, welches nicht existiert.
Nur wenn die Bereichsprüfung aktiviert ist gibt es eine ERangeCheckError Exception und sonst nicht. Und man bedenke, dass diese Prüfung standardmässig aus ist.
  Mit Zitat antworten Zitat
gammatester

Registriert seit: 6. Dez 2005
999 Beiträge
 
#9

Re: string in array of char kopieren

  Alt 9. Jul 2009, 14:34
Zitat von himitsu:
Zitat von gammatester:
... und p80286's Code wird auch keine Exception auslösen
versuch es einfach mal

denn s[1] wird wohl die Exception auslösen, da dort auf ein Char zugegriffen wird, welches nicht existiert.
Ich habe es ausprobiert Mag sein, daß es bei Dir kracht. Aber nur in Deiner verschlimmbesserten Version, bei der wegen length(s)+1 wirklich auf s[1] zu gegriffen wird.

In der Originalversion kracht es nicht! Versuch es einfach mal
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
39.652 Beiträge
 
Delphi 11 Alexandria
 
#10

Re: string in array of char kopieren

  Alt 9. Jul 2009, 18:37
tja, beim debuggen sollte man halt gewisse optionen mal aktivieren (z.B. die Indexprüfung)

array immer 0-terminiert und immer ohne exceptions
Delphi-Quellcode:
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;
oder mal etwas effektiver:
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;
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
Delphi-Tage 2005-2014
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23   

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:33 Uhr.
Powered by vBulletin® Copyright ©2000 - 2022, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf