[ brenas @ 07.06.2007. 23:48 ] @
Imam dva TFileStream-a. Iz jednog kopiram u drugi funkcijom CopyFrom( Source,Count).
Velicinu Stream uzimam sa "prvistrim.Size;". Kako mogu da dobijem povratnu informaciju koliko je bajta trenutno(do sada) kopirano. Hocu sve to da povezem sa ProgressBar-om ili Gauge-om pami treba taj "Progress".
[ Milan Milosevic @ 08.06.2007. 06:28 ] @
Neznam dali te informacije mozez da dobijes direktno, ali sigorno mozes da kopiras deo po deo podataka. Na kraju svakog dela upises progres prebacivanja, ako me razumes.
Rcimo Size podelis na sto dela
VelicinaDela:=FileStream.Size;
VelicinaDela:=VelicinaDela div 100;
For i:= 1 to 100
CopyFrom( Source,VelicinaDela)
Odprilke tako nekako.
[ brenas @ 08.06.2007. 12:35 ] @
Tacno! Hvala ti!
[ brenas @ 09.06.2007. 23:49 ] @
Ako nekome nekad zatreba...


OnClick(nekog button-a);
var
ulaz,izlaz:TFileStream;
izlazvelicina:integer;
try
fajl:=ExtractFilePath(Application.ExeName)+'Podaci.fdb';
ulaz:=TFileStream.Create(fajl,fmOpenRead);
izlaz:=TFileStream.Create('Podaci.sin',fmCreate);
izlaz.Position:=0;
ulaz.Position:=0;
izlazvelicina:=izlaz.Size;
ProgressBar1.Visible:=True;
ProgressBar1.Max:=ulaz.Size ;
while ulaz.Size>izlazvelicina do
begin
ProgressBar1.StepBy(100);
if (ulaz.Size-izlazvelicina)>100 then
izlaz.CopyFrom(ulaz,100)
else
izlaz.CopyFrom(ulaz,ulaz.Size-izlazvelicina );
izlazvelicina:=izlaz.Size;
end;
finally
FreeAndNil(ulaz);
FreeAndNil(izlaz);
ProgressBar1.Position:=0;
ProgressBar1.Visible:=False;
end;

Naravno ovo treba 'malo' i optimizovati!