Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2009.02.08;
Скачать: CL | DM;

Вниз

IdFTP   Найти похожие ветки 

 
anthems ©   (2007-05-19 04:10) [0]

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

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

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


 
Anatoly Podgoretsky ©   (2007-05-19 10:57) [1]

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


 
anthems ©   (2007-05-19 13:53) [2]

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


 
Anatoly Podgoretsky ©   (2007-05-19 13:59) [3]

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

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


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

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


 
Anatoly Podgoretsky ©   (2007-05-19 14:59) [5]

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

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


 
anthems ©   (2007-05-19 18:56) [6]

Вот код, может забыл что где
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;


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

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



Страницы: 1 вся ветка

Текущий архив: 2009.02.08;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.014 c
15-1229106194
barbaroska
2008-12-12 21:23
2009.02.08
Распознавание цифр


15-1229335913
ВованХ
2008-12-15 13:11
2009.02.08
Ищу компоненты Developer Express для Delphi6


2-1230040637
Pavel
2008-12-23 16:57
2009.02.08
Подключение к базе данных


15-1229004872
Григорьев Антон
2008-12-11 17:14
2009.02.08
Посоветуйте программу для визуальных эффектов


15-1229401940
Клод
2008-12-16 07:32
2009.02.08
Видео на двд