Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Сети";
Текущий архив: 2005.03.06;
Скачать: [xml.tar.bz2];

Вниз

закачка на 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.027 c
9-1102309010
Colt1978
2004-12-06 07:56
2005.03.06
Масштабирование при смене разрешения (GLScene)


4-1102524244
Костя
2004-12-08 19:44
2005.03.06
системное время


1-1108978298
Флюгер
2005-02-21 12:31
2005.03.06
минимизация в Tray


8-1101042263
Kostya-xp
2004-11-21 16:04
2005.03.06
Остановить воспроизведение звука...


3-1107861722
Николай
2005-02-08 14:22
2005.03.06
Экспорт/импорт данных Access с помощью ADO





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский