Добрый день. Есть стандартный код загрузки файла из ФТП-сервера на 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;