Logo Море(!) аналитической информации!
IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware
Архив форумов ЦИТФорума
Море(!) вопросов - Море(!) ответов
 
 FAQFAQ   ПоискПоиск   ПользователиПользователи   ГруппыГруппы   РегистрацияРегистрация 
 ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 
Как правильно задавать вопросы

Фтп клиент виснит...

 
Перейти:  
Этот форум закрыт, вы не можете писать новые сообщения и редактировать старые.   Эта тема закрыта, вы не можете писать ответы и редактировать сообщения.    Список форумов Архив форумов ЦИТФорума -> Программирование
Предыдущая тема :: Следующая тема  
Автор Сообщение
YAzla



Зарегистрирован: 05.09.2005
Сообщения: 4

СообщениеДобавлено: Пн Сен 05 2005 01:16    Заголовок сообщения: Фтп клиент виснит... Ответить с цитатой

Я написал Фтп клиент при помощи компонента IdFtp, при подключении и пересылке файлов прога зависает и развисает только после окончания загрузки. Анти фрииз не совсем помогает, я создаю IdFtp компонент IdFtp в потоке и все действия тоже в потоке но прога всё равно висит. Подскажите пожалуйста как это исправить, вот код потока:
Код:

unit Unit2;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, IdTCPConnection, IdTCPClient, IdBaseComponent, IdComponent,
  IdUDPBase, IdUDPClient, IdTrivialFTP, StdCtrls, idftp , ComCtrls,QFileCtrls,IdException;

type
  Load = class(TThread)
  private
  idftp: TIdFTP;
  FMainHandle:HWND;
  procedure upload();
    { Private declarations }
  protected
    procedure Execute; override;
    public
    constructor Create(AHost: string; APort: integer; AHandle: THandle);
  virtual;
   destructor Destroy; override;
  end;

implementation

uses Unit1;

{ Important: Methods and properties of objects in visual components can only be
  used in a method called using Synchronize, for example,

      Synchronize(UpdateCaption);

  and UpdateCaption could look like,

    procedure Load.UpdateCaption;
    begin
      Form1.Caption := 'Updated in a thread';
    end; }

{ Load }
constructor load.Create(AHost: string; APort: integer; AHandle: THandle);

begin
 inherited Create(false);
 FreeOnTerminate := false;
 idftp := TIdftp.Create(nil);
 idftp.Host := AHost;
 idftp.Port := APort;
 IdFTP.Username:=user;
 IdFTP.Password:=pas;
 FMainHandle:= AHandle;
end;
destructor load.Destroy;
begin
 inherited Destroy;
end;



procedure load.upload();
var chek, chek1:string;
begin
ReturnValue:=0;
idftp.Create(nil);




form1.Label2.Caption:='Çàãðóçêà:';
chek:=form1.list.items.strings[i];
chek1:=remdir+'/'+ExtractFileName(form1.list.items.strings[i]);
//try
if not DirectoryExists(locdir+form1.list.items.strings[i]) then
  begin
idFTP.Put(form1.list.items.Strings[i],remdir+'/'+ExtractFileName(form1.list.items.strings[i]),false);
//except EIdProtocolReplyError do

form1.ListBox1.Items.Add(form1.list.items.strings[i]);
end
 else
 begin
  idFTP.MakeDir(remdir+'/'+form1.list.items.strings[i]);
  idFTP.ChangeDir(remdir+'/'+form1.list.items.strings[i]);
  remdir:=remdir+'/'+form1.list.items.strings[i];
  end;
ReturnValue:=1;
end;


procedure Load.Execute;
begin
IdFTP.Connect;
if IdFTP.Connected then form1.Label1.Caption:='Ïîäêëþ÷åíî';
IdFTP.ChangeDir(remdir);
repeat
upload;

i:=i+1;
form1.ProgressBar1.Position:=i; 
until i=form1.list.count;

idftp.Disconnect;
  { Place thread code here }
end;

end.


Кстати поток я запускаю так
Код:

loading:=Load.Create(server,21,545);
sleep(100);
while loading.WaitFor=0 do
 sleep(200);

Я пробывал уже много разных вариантов но ничего не выходит...
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Показать сообщения:   
Этот форум закрыт, вы не можете писать новые сообщения и редактировать старые.   Эта тема закрыта, вы не можете писать ответы и редактировать сообщения.    Список форумов Архив форумов ЦИТФорума -> Программирование Часовой пояс: GMT + 3
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах


Powered by phpBB © 2001, 2002 phpBB Group
Русская поддержка phpBB

 

IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware

Информация для рекламодателей PR-акции, размещение рекламы — adv@citforum.ru,
тел. +7 495 6608306, ICQ 232284597
Пресс-релизы — pr@citforum.ru
Послать комментарий
Информация для авторов
This Web server launched on February 24, 1997
Copyright © 1997-2000 CIT, © 2001-2006 CIT Forum
Внимание! Любой из материалов, опубликованных на этом сервере, не может быть воспроизведен в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. Подробнее...