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 --> String: Zusätzliches $ wird angehangen ... (https://www.delphipraxis.net/83390-array-char-string-zusaetzliches-%24-wird-angehangen.html)

Zacherl 1. Jan 2007 20:29


Array of Char --> String: Zusätzliches $ wird angehangen
 
Hi,

ich habe folgenden Source, um einen String mit der LHA5Unit zu dekomprimieren:
Delphi-Quellcode:
var
  instream,
  outstream: tmemorystream;
  tmcontent2: array of char;
  i: integer;
begin
    inStream := TMemoryStream.Create;
    outStream := TMemoryStream.Create;
    //try
      inStream.Write(TmContent[1], length(TmContent));
      inStream.Position := 0;
      LHAExpand(inStream, outStream);
      outStream.Position := 0;
      setLength(TmContent2, outStream.Size);
      outStream.Read(TmContent2[0], outStream.Size);
      TmContent := String(PChar(TmContent2));
      setLength(TmContent2, 0);
    //finally
      inStream.Free;
      outStream.Free;
    //end;
    tmcontent := copy(tmcontent, 1, length(tmcontent));
end.
War nur ein Test, deshalb ist der Source nicht so schön formatiert, sorry. Das Problem ist folgendes: Am Ende steht in TmContent zwar der dekomprimierte String, allerdings wird ein $ angehangen. Wenn ich mit Copy das letzte Zeichen entferne, wird das $ zwar entfernt, aber auch das letzte Zeichen :wall:

Florian

mkinzler 1. Jan 2007 20:31

Re: Array of Char --> String: Zusätzliches $ wird angehan
 
Was steht den in tmcontent2?

Zacherl 1. Jan 2007 20:54

Re: Array of Char --> String: Zusätzliches $ wird angehan
 
Am Ende, bevor ich nach String typecaste?

3_of_8 1. Jan 2007 20:56

Re: Array of Char --> String: Zusätzliches $ wird angehan
 
Schau dir das ganze mal mit dem Evaluator durch, wann genau das $ dazukommt.

alzaimar 1. Jan 2007 20:57

Re: Array of Char --> String: Zusätzliches $ wird angehan
 
Um das letzte Zeichen zu entfernen, ist es viel schneller, wenn man die Länge dekrementiert:
Delphi-Quellcode:
SetLengh (MyString, Length (MyString) - 1);
Soweit ich das weiss, ist es besser, man verwendet StrPas, um einen PChar in einen String zu konvertieren, kann mich aber irren (Delphi ist grad nicht an).

3_of_8 1. Jan 2007 20:59

Re: Array of Char --> String: Zusätzliches $ wird angehan
 
StrPas ist mittlerweile unnötig, weil PChars von Compiler implizit umgewandelt werden.

Zacherl 1. Jan 2007 21:02

Re: Array of Char --> String: Zusätzliches $ wird angehan
 
Also bei StrPas bekomme ich den Fehler: inkompatible Typen Array und Char.

Im TmContent2 steht das $ auch schon drinnen. Als letztes Zeichen. Ich versuche es einfach mal daraus zu entfernen, indem ich die Länge decrementiere.

Zacherl 1. Jan 2007 21:05

Re: Array of Char --> String: Zusätzliches $ wird angehan
 
Komischerweise geht das beides nicht. Sowohl wenn ich vor dem Typecast nach String die Länge vom TmContent2 dekrementiere, also auch, wenn ich nach dem Typecast TmContent dekrementiere, fehlt das $ und aber auch das letzte Zeichen ...

alzaimar 1. Jan 2007 21:25

Re: Array of Char --> String: Zusätzliches $ wird angehan
 
Florian,

verwende doch einfach mal ein TStringStream. Dort hinein liest du erstmal den dekomprimierten Stream, und prüfst dann die Eigenschaft 'DataString'...

Zacherl 1. Jan 2007 21:30

Re: Array of Char --> String: Zusätzliches $ wird angehan
 
Ich würde gerne ohne die Classes Unit auskommen. Meine TMemoryStreams sind selbst definierte Typen, von denen der Fehler allerdings mit 100%er Sicherheit nicht herkommt ...


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