Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.139 Beiträge
 
Delphi 12 Athens
 
#1

ZLib - String komprimieren dekomprimieren

  Alt 22. Jul 2005, 19:25
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 (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
      SetString(Result, Buffer, BufSize);
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat