Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi string in array of Char umwandeln (https://www.delphipraxis.net/29186-string-array-char-umwandeln.html)

zappel 5. Sep 2004 12:01


string in array of Char umwandeln
 
Hi!

Ich habe einen string: 'ABC'+IntToStr(i)+'DEF' den ich aber im Format array of Char benötige.
Wie kann ich das am Elegantesten umformatieren?

Gruß

Aenogym 5. Sep 2004 12:05

Re: string in array of Char umwandeln
 
hi zappel,

verusch einfach mal folgendes ;) :

Delphi-Quellcode:
pchar('ABC'+IntToStr(i)+'DEF');
Aenogym

zappel 5. Sep 2004 12:08

Re: string in array of Char umwandeln
 
Dann kommt aber die Fehlermeldung "Inkompatible Typen: 'Array' und 'PAnsiChar'"!

Nothine 5. Sep 2004 12:18

Re: string in array of Char umwandeln
 
Delphi-Quellcode:
var AoC: array of Char;
    S: string;
begin
  MachIrgendwasMit(S);
  string(AoC) := PChar(S);
so zum beispiel

SirThornberry 5. Sep 2004 12:18

Re: string in array of Char umwandeln
 
dann bau dir einfach eine schleife. bei mir funktioniert der direkte cast(
Delphi-Quellcode:
var L: PChar;
begin
  L := PChar('ABC'+IntToStr(5)+'DEF');
) übrigens ohne probleme

zappel 6. Sep 2004 09:14

Re: string in array of Char umwandeln
 
Nein, das hilft auch nicht. Ich brauche den string in einem array of Char!

Delphi-Quellcode:
procedure xy;
var
  NID: TNotifyIconData;
  k: integer;
  s: string;
  t: PChar;
  AoC: array[1..30] of Char;
begin
  s:='ABC'+IntToStr(k)+'DEF';
  NID.szTip:=s; // Fehlermeldung: "Inkompatible Typen: 'Array' und 'String'"
  t:=PChar('ABC'+IntToStr(k)+'DEF');
  NID.szTip:=t; // Fehlermeldung: "Inkompatible Typen: 'Array' und 'PAnsiChar'"
end;

himitsu 6. Sep 2004 09:42

Re: string in array of Char umwandeln
 
es gibt auch irgendwie 'ne Möglichkeit die Daten direkt zu kopieren, aber mir fällt das nichtmehr ein (vergeß das ständig) -.-

aber notfalls kannst du das ja auch selber machen:
Delphi-Quellcode:
{s in AoC kopieren}
For i := 1 to 30 do
  If i < Length(s) Then AoC[i] := s[i] Else AoC[i] := #00;

mytar 6. Sep 2004 09:43

Re: string in array of Char umwandeln
 
Ich denke du findest in der OH sicherlich eine Standardmethode die dir das macht.
Vielleicht in SysUtils oder StrUtils. Erstmal nachschauen, sonst
musst du das über eine Schleife machen (die Std-Methode macht das sicherlich auch
auf diese Weise).

greetz

Sprint 6. Sep 2004 09:43

Re: string in array of Char umwandeln
 
Zitat:

Zitat von zappel
Wie kann ich das am Elegantesten umformatieren?

Unbedingt die Hilfe zu StrCopy und StrLCopy lesen!!!
Delphi-Quellcode:
var
  MyCharArry: array[0..30] of Char;
  MyStr: String;
begin

  MyStr := 'Hello World!';

  StrCopy(MyCharArry, PChar(MyStr));
  // oder
  StrLCopy(MyCharArry, PChar(MyStr), Length(MyCharArry));

end;

zappel 6. Sep 2004 09:48

Re: string in array of Char umwandeln
 
Danke! Hab's gerade gefunden! Mit StrCopy() hat's funktioniert!

mytar 6. Sep 2004 09:50

Re: string in array of Char umwandeln
 
Wenn du die Länge von MyStr nicht immer gleich ist, dann

Delphi-Quellcode:
var
  MyCharArry: TCharDynArray;
  MyStr: String;
begin

  MyStr := 'Hello World!';
  SetLength(MyCharArry, Length(MyStr));

  StrCopy(MyCharArry, PChar(MyStr));

end;
P.S.: Ich hoffe jetzt das StrCopy und StrLCopy dyn. Arrays akzeptieren.

himitsu 6. Sep 2004 09:52

Re: string in array of Char umwandeln
 
Jo, hatte es auch gerade wieder gefunden.

Also es ist in SysUtils und dort wird es auch so ähnlich gemacht (nagut, dort halt nur in ASM)

Ach ja, szTip hat keine Länge von 30 Zeichen:
Delphi-Quellcode:
  _NOTIFYICONDATAA = record
    ...
    szTip: array [0..63] of AnsiChar;
  end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:32 Uhr.

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