Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   CompressBuf, DeCompressBuf unter D2010? (https://www.delphipraxis.net/198075-compressbuf-decompressbuf-unter-d2010.html)

sko1 2. Okt 2018 12:32

CompressBuf, DeCompressBuf unter D2010?
 
Hallo,

folgendes lässt sich nicht compilieren:

Code:
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;
beide CompressBuf und DeCompressBuf sind, trotz eingebundener ZLib unbekannt!

Hat jemand einen Tip für mich?

Ciao
Stefan

p80286 2. Okt 2018 12:56

AW: CompressBuf, DeCompressBuf unter D2010?
 
Ich kenne die Zlib nicht aber ich vermute, daß sowohl InpBuf als auch OutBuf ein ^Array of Byte sein sollten.
Ausserdem solltest Du
Delphi-Quellcode:
length(Input)*sizeof(char)
falls Input nicht explizit ein Ansi- oder Shortstring ist.

Gruß
K-H

ChrisE 2. Okt 2018 13:02

AW: CompressBuf, DeCompressBuf unter D2010?
 
Hallo,

laut DocWiki von Emba gab es die Methoden auch in der VCL von Delphi 2010 nicht...
http://docwiki.embarcadero.com/VCL/2010/en/ZLib
Das wären da eher die ZCompress...-Methoden

Auch in Tokyo 10.2 sieht es da nicht anders aus (nur mehr Inhalt in der System.ZLib ).

Gruß, Chris

sko1 2. Okt 2018 14:46

AW: CompressBuf, DeCompressBuf unter D2010?
 
Danke für die Hinweise, mit ZCompressStr / ZDecompressStr funktioniert es wie erwartet...

Ciao
Stefan

KodeZwerg 2. Okt 2018 19:40

AW: CompressBuf, DeCompressBuf unter D2010?
 
In Tokyo finde ich zumindest beide Begriffe in dieser Datei "IdZLib.pas"


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