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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 26.07.2014, 18:01   #1
Peshka5
Пользователь
 
Регистрация: 03.07.2014
Сообщений: 11
Восклицание FTP.List

Добрый день, господа знатоки.
Я начинающий программист на Delphi пишу FTP клиент(для себя). Столкнулся на стадии прописывания команды list. Надо узнать, где названия папок, а где файлов. Нашел решение через букву 'd' в правах. Вот код:
Код:
procedure TForm1.listClick(Sender: TObject);
{
drwxr-xr-x 1 ftp ftp              0 Jul 26 17:05 msc
-r-xr-xr-x 1 ftp ftp       10620880 Aug 28  2012 some file.exe
}
var
listfiles:tstringlist;
v:integer;
begin
listfiles:=tstringlist.create;
ftp.List(listfiles,'',True); //Получаю list с правами. 
for v:=0 to listfiles.Count-1 do                         //Ищу букву 'd'.
if listfiles[v][1]='d' then listbox.Items[v]:='Dir ';//Помечаю в listbox строчку с папкой 
ftp.List(listfiles,'',False); //Получаю просто названия файлов и папок.
for v:=0 to listfiles.Count-1 do listbox.Items[v]:=listbox.Items[v]+listfiles[v];//Добавляю их в listbox к помеченным строчкам.
end;
После запуска, коннекта, и нажатия на кнопку list на подчеркнутой строке появляется ошибка 'List index out of bounds (1)'.
Вроде код прост, да и проблема банальна, но не могу решить никак.
PS: Признаю, мало знаю TStrings.

Последний раз редактировалось Peshka5; 26.07.2014 в 18:08.
Peshka5 вне форума Ответить с цитированием
Старый 26.07.2014, 18:34   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Код:
for v:=0 to listfiles.Count-1 do
 if v<ListBox.Items.Count then
  listbox.Items.Append(listfiles[v]);
А еще лучше: listbox.Items.AddStrings(listfiles) ; вместо цикла.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 26.07.2014, 18:38   #3
cotseec
Пользователь
 
Регистрация: 02.05.2012
Сообщений: 45
По умолчанию

что за объект с именем Ftp? возможно исключение возникает в методе List
также стоит взглянуть на listbox - там есть что-нибудь (листбокс чем-то заполнен)? ошибка также может возникать из-за того, что в листбоксе строки с индексом 1 нет (или он пустой или там всего одна строка, скорее всего одна строка)
Skype: cotseec
ICQ: 330-171-495
cotseec вне форума Ответить с цитированием
Старый 26.07.2014, 18:38   #4
Peshka5
Пользователь
 
Регистрация: 03.07.2014
Сообщений: 11
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
А еще лучше: listbox.Items.AddStrings(listfiles) ; вместо цикла.
Сейчас попробую.
Peshka5 вне форума Ответить с цитированием
Старый 26.07.2014, 18:42   #5
Peshka5
Пользователь
 
Регистрация: 03.07.2014
Сообщений: 11
По умолчанию

Не подходит ни один из вариантов.
Получается:
Код:
Dir
msc
some file.exe
Хотя нужно:
Код:
Dir msc
some file.exe
Peshka5 вне форума Ответить с цитированием
Старый 26.07.2014, 18:43   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Цитата:
Хотя нужно:
Тогда вопрос: Почему так?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 26.07.2014, 19:05   #7
Peshka5
Пользователь
 
Регистрация: 03.07.2014
Сообщений: 11
По умолчанию

Всем спасибо. Проблему решил. Это было проще, чем я думал.
Обновленный код:
Код:
procedure TForm1.listClick(Sender: TObject);
var
files:tstringlist;
dirs:tstringlist;
v:integer;
begin
files:=tstringlist.create;
dirs:=tstringlist.create;
ftp.List(files,'',True);
for v:=0 to files.Count-1 do
if files[v][1]='d' then dirs.Add('/') else dirs.Add('');
files.Clear;
ftp.List(files,'',False);
for v:=0 to files.Count-1 do
listbox.Items.Add(dirs[v]+files[v]);
end;
Peshka5 вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
FTP неоднозначные результаты LIST Stilet Свободное общение 6 07.11.2013 13:17
Библиотека BytesRoad.Net.FTP.dll для работы с FTP: как реализовать докачку файла E_x C# (си шарп) 2 18.12.2012 14:15
[c++][list] Порядок обработки двух list Padavan Помощь студентам 1 10.05.2011 14:56
TIdFTP.List Сбрасывает подключение к FTP. sdsfy Работа с сетью в Delphi 0 21.03.2011 04:54
List yurik1 Общие вопросы C/C++ 1 06.05.2008 16:34