Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Library: Algorithmen (https://www.delphipraxis.net/28-library-algorithmen/)
-   -   Delphi ZLib - String komprimieren dekomprimieren (https://www.delphipraxis.net/50273-zlib-string-komprimieren-dekomprimieren.html)

himitsu 22. Jul 2005 19:25


ZLib - String komprimieren dekomprimieren
 
Dieses bezieht sich auf folgenden Beitrag:
Code-Library => Library: Object-Pascal / Delphi-Language => String komprimieren dekomprimieren (von SleepyMaster)


Ich wollte nur mal vorschlagen, dass es "sinnlos" ist, wenn zuerst der Input-String in einen extra Buffer kopiert wird.

Es geht ja auch ohne :zwinker: (erspart rund 33% RAM und ein kleinwenig Rechenzeit)


Delphi-Quellcode:
Uses ZLib;

Function CompressString(Input: String): String;
  Var Buffer: Pointer;
    BufSize: Integer;

  Begin
    Buffer := nil;
    Try
      CompressBuf(Input[1], Length(Input), Buffer, BufSize);
      SetLength(Result, BufSize);
      Move(Buffer^, Result[1], BufSize);
    Finally
      If Buffer <> nil Then FreeMem(Buffer);
    End;
  End;

Function DeCompressString(Input: String): String;
  Var Buffer: Pointer;
    BufSize: Integer;

  Begin
    Buffer := nil;
    Try
      DeCompressBuf(Input[1], Length(Input), 0, Buffer, BufSize);
      SetLength(Result, BufSize);
      Move(Buffer^, Result[1], BufSize);
    Finally
      If Buffer <> nil Then FreeMem(Buffer);
    End;
  End;

Und wer möchte kann auch noch statt
Delphi-Quellcode:
      SetLength(Result, BufSize);
      Move(Buffer^, Result[1], BufSize);
dieses verwenden
Delphi-Quellcode:
      SetString(Result, Buffer, BufSize);

SubData 22. Jul 2005 19:37

Re: ZLib - String komprimieren dekomprimieren
 
Ich hab gerade heute morgen noch ne ZLIB gefunden, die gleich Strings komprimieren kann
=> http://www.dellapasqua.com/delphizlib/

Die Funktion dazu lautet ZCompressStr


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