Witam dosc ciekawa procedure wskazujaca postep kopiowanego pliku i nawet dziala dosc fajnie:
procedure Copy(CopyFrom,CopyTo : String);
var
Source, Dest : TFileStream;
toCopy : Longint;
FBytesCopied,FProcessed : Integer;
const
ChunkSize : Integer = 9500;
begin
FBytesCopied:=0;
try
source := TFileStream.Create( CopyFrom, fmOpenRead or fmShareDenyWrite );
try
Dest := TFileStream.Create( CopyTo, fmCreate );
try
repeat
if (Source.Size-Source.Position) < ChunkSize then
toCopy := Source.Size-Source.Position
else
toCopy := ChunkSize;
Dest.CopyFrom( source, toCopy );
Inc( FBytesCopied, toCopy );
if Source.Size > 0 then
FProcessed := Round(FBytesCopied*100/Source.Size)
else
FProcessed := 0;
Form1.Gauge1.Progress:=FProcessed;
Form1.Label1.Caption:=IntToStr(FProcessed);
Application.ProcessMessages;
until Dest.Size = Source.Size;
finally
end;
finally
Dest.Free;
end;
finally
Source.Free;
end;
end;
Ale teraz chcialbym zeby to samo dzialalo nie na pliku kopiowanym lokalnie tylko na pliku sciaganym, np przez komponet IDFTP.get. Mozna to jakos wykombinowac ? Bo tutaj moge ustalic jakby porcje kopiowanego pliku i znajac ta porcje oraz wielkosc pliku bez problemu zrobie progress bara; natomiast czy da sie ustalic porcje sciaganego pliku ? Bo jezeli tak to jestem w domu.