Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Array of char nach String kopieren (https://www.delphipraxis.net/103926-array-char-nach-string-kopieren.html)

Oracle 24. Nov 2007 12:58


Array of char nach String kopieren
 
Ich habe von einer Funktion eine Zeichenkette erhalten und in ein Array of Char geschrieben.
Jetzt würde ich gerne die ersten vier Zeichen dieses Array of Char in einen String kopieren. Welche Funktion muss ich dafür nehmen?
Bisher bin ich kläglich gescheitert.

Vielen Dank euch schon mal im Vorraus :-D

mkinzler 24. Nov 2007 13:03

Re: Array of char nach String kopieren
 
Delphi-Quellcode:
s := CharArray;
setLength( s, 4);

Oracle 24. Nov 2007 13:30

Re: Array of char nach String kopieren
 
Wenn ich das mache bekomme ich folgenden Fehler in der Zeile s := CharArray;

E2010 Inkompatible Typen: 'string' und 'dynamic array'.

Apollonius 24. Nov 2007 13:35

Re: Array of char nach String kopieren
 
Sag doch gleich, dass du ein dynamisches Array meinst! Da ist das ein bisschen komplizierter. Ich würde so vorgehen:
Delphi-Quellcode:
SetLength(s, 4);
Move(CharArray[0], s[1], SizeOf(Char)*4);

Oracle 24. Nov 2007 14:18

Re: Array of char nach String kopieren
 
Ich dummerle. Das hätt ich ruhig noch dazu sagen können.
Aber super das war grad der entscheidene Hinweis. Jetzt funktionierts und ich spring im Dreieck :)
Danke

Zacherl 24. Nov 2007 14:34

Re: Array of char nach String kopieren
 
Oder so:

Delphi-Quellcode:
SetLength(Str, Length(DynCharArray));
CopyMemory(@Str[1], @DynCharArray[low(DynCharArray)], Length(DynCharArray));
Wenn du mit dem dynamischen Array noch arbeiten willst. SizeOf Char ist doch 1, da ein Char doch ein Byte ist?

Gruß

Apollonius 24. Nov 2007 14:37

Re: Array of char nach String kopieren
 
Zacherl, das ist doch ziemlich genau das selbe, was ich geschrieben habe. CopyMemory ruft intern sowieso Move auf.
Ich weiß, dass SizeOf(Char) normalerweise Eins ist, aber was machst du in einer Unicode-Umgebung?

Hawkeye219 24. Nov 2007 14:42

Re: Array of char nach String kopieren
 
Hallo,

eine einzige Zeile genügt, um den kompletten Inhalt des Arrays oder nur einen Teil dieses Arrays zu kopieren:

Delphi-Quellcode:
var
  A : array of char;
  s : string;
begin
  // Array-Inhalt komplett in String übernehmen
  s := string(A);

  // maximal 4 Zeichen des Arrays übernehmen
  s := Copy(string(A), 1, 4);
end;
Gruß Hawkeye

Oracle 24. Nov 2007 16:02

Re: Array of char nach String kopieren
 
Na das ist ja noch besser :) Vielen Dank für den Hinweis.

Zacherl 24. Nov 2007 17:36

Re: Array of char nach String kopieren
 
@Apollonius: Ja, aber wenn du nur Move aufrufst, verschiebst du ja den Speicher, wobei du mit CopyMemory mit dem Array auch noch wieterarbeiten kannst.


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:48 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