Thema: Delphi Zip-Tool

Einzelnen Beitrag anzeigen

Benutzerbild von emsländer
emsländer

Registriert seit: 21. Aug 2004
Ort: Lengerich
658 Beiträge
 
RAD-Studio 2009 Ent
 
#7

Re: Zip-Tool

  Alt 10. Feb 2005, 13:14
Zitat von CenBells:
Hi,

wo du doch D7 hast, frage ich mich, warum du nicht die unit ZLib verwendest, die mitgeliefert wird.
Da kannst du komfortabel daten aller art packen und entpacken. und wenn es nur um eine Datei geht ist es sehr einfach..

Lade die Datei in nen Stream und packe den. Anschließend kannst den Stream wegspeichern. Entpacken dann umgekehrt.
hier mal packen
Delphi-Quellcode:
//------------------------------------------------------------------------------
procedure CompressStream(inpStream, outStream: TStream);
var
  InpBuf, OutBuf: Pointer;
  InpBytes, OutBytes: Integer;
begin
  InpBuf := nil;
  OutBuf := nil;
  try
    GetMem(InpBuf, inpStream.Size);
    inpStream.Position := 0;
    InpBytes := inpStream.Read(InpBuf^, inpStream.Size);
    CompressBuf(InpBuf, InpBytes, OutBuf, OutBytes);
    outStream.Write(OutBuf^, OutBytes);
  finally
    if InpBuf <> nil then FreeMem(InpBuf);
    if OutBuf <> nil then FreeMem(OutBuf);
  end;
end;
Und hier Entpacken
Delphi-Quellcode:
procedure DecompressStream(inpStream, outStream: TStream);
var
  InpBuf, OutBuf: Pointer;
  OutBytes, sz: Integer;
begin
  InpBuf := nil;
  OutBuf := nil;
  sz := inpStream.Size - inpStream.Position;
  if sz > 0 then
    try
      GetMem(InpBuf, sz);
      inpStream.Read(InpBuf^, sz);
      DecompressBuf(InpBuf, sz, 0, OutBuf, OutBytes);
      outStream.Write(OutBuf^, OutBytes);
    finally
      if InpBuf <> nil then FreeMem(InpBuf);
      if OutBuf <> nil then FreeMem(OutBuf);
    end;
  outStream.Position := 0;
end;
Gruß
Ken

Hi,

mal eine Frage eines Nicht10JahreDelphiProfis:

wie mache ich aus diesen beiden Proceduren jeweils eine Funktion?

Zur Benutzung in etwa so:

stringvarible = zippen(rohtext);
stringvariabe = entzippen(gezippterText);


Gruss

EL


Narben am Körper sind ein Zeichen dafür, das man gelebt hat.
Narben auf der Seele sind ein Zeichen dafür, das man geliebt hat.
  Mit Zitat antworten Zitat