Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi String in Char umwandeln (https://www.delphipraxis.net/116599-string-char-umwandeln.html)

Lucifer 2. Jul 2008 21:25


String in Char umwandeln
 
Hallo



Also das ist nicht das erste mal das man dies fragt und ich habe auch gesucht.
Nur brauche ich für die UnRar ja einen Filename welcher ein Array of Char ist.

Ich habe eine Listbox auf der Form und die einzelnen Zeilen werden ja über lb.Items[] angesprochen.
Das Problem ist dass es sich dabei um Strings handelt.

Nun wie soll ich es am besten anstellen:

Ich möchte auf die Listbox Items clicken und danach die Datei auspacken welche ich ausgewählt habe.
Aber wie gesagt es ist ein Array of Char und Items sind Strings

DeddyH 2. Jul 2008 21:27

Re: String in Char umwandeln
 
Mal versucht, den String in einen PChar zu casten?

Lucifer 2. Jul 2008 21:32

Re: String in Char umwandeln
 
sagt mir inkompatibel Array und PAnsiChar

DeddyH 2. Jul 2008 21:34

Re: String in Char umwandeln
 
Wie muss das denn aussehen? Zeig doch mal die Signatur der aufgerufenen Funktion.

p80286 3. Jul 2008 15:17

Re: String in Char umwandeln
 
Hallo Lucifer,

versuch mal folgendes:

Delphi-Quellcode:
var
  car: packed array [1..255] of char;
  s1 : string;
  s2 : string[255];
...
  car:=s1;
oder ...
  car:=s2
oder ...
  move(s2[1],car[1],length(s2);
je nachdem mit welcher Delphi-Version du arbeitest sollte da etwas funktionierendes dabei sein.
Bei den shortStrings hat bei mir soetwas auch meistens geklappt.

Mit den AnsiStrings habe ich soetwas noch nicht ausprobiert aber für Dateinamen reichen die 255 Zeichen wohl auch aus.

Gruß
K-H

Lucifer 3. Jul 2008 16:43

Re: String in Char umwandeln
 
funktioniert auch nicht:

Delphi-Quellcode:
RARHeaderData = packed record
    ArcName: packed array[0..Pred(260)] of Char;
    FileName: packed array[0..Pred(260)] of Char;
    Flags: UINT;
    PackSize: UINT;
    UnpSize: UINT;
    HostOS: UINT;
    FileCRC: UINT;
    FileTime: UINT;
    UnpVer: UINT;
    Method: UINT;
    FileAttr: UINT;
    CmtBuf: PChar;
    CmtBufSize: UINT;
    CmtSize: UINT;
    CmtState: UINT;
so sieht das eigentlich aus
und ich benötige die Filename

aber wie gesagt was in einer Lisbtox steht ist String

DeddyH 3. Jul 2008 16:50

Re: String in Char umwandeln
 
Mit StrPCopy sollte es gehen. Kleines Beispiel:
Delphi-Quellcode:
type TMyRec = packed record
  sTest: packed array[0..Pred(260)] of Char;
end;

procedure TForm1.FormCreate(Sender: TObject);
var MyRec: TMyRec;
begin
  FillChar(MyRec, SizeOf(MyRec),#0);
  StrPCopy(MyRec.sTest,'Tach auch');
  ShowMessage(MyRec.sTest);
end;

Lucifer 3. Jul 2008 17:04

Re: String in Char umwandeln
 
tut mir leid ich habs versucht doch trotzdem will es nicht

Delphi-Quellcode:

  FillChar(MyRec, SizeOf(MyRec),#0);
  StrPCopy(MyRec.sTest,'test');

  RarHeader.FileName:=MyRec.sTest;
DCC Fehler E2008 Inkompatible Typen

DeddyH 3. Jul 2008 17:09

Re: String in Char umwandeln
 
Du musst ja auch mit StrPCopy den String in das Feld des Records kopieren. Mein Beispiel hatte nichts mit Deinem Record zu tun.

Lucifer 3. Jul 2008 17:58

Re: String in Char umwandeln
 
Vielen Dank es hat geklappt um den String einzutragen.
Ich danke dir wikrlich Vielmals


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:38 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-2025 by Thomas Breitkreuz