Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.03.06;
Скачать: CL | DM;

Вниз

закачка на FTP файлов в потоке   Найти похожие ветки 

 
integerr   (2004-12-27 19:03) [0]

закачиваю файл на FTP (IdFTP) в потоке, но когда видергнуть шнур из сетевой карти то получаєтся облом хоть и потом появитса связь. Нужно штоб програма продолжала питатса закачать пока незакачаєт все указаниє файлы, подскажите как ?


 
Piter ©   (2004-12-27 22:01) [1]

повторить процесс посылки, пока не удастся полностью передать файл.


 
integerr   (2004-12-28 10:39) [2]

вот мой код
procedure TForm1.start;
var
sr:TSearchRec;
i:word;
FtpUploat:TThread;
r:integer;
begin
ListBox2.Clear;
ListBox1.Clear;
      MadeList;
      if FindFirst(Label1.Caption+"\*.*",faArchive,sr)=0 then
         repeat
         if not find(sr.Name,sr.Size) then ListBox1.Items.Add(sr.Name);
          until FindNext(sr) <> 0;
         FindClose(sr);
         if ListBox1.Count > 0  then
           begin
             mage_log;
             SpeedButton1.Enabled:=true;
             {while ListBox1.Items.Count <> -1 do
               begin
               if not ftp.Connected then break;
               if download(ListBox1.Items[0]) then ListBox1.Items.Delete(0);
               end;  }
             for i:=ListBox1.Items.Count-1 downto 0 do
              begin
             endPtok:=0;
             FtpUploat:=PLoad.create(false,host.Text,port.Text,username.Text,pass.Text,Label1.Caption+"\"+ListBox1.Items[i],ListBox1. Items[i],path.Text);
             FtpUploat.FreeOnTerminate:=true;
             while endPtok=0 do pause(1);
             if endPtok=3 then exit;
             if endPtok =2 then ListBox1.Items.Delete(i);
             end;
           end;
    // end
     // else
      ftp.Abort;
      ftp.Quit;
      ftp.Disconnect;
      if  ListBox1.Items.Count<0 then Application.Terminate else Exception.Create("");
      //Close;
end;

Function TForm1.find(name: string; siz: integer):boolean;
var
i:word;
faund:boolean;
begin
  if ftp.DirectoryListing.Count > 0 then
     begin
       faund:=false;
       for I:=ftp.DirectoryListing.Count-1 downto 0 do
           if (name=ftp.DirectoryListing[i].FileName) and (siz=ftp.DirectoryListing[i].Size) then
               faund:=true;
     end else faund:=false;
Result:=faund;
end;

unit potok;

interface

uses
 Classes,FTPsend,idftp,IdLogEvent,IdFTPCommon, IdFTPList,SysUtils,unit1;

type
 PLoad = class(TThread)

 Phost,Pport,Puser,Ppass,PFullname,Pname,PftpDir:string;

   private
   { Private declarations }
 protected
   S:string;
   procedure Execute; override;

 public
 constructor create(CreateSuspennded:boolean;Lhost,Lport,Luser,Lpass,LFullname,Lname,LftpDir:string);
   end;

implementation

uses IdTCPConnection,blcksock;

constructor PLoad.create(CreateSuspennded: boolean; Lhost, Lport, Luser,
 Lpass, LFullname, Lname,LftpDir: string);
begin
inherited create(CreateSuspennded);
Phost:=Lhost;
Pport:=Lport;
Puser:=Luser;
Ppass:=Lpass;
PFullname:=LFullname;
Pname:=Lname;
PftpDir:=LftpDir;
///PIdLogEvent:=LIdLogEvent;
end;

procedure PLoad.Execute;
var
res:integer;
begin
 { Place thread code here }
res:=1;
with TFTPSend.Create do  try
   Username:=Puser;
   Password:=Ppass;
   TargetHost:=Phost;
   TargetPort:=Pport;
   if not Login then exit;
//delete file, before sending
FTPCommand("DELE " + PftpDir+"/"+Pname);
DirectFileName := PFullname;
DirectFile:=true;
if StoreFile(PftpDir+"/"+Pname,false)=true then res:=2;
 Logout;
Except res:=3  end;
Form1.endPtok:=res;
//Terminate;
Free;
end;
end.


 
Piter ©   (2004-12-28 11:33) [3]

Лично мне разбираться в чужом коде влом.

Я так и не понял - в чем конкретно проблема?


 
integerr   (2004-12-28 13:48) [4]

проблема в том єсли связь упала и потом поднялась загрузка невозобновляєтса!!! может у кавота єсь примерчик такова алгоритма


 
integerr   (2004-12-28 19:58) [5]

што никто не имел подобной  проблеми


 
Piter ©   (2004-12-29 01:53) [6]

А что не работает в ТВОЕМ алгоритме, на какой строчке ошибка?


 
integerr   (2004-12-29 13:52) [7]

вот именно ошибки нет (Excaption)


 
Piter ©   (2004-12-29 23:28) [8]

ну если твой код правильный - в чем тогда проблема?

P.S.

Exception - исключение
Error - ошибка


 
intgerr   (2004-12-30 12:09) [9]

ну ясно , сделал без потоков то качаєт нормально но тогда притармаживаєт , вижу ету тему можна и не поднимать так толком нечего нескажут!!!


 
Piter ©   (2004-12-30 21:30) [10]

Так в чем проблема? На какой строчке кода ошибка?


 
JorSand   (2005-01-01 21:45) [11]

Я слышал о подобном трабле с физическим разрывом коннекта. Ребята idServer правили.



Страницы: 1 вся ветка

Текущий архив: 2005.03.06;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.033 c
1-1108589271
ninja
2005-02-17 00:27
2005.03.06
Ввод функций


1-1108998536
Leksey
2005-02-21 18:08
2005.03.06
Как удалить ненужный TabSheet из PageControl?


1-1108806190
netmouse
2005-02-19 12:43
2005.03.06
DBGrid


8-1100825616
fashionguide
2004-11-19 03:53
2005.03.06
Самый простой способ узнать общее время звучания музыкального фай


14-1108311197
AG.Smit
2005-02-13 19:13
2005.03.06
Как поиграть в CS:Source по модемам, типа Hyper Terminal?