Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.02.2014, 21:25   #1
Pcrepair
Форумчанин
 
Регистрация: 04.01.2011
Сообщений: 267
По умолчанию Загрузка файла из ФТП-сервера (TIdFTP)

Добрый день. Есть стандартный код загрузки файла из ФТП-сервера на HDD с помощью
Ftp.Get('access_log','d:\access_log ',True);
Все работает, но вообщето нужно загрузить файл не на жесткий диск а в TStringList или Memo (для наглядности).
Содержимое файла потом будем парсить. Конечно можно записать файл на ЖД, потом загрузить в список и далее с ним работать.
Вопрос: нет ли способа сразу загрузить файл в переменную? что то в интернете ничего не нашел, только Ftp.Get
Также можно покритиковать выбор AfterClientLogin для загрузки файла (в интернетуме почемуто по другому)
Код:
procedure TForm1.Button1Click(Sender: TObject);
begin  (*подключение к серверу*)
  if Ftp.Connected then
  begin
    Ftp.Disconnect;
    Label1.Caption:='Disconnected';
  end
  else
  begin
    Ftp.Host:=Edit1.Text;             (*передача адреса*)
    Ftp.Username:=Edit2.Text;         (*передача логина*)
    Ftp.Password:=Edit3.Text;         (*передача пароля*)
    Ftp.Port:=21;
    Ftp.Passive:=True;
    Ftp.ConnectTimeout:=2000;         (*время ожидания до самоотключения?*)
    //Ftp.TransferType:=ftASCII;      (*ftASCII по умол? пока не ясно для чего но и без работает*)
    Ftp.TransferType:=ftBinary;       (*тип загрузки, можно удалить*)
    Ftp.Connect;
    AssErt(Ftp.Connected);            (*в теории это проврка выполнения действия, обработка исключения*)
    if Ftp.Connected then Label1.Caption:='Connected to SERVER';
  end;

end;

procedure TForm1.FtpAfterClientLogin(Sender: TObject);
begin                         (*действия после подключения к серверу*)
  Ftp.ChangeDir(Edit4.Text);  (*назначить путь к каталогу в задании*)
  DisplayFtp;                 (*отобразить в ЛистБокс результат работы, только для контроля*)
  Ftp.Get('access_log','d:\access_log',True);  (*загрузить файл из сервера в указанное место на ЖД и перезаписать, вообще в
  СПИСОК нужно грузить и сразу обрабатывать и в БД*)
end;

procedure TForm1.DisplayFTP;
begin                                      (*Показать содержимое указанной папки*)
  ListBox1.Items.Clear;                    (*очистка ЛистБокс от прежних значений*)
  Ftp.List(ListBox1.Items, '', false);     (*метод List получает список папок и файлов в виде строкового представления*)
end;
Pcrepair вне форума Ответить с цитированием
Старый 06.02.2014, 10:29   #2
FaTaL
Участник клуба
 
Аватар для FaTaL
 
Регистрация: 09.11.2007
Сообщений: 1,762
По умолчанию

А метод Get разве не может грузить в TMemoryStream например?
FaTaL вне форума Ответить с цитированием
Старый 06.02.2014, 12:26   #3
Pcrepair
Форумчанин
 
Регистрация: 04.01.2011
Сообщений: 267
По умолчанию

Код:
Ftp.Get('access_log',mStream,True);
  mStream.Position:=0;
  Memo1.Lines.LoadFromStream(mStream);
а что по второму вопросу?
Pcrepair вне форума Ответить с цитированием
Старый 06.02.2014, 14:01   #4
FaTaL
Участник клуба
 
Аватар для FaTaL
 
Регистрация: 09.11.2007
Сообщений: 1,762
По умолчанию

А где второй вопрос?
FaTaL вне форума Ответить с цитированием
Старый 06.02.2014, 14:20   #5
Pcrepair
Форумчанин
 
Регистрация: 04.01.2011
Сообщений: 267
По умолчанию

а вот он:

Также можно покритиковать выбор AfterClientLogin для загрузки файла (в интернетуме почемуто по другому)
Pcrepair вне форума Ответить с цитированием
Старый 06.02.2014, 15:23   #6
FaTaL
Участник клуба
 
Аватар для FaTaL
 
Регистрация: 09.11.2007
Сообщений: 1,762
По умолчанию

Хоть глаза выколи, но вопрса я не вижу. Даже знака вопроса "?" нет!
FaTaL вне форума Ответить с цитированием
Старый 06.02.2014, 17:36   #7
Pcrepair
Форумчанин
 
Регистрация: 04.01.2011
Сообщений: 267
По умолчанию

видимо не развито образное мышление, ну ладно вот текст с вопросительной интонацией и знаком:

правильно ли использовать событие AfterClientLogin для загрузки файла с фтп-сервера?
так как нигде(источники в интернете) не видно такого варианта, везде после коннект идет задержка а потом метод ГЕТ
Pcrepair вне форума Ответить с цитированием
Старый 06.02.2014, 18:04   #8
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
правильно ли использовать событие AfterClientLogin для загрузки файла с фтп-сервера?
Нет не правильно. Что если тебе не нужно будет загружать файл, а скажем отправить команду? Ты приконнектишся, а он файл начнет грузить.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 06.02.2014, 18:40   #9
Pcrepair
Форумчанин
 
Регистрация: 04.01.2011
Сообщений: 267
По умолчанию

не.... мне бы только файл загрузить
потом разобрать на запчасти и в БД скинуть

в теории
{********************************** *********************************** *}
{ Unit archived using Team Coherence }
{ Team Coherence is Copyright 2002 by Quality Software Components }
{ }
{ For further information / comments, visit our WEB site at }
{ http://www.TeamCoherence.com }
{********************************** *********************************** *}
используют событие OnAfterClientLogin
для чего то оно нужнО?
может это момент когда есть гарантированно соединение с сервером?
Pcrepair вне форума Ответить с цитированием
Старый 06.02.2014, 18:57   #10
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Я такого компонента не знаю Team Coherence.
Посмотри есть ли у него хелп и почитай там если есь.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Удаление файла на фтп ramzes777 Работа с сетью в Delphi 5 02.10.2011 22:06
Загрузка файла с сервера (Synapse) Terikon Работа с сетью в Delphi 6 14.09.2011 03:32
Ошибка отправки файла на фтп Crunkordie Общие вопросы Delphi 3 20.07.2011 08:39
Загрузка файлов на фтп mish@ Работа с сетью в Delphi 0 30.06.2009 13:28
Проверка нового файла на ФТП Aleksei Работа с сетью в Delphi 11 10.05.2008 22:26