Skocz do zawartości

[delphi]Pobieranie plików w pętli z progress barem


gienek

Polecane posty

Cześć.

Mam dwie string listy. Jedna zawiera linki plików do pobrania, druga nazwy plików.

Chcę pobrać owe pliki w jednej pętli, wyświetlając postęp za każdym razem.

Pętla jest już przygotowana:

 

for d:=0 to liczba_pobran-1 do
begin
{kod do pobrania plików}
end;

 

liczba_pobran - liczba wpisów w tstring list.

 

W jaki sposób, tj. czym pobrać pliki? HTTPGet jest dla mnie idealny - z miejsca działa progressbar. Tyle że każde pobieranie jest w osobnym wątku. Teraz mam 4 pliki, ale mogę mieć 20 albo i 100. Nie wiem jak dynamicznie tworzyć te komponenty, to pewnie rozwiązałoby problem.

 

Próbowałem idHTTP - zawiesza formę.

Próbowałem URLDownloadtoFile - też zawiesza formę.

W jaki sposób to rozwiązać?

Zajrzałem do Kompendium programisty i znalazłem przykład pobierania za pomocą WinInet. Chyba działa :)

Link do komentarza
Udostępnij na innych stronach

Do pobierania polecam Synapse: http://4programmers....pakietu_Synapse albo SimpleTCP jeżeli chcesz mieć większą kontrolę, ale obsługę protokołu musisz sobie wtedy napisać samodzielnie, bo na stronie jest tylko krótki przykład pobrania samej strony google w formie tekstu: http://piechnat.pl/a.../simpletcp.html a w ogóle polecam do pobierania użyć jednej TStringListy, w jej itemach dodajesz linki, robisz to przez SL.AddObject('http://link.jakis.net', ObjLink); gdzie jako ObjLink to TObjLink który będzie typem jaki polecam sobie stworzyć i ten typ będzie przechowywał poza linkiem nazwę pliku i inne w swoich polach. W ten sposób lista może trzymać dodatkowe informacje, no chyba, że da się nazwę pliku wyodrębnić z linku takim prostym kodem (kopiuje tekst po ostatnim "/")

function ExtractFileNameFromLink(Link : string) : string;
var
 I : integer;
begin
 for I := Length(Link) downto 1 do
 begin
if Copy(Link, I, 1) = '/' then
begin
 	Delete(Link, 1, I);
end;
Result := Link;
 end;
end;

Pozdrawiam: olesio

Link do komentarza
Udostępnij na innych stronach

Zarchiwizowany

Ten temat jest archiwizowany i nie można dodawać nowych odpowiedzi.

×
×
  • Utwórz nowe...