Witam
Mam w obiekcie TStringList listę plików, do wrzucenia na serwer FTP (metoda Put komponentu IdFTP z pakietu INDY) i mam problem z wysłaniem wielu plików.
Robiąc to w pętli, musiałbym dać jakiś czas przerwy do następnej iteracji, aby pozwolić wrzucić plik, np. 300 ms. Oczywiście Sleep(300) nic nie da, bo ta funkcja zatrzymuje program na określony czas, a nie o to chodzi.
Próbuję więc z TTimer. Mam powiedzmy w buttonie "Wyślij" taki kod:
IdFTP.Host := edtFtpHost.Text;
IdFTP.Username := edtFtpLogin.Text;
IdFTP.Password := edtFtpHaslo.Text;
IdFTP.Passive := cbFtpPasywne.Checked;
IdFTP.Connect; //(true, 20000);
ListaPlikow := TStringList.Create;
ListaPlikow.Add('c:\x.txt');
ListaPlikow.Add('c:\y.txt');
if IdFTP.Connected then
begin
IdFTP.ChangeDir('www');
Timer1.Enabled := True;
end;
I na szybko napisany kod dla Timera (Interval = 500, Enabled = False). W OnTimer:
// X to zmienna globalna z domyślną wartością 0
if IdFTP.Connected then
begin
Inc(X);
if X > 2 then
begin
Timer1.Enabled := False;
Showmessage('Wyslano');
Exit;
end else IdFTP.Put(ListaPlikow[X-1], ExtractFileName(ListaPlikow[X-1]), True);
end else
begin
ShowMessage('Niepołączony');
Timer1.Enabled := False;
exit;
end;
Ale niestety dostaję komunikat "Nie połączony". Jak powinienem to zrobić?
Pozdrawiam