![]() |
String komprimieren dekomprimieren
Delphi-Quellcode:
uses
ZLib; function CompressString(input:string):string; var InpBuf, OutBuf: Pointer; OutBytes: Integer; begin InpBuf := nil; OutBuf := nil; try GetMem(InpBuf, Length(input)); Move(input[1], InpBuf^, Length(input)); CompressBuf(InpBuf, Length(input), OutBuf, OutBytes); SetLength(result,OutBytes); Move(OutBuf^, result[1], OutBytes); finally if InpBuf <> nil then FreeMem(InpBuf); if OutBuf <> nil then FreeMem(OutBuf); end; end; function DeCompressString(input:string):string; var InpBuf, OutBuf: Pointer; OutBytes: Integer; begin InpBuf := nil; OutBuf := nil; try GetMem(InpBuf, Length(input)); Move(input[1], InpBuf^, Length(input)); DeCompressBuf(InpBuf, Length(input),0,OutBuf, OutBytes); SetLength(result,OutBytes); Move(OutBuf^, result[1], OutBytes); finally if InpBuf <> nil then FreeMem(InpBuf); if OutBuf <> nil then FreeMem(OutBuf); end; end; |
Frage zu String komprimieren dekomprimieren
hallo,
ich habe dazu noch eine frage. Ich habe nun einen MemoryStream, in dem prinzipiell auch nur text steht. Ich dachte dann, hmm, schreibe ich den stream in einen string. Das klappt leider nicht, hier der code, den ich verwende
Delphi-Quellcode:
Weiß wer, was ich falsch mache und kann mich korrigieren?
LStream.Position := 0;
SetLength(LString, LStream.Size); LStream.Write(LString, LStream.Size);// hier gibt es den fehler Zugriffsverletzung... LCompressed := CompressString(LString); LStream.Clear; Gruß Ken |
Re: String komprimieren dekomprimieren
Delphi-Quellcode:
Damit söllte es gehen!
LStream.Position := 0;
SetLength(LString, LStream.Size); LStream.Write(LString[1], LStream.Size);// hier gibt es den fehler Zugriffsverletzung... LCompressed := CompressString(LString); LStream.Clear; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:33 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 by Thomas Breitkreuz