Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

IdFTP [D7, WinXP]


anthems ©   (2007-05-19 04:10:00) 

После соединения с фтп сервером и забивания каталогов в ListBox, пытаюсь определить файл это или папка

if IdFTP1.DirectoryListing.Items[DirectoryListBox.ItemIndex].ItemType =ditDirectory
выпадает ошибка - "List index out of bounds"
при етом - IdFTP1.DirectoryListing.Items.Count = 0
IdFTP1.DirectoryListing.DirectoryName пустое

работаю с 2005 дельфой.
Заранее благодарен за все предложенные варианты решения проблемы.


selax   (2007-12-21 06:39:00) [1]

Все просто.
Нужно в uses дописать IdAllFTPListParsers


anthems   (2007-05-19 18:56:00) [2]

Вот код, может забыл что где
procedure TForm1.ShowDir(Path: string);
var
 List: TStringList;
begin
 List := TStringList.Create;
 try
   idFTP1.ChangeDir(Path);
   IdFTP1.TransferType := ftASCII;
   StatusBar1.Panels.Items[1].Text := Form1.idFTP1.RetrieveCurrentDir;
   DirectoryListBox.Items.Clear;
   IdFTP1.List(List);
   DirectoryListBox.Items.Assign(List);
   if DirectoryListBox.Items.Count > 0 then
       if AnsiPos('total', DirectoryListBox.Items[0]) > 0 then DirectoryListBox.Items.Delete(0);
 finally
       List.Free;
 end;
end;

procedure TForm1.BitBtn1Click(Sender: TObject);
begin
  if IdFTP1.Connected then
       try
         IdFTP1.Quit;
       finally
             DirectoryListBox.Items.Clear;
             Path := '/';
       end
   else with IdFTP1 do
         try
           Username := Edit2.Text;
           Password := Edit3.Text;
           Host := Edit1.Text;
           Connect;
           ShowDir('/');
         finally
   end;
end;

procedure TForm1.BitBtn2Click(Sender: TObject);
var
 i,Count: integer;
begin
 Count:=0;
 for i := 0 to DirectoryListBox.Count - 1 do
   if IdFTP1.DirectoryListing.Items[i].ItemType <> ditDirectory then
     Inc(Count);
 ShowMessage(IntToStr(MyCount));
end;


Anatoly Podgoretsky   (2007-05-19 14:59:00) [3]

> anthems  (19.05.2007 14:15:04)  [4]

У тебя ошибка в программе


anthems   (2007-05-19 14:15:00) [4]

Да ну ето понятно, что если там ничего нет то и лезть туда не надо, я же спрашиваю почему там ничего нет и как сделать так что бы там что-то было


Anatoly Podgoretsky   (2007-05-19 13:59:00) [5]

> anthems  (19.05.2007 13:53:02)  [2]

Раз элементов нет, то не надо и обращаться.


anthems   (2007-05-19 13:53:00) [6]

В этом то и проблема, что элементов нету а должны быть, может я чего не понимаю в работе этого компонента, поэтому и прошу помощи )


Anatoly Podgoretsky   (2007-05-19 10:57:00) [7]

Зачем же ты обращаешься к списку если у тебя нет элементов?
Да и вообще сама идея странная, по индексу из одного списка обращаться к индексу другого списка, замучаешься с синхронизацией, в одном 3 в другом 10.


Наверх

Титульная страница Поиск, карта сайта Написать письмо