Модераторы: Snowy, Poseidon, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> обработка событий IdFTP в потоке 
V
    Опции темы
uwannadie
Дата 21.5.2010, 16:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 175
Регистрация: 5.6.2009
Где: Крым, Керчь

Репутация: нет
Всего: 1



установлена BDS 2010 architec
пытаюсь загрузить файл по фтп в потоке, используя TidFTP
Indy 10.5.5
Код

unit FTPThread;

interface

uses
  Classes, IdFtp, IdComponent;

type
  WorkThread = class(TThread)
  private
    ftpHost, ftpDir,
    ftpFile, ftpLocalPath,
    ftpUser, ftpPasswd: String;
    aFtp: TIdFTP;
    destructor Destroy;
  protected
    constructor Create(CreateSuspended: boolean);
    procedure Execute; override;
    procedure FTPWork(Sender: TObject; AWorkMode: TWorkMode; const AWorkCount: Integer);
    procedure FTPWorkBegin(Sender: TObject; AWorkMode: TWorkMode; AWorkCountMax: Int64);
  end;

implementation

uses main;

{ WorkThread }
procedure WorkThread.FTPWork(Sender: TObject; AWorkMode: TWorkMode; const AWorkCount: Integer);
begin
  Form1.ProgressBar1.Position := AWorkCount;
end;

procedure WorkThread.FTPWorkBegin(Sender: TObject; AWorkMode: TWorkMode; AWorkCountMax: Int64);
begin
  Form1.ProgressBar1.Max := aFtp.Size(ftpFile);
end;

constructor WorkThread.Create;
begin
  ftpHost := 'ftp.ncdc.noaa.gov';
  ftpDir := '/pub/data/inventories/';
  ftpFile := 'ISH-HISTORY.TXT';
  ftpUser := 'ftp';
  ftpPasswd := '[email protected]';
  ftpLocalPath := 'D:\' + ftpFile;
  aFtp := TIdFTP.Create(nil);
  aFtp.OnWork := FTPWork;
  aFtp.OnWorkBegin := FTPWorkBegin;
  inherited Create(CreateSuspended);
end;

destructor WorkThread.Destroy;
begin
  aFtp.Free;
  inherited Destroy;
end;
procedure WorkThread.Execute;
begin
  { Place thread code here }
  aFtp.Connect;
  aFtp.ChangeDir(ftpDir);
  aFtp.Get(ftpFile, ftpLocalPath);
  aFtp.Disconnect;
end;

end.

при компиляции ругается на строки
Код

 aFtp.OnWork := FTPWork;
 aFtp.OnWorkBegin := FTPWorkBegin;

Код

Checking project dependencies...
Compiling ftp_test.dproj (Debug configuration)
[DCC Warning] FTPThread.pas(15): W1010 Method 'Destroy' hides virtual method of base type 'TThread'
[DCC Error] FTPThread.pas(47): E2009 Incompatible types: 'Parameter lists differ'
[DCC Hint] FTPThread.pas(15): H2219 Private symbol 'Destroy' declared but never used
[DCC Fatal Error] ftp_test.dpr(7): F2063 Could not compile used unit 'FTPThread.pas'
Failed
Elapsed time: 00:00:00.3

в общем нипанятна  smile 
--------------------
PM MAIL   Вверх
uwannadie
Дата 21.5.2010, 20:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 175
Регистрация: 5.6.2009
Где: Крым, Керчь

Репутация: нет
Всего: 1



предыдущую проблему победил, заменив типы данных в 2х строках на Int64:
Код

procedure IdFtpWork(ASender: TObject; AWorkMode: TWorkMode; AWorkCount: Int64);
procedure IdFtpWorkBegin(ASender: TObject; AWorkMode: TWorkMode; AWorkCountMax: Int64);

теперь падает в куске с авторизацией:
Код

  ftpHost := 'ftp.ncdc.noaa.gov';
  ftpDir := '/pub/data/inventories/'; 
  ftpFile := 'ISH-HISTORY.TXT';
  ftpUser := 'ftp';
  ftpPasswd := '[email protected]';
  ftpLocalPath := 'D:\' + ftpFile;
  MyFtp.Username := ftpUser; //тут access violation вылезает
  MyFtp.Password := ftpPasswd;


Это сообщение отредактировал(а) uwannadie - 21.5.2010, 20:13
--------------------
PM MAIL   Вверх
uwannadie
Дата 21.5.2010, 20:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 175
Регистрация: 5.6.2009
Где: Крым, Керчь

Репутация: нет
Всего: 1



кажется у меня паранойя: разговариваю сам с собой.
загвоздка была в том, что не отрабатывал конструктор, соответственно вылезала ошибка
--------------------
PM MAIL   Вверх
uwannadie
Дата 21.5.2010, 22:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 175
Регистрация: 5.6.2009
Где: Крым, Керчь

Репутация: нет
Всего: 1



вопрос решился путем отказа от глюкавой инди и написания функции загрузки, используя функции из wininet.pas
--------------------
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Сети"
Snowy
Poseidon
MetalFan

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делится вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Snowy, Poseidon, MetalFan.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Сети | Следующая тема »


 




[ Время генерации скрипта: 0.0405 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.