Das reine Kopieren auf eine Schlag nützt ihm nichts, wenn er noch was dazwischen hängen will.
Delphi-Quellcode:
GetMem(Buffer, 1024);
try
// as long as we have not reached the end of the source stream
while (SrcStream.Position < SrcStream.Size) do
begin
// how much to read
if SrcStream.Size - SrcStream.Position > BlockSize then
Len := BlockSize
else
Len := SrcStream.Size - SrcStream.Position;
// read into the buffer
SrcStream.ReadBuffer(Buffer^, Len);
// encode the buffer
EncodeBuffer(Buffer^, Buffer^, len);
// write the buffer
DestStream.WriteBuffer(Buffer^, Len);
end;
finally
// clean up the buffer
FreeMem(Buffer);
end;
Buffer ist als Pointer deklariert. BlockSize ist eien Konstante, die angibt wie vile jewals gelesen werden soll. Ich habe sie mit 1024 initialisiert.
Das EncodeBuffer ist aus Hagen Reddmanns
DEC, dürfte dich erstmal nicht interessieren.