неужто к сожалению никто не работал с етими компонентами ? или может я неправильно пишу что...
прошу за остальние косяки не косающийся ФТП не бить 
| Код | procedure TForm1.inout; var i:integer; conn:bool; arh,lsdirfile:string; label en,m2,m3,m4; begin if param.ftpworking<>'1' then exit; form2.changeicon(5,''); arh:= arhivdir+GetTimedDir+FormatDateTime('HHMM',time)+'\' ; lsdirfile:= ExtractFileDir(Application.ExeName)+'\'+lsfile; Timer1.Enabled:=false; SpeedButton1.Enabled:=false; //Changing settings for FTP component logit('Ставлю параметры ФТП клиента'); ProgressBar3.Position:=1; FtpClient1.HostName:=ip; FtpClient1.Port:='21'; FtpClient1.Passive:=CheckBox5.Checked; FtpClient1.Username:=logn; FtpClient1.Password:=password; conn:=false; try logit('Подключаюсь к '+ip); conn:=not(FtpClient1.Connect);
logit('Подключился'); except; conn:=true; logit('Не удалось подключиться к хосту '+ip+', пропускаем этот раз...'); end; if conn then goto en; // End of FTP's settings logit('Начало цикла передачи и приёма'); // group out #1 ProgressBar3.Position:=2; Application.ProcessMessages; if not CheckBox1.Checked then goto m2; scan(checkslash(dirlocout1)); logit('Група №1: Передача...');
//FtpClient1.HostDirName:=dirout1; //FtpClient1.HostFileName:= dirout1; if ts.Count>0 then ProgressBar2.Max:=ts.Count-1 else ProgressBar2.Max:= 0 ; ProgressBar2.Position:=0; Application.ProcessMessages; for i:=0 to ts.Count-1 do begin try logit('Ложу файл: "'+ts.Strings[i]+'"'); // FormatDateTime try ForceDirectories(arh); except; end; FtpClient1.HostFileName:=dirout1+'/'+GetNameFile(ts.Strings[i]); FtpClient1.LocalFileName:=ts.Strings[i] ; FtpClient1.Put; FtpClient1.RestPut; // IdFTP1.Put(ts.Strings[i],GetNameFile(ts.Strings[i]),false); sleep(1); logit('Положил, удаляю его с локальной директории'); CopyFile(pchar(ts.Strings[i]),pchar(arh+GetNameFile(ts.Strings[i])),false) ; // if deletefile(ts.Strings[i]) then logit('Удалил с локали '+GetNameFile(ts.Strings[i])); Application.ProcessMessages; except; logit('Група №1: Ошибка файловой операции над '+GetNameFile(ts.Strings[i])+' ...'); end; ProgressBar2.Position:=i; Application.ProcessMessages; end; logit('Передал все файли по групе №1');
m2: // group out #2 ProgressBar3.Position:=3; Application.ProcessMessages; if not CheckBox2.Checked then goto m3; scan(checkslash(dirlocout2)); logit('Група №2: Передача...'); //IdFTP1.ChangeDir(dirout2); //FtpClient1.HostDirName:=dirout2; if ts.Count>0 then ProgressBar2.Max:=ts.Count-1 else ProgressBar2.Max:= 0 ; ProgressBar2.Position:=0; Application.ProcessMessages; for i:=0 to ts.Count-1 do begin try try ForceDirectories(arh); except; end; logit('Ложу файл: "'+ts.Strings[i]+'"'); FtpClient1.HostFileName:=dirout2+'/'+GetNameFile(ts.Strings[i]); FtpClient1.LocalFileName:=ts.Strings[i] ; FtpClient1.Put;
//IdFTP1.Put(ts.Strings[i],GetNameFile(ts.Strings[i]),false); logit('Положил, удаляю его с локальной директории'); sleep(1); CopyFile(pchar(ts.Strings[i]),pchar(arh+GetNameFile(ts.Strings[i])),false); if deletefile(ts.Strings[i]) then logit('Удалил с локали '+GetNameFile(ts.Strings[i])); Application.ProcessMessages;
except; logit('Група №2: Ошибка файловой операции над '+GetNameFile(ts.Strings[i])+' ...');
end; ProgressBar2.Position:=i; Application.ProcessMessages; end; logit('Передал все файли по групе №2');
/// group in # 3 m3: ProgressBar3.Position:=4; Application.ProcessMessages; if not CheckBox3.Checked then goto m4; logit('Група №3: Приём...'); //FtpClient1.HostDirName:=dirin1;
FtpClient1.HostFileName:=dirin1; FtpClient1.LocalFileName:=lsdirfile; FtpClient1.Ls; //IdFTP1.ChangeDir(dirin1); ts.Clear; ts.LoadFromFile(lsdirfile); //FtpClient1.Pwd; //showmessage(ts.text);
if ts.Count>0 then ProgressBar2.Max:=ts.Count-1 else ProgressBar2.Max:= 0 ; ProgressBar2.Position:=0; Application.ProcessMessages; for i:=0 to ts.Count-1 do begin try logit('Принимаю файл: "'+ts.Strings[i]+'"'); if fileexists( checkslash(dirlocin1)+ts.Strings[i] ) then MoveFile(pchar(checkslash(dirlocin1)+ts.Strings[i]),pchar(checkslash(dirlocin1)+ts.Strings[i]+'.old_ftploader')); FtpClient1.HostFileName := dirin1+'/'+ts.Strings[i]; FtpClient1.LocalFileName := checkslash(dirlocin1)+ts.Strings[i]; if FtpClient1.Get then BEGIN logit('Принял, удаляю его с фтп'); sleep(1); FtpClient1.HostFileName := dirin1+'/'+ts.Strings[i]; if FtpClient1.Dele then logit('Удалил с фтп '+GetNameFile(ts.Strings[i])) else logit('Неудалось удалить с фтп '+GetNameFile(ts.Strings[i])); end else logit('Не принял файл'); Application.ProcessMessages; except; logit('Група №3: Ошибка файловой операции над '+GetNameFile(ts.Strings[i])+' ...');
end; ProgressBar2.Position:=i; Application.ProcessMessages; end; logit('Принял все файли по групе №3');
/// group in #4 m4: ProgressBar3.Position:=5; Application.ProcessMessages; if not CheckBox4.Checked then goto en; logit('Група №4: Приём...');
FtpClient1.HostFileName:=dirin2; FtpClient1.LocalFileName:=lsdirfile; FtpClient1.Ls;
ts.Clear; ts.LoadFromFile(lsdirfile);
if ts.Count>0 then ProgressBar2.Max:=ts.Count-1 else ProgressBar2.Max:= 0 ; ProgressBar2.Position:=0; Application.ProcessMessages; for i:=0 to ts.Count-1 do begin try logit('Принимаю файл: "'+ts.Strings[i]+'"'); if fileexists( checkslash(dirlocin2)+ts.Strings[i] ) then MoveFile(pchar(checkslash(dirlocin2)+ts.Strings[i]),pchar(checkslash(dirlocin2)+ts.Strings[i]+'.old_ftploader')); FtpClient1.HostFileName := dirin2+'/'+ts.Strings[i]; FtpClient1.LocalFileName := checkslash(dirlocin2)+ts.Strings[i]; if FtpClient1.Get then BEGIN logit('Принял, удаляю его с фтп'); sleep(1); FtpClient1.HostFileName := dirin2+'/'+ts.Strings[i]; if FtpClient1.Dele then logit('Удалил с фтп '+GetNameFile(ts.Strings[i])) else logit('Неудалось удалить с фтп '+GetNameFile(ts.Strings[i])); end else logit('Не принял файл'); Application.ProcessMessages; except; logit('Група №4: Ошибка файловой операции над '+GetNameFile(ts.Strings[i])+' ...');
end; ProgressBar2.Position:=i; Application.ProcessMessages; end; logit('Принял все файли по групе №4');
en: ProgressBar2.Position:=ProgressBar2.Max; ProgressBar3.Position:=6; Application.ProcessMessages; /// FTP close
FtpClient1.Quit; try memo1.Lines.SaveToFile(ExtractFileDir(lsdirfile)+'program.log'); deletefile(lsdirfile); except;end; logit('Конец сеанса работы с FTP'); /// End procedure InOut Timer1.Enabled:=true; form2.changeicon(4,''); SpeedButton1.Enabled:=true; end;
|
|