Hi ihrs!
Kann mir mal jemand helfen diesen Code so umzuschreiben, dass ich damit Strings gepackt bekomme???
Mit Pointer hab ichs echt überhauptnicht!
Delphi-Quellcode:
uses
ZLib;
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;
Ich hab folgendes Probiert: (Nur um zu zeigen, dass ich es wenigstens versucht hab
)
Delphi-Quellcode:
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;
[Edit]Zwei Fehler schon mal selber gefunden
Es läuft!!![/Edit]
Vielen Dank!