Registriert seit: 21. Aug 2004
Ort: Lengerich
658 Beiträge
RAD-Studio 2009 Ent
|
Re: Zip-Tool
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.
|
|
Zitat
|