Mam mały kłopot z pętlą pobierającą pliki, otóż poniższy kod co prawda działa poprawnie, ale przy próbie przesunięcia okna aplikacji, program się przywiesza i nie bardzo wiem, co mógłbym zrobić, aby pętla się wykonywała, a sam program nie przywieszał, kiedy pętla jest wykonywana.
fileList:=TStringList.Create;
try
FileList.LoadFromFile('data\files.txt');
try
j := FileList.Count-1;
ProgressBar1.Max := round(j);
ProgressBar1.Position := 0;
i:=0;
repeat
if isCancel = true then
break
else
i:=i+1;
perc := (i / j)*100;
ProgressBar1.Position := i;
Form1.Refresh;
Label2.Caption := 'Ogólny postęp: '+ IntToStr(ceil(perc)) + '%';
Download(FileList.Strings[i]); { * Poniżej kod funkcji * }
until (i = j) or (isCancel = true);
FileList.Free;
except on e:Exception do Application.MessageBox(PChar(e.Message),'Application Error',MB_OK);
end;
except on e:Exception do Application.MessageBox(PChar(e.Message),'Application Error',MB_OK);
end;
A tak pobieram plik...
function Download(item_file:string):string;
begin
with TDownloadUrl.Create(nil) do
try
url := 'http://mojadomena.pl/pliki/'+item_file;
filename := ExtractFilePath(Application.ExeName)+item_file;
Form1.Label1.Caption := 'Pobieram plik: '+ item_file;
Form1.Refresh;
ExecuteTarget(nil);
finally
free;
end;