![]() |
Array of Char --> String: Zusätzliches $ wird angehangen
Hi,
ich habe folgenden Source, um einen String mit der LHA5Unit zu dekomprimieren:
Delphi-Quellcode:
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:
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. Florian |
Re: Array of Char --> String: Zusätzliches $ wird angehan
Was steht den in tmcontent2?
|
Re: Array of Char --> String: Zusätzliches $ wird angehan
Am Ende, bevor ich nach String typecaste?
|
Re: Array of Char --> String: Zusätzliches $ wird angehan
Schau dir das ganze mal mit dem Evaluator durch, wann genau das $ dazukommt.
|
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:
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).
SetLengh (MyString, Length (MyString) - 1);
|
Re: Array of Char --> String: Zusätzliches $ wird angehan
StrPas ist mittlerweile unnötig, weil PChars von Compiler implizit umgewandelt werden.
|
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. |
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 ...
|
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'... |
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 20:46 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