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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 26.02.2009, 01:04   #1
Anfall
Форумчанин
 
Регистрация: 10.02.2009
Сообщений: 181
По умолчанию Скнирование папки и добавление файлов в листбокс!

Воспользовался советом: http://programmersforum.ru/showthread.php?t=33950 (Volkogriz).
Код:
function GetFiles(Path:String; Full: Boolean = False):TStrings;
   Var
   Rec:TSearchRec;
   TMP:TStrings;
   ls: String;
   i: integer;
begin
  Result:=TStringList.Create;
  if Path[Length(Path)]<>'\' Then Path:=Path+'\';
  //ChDir(Path);
  if FindFirst(Path+'\*.*',faAnyFile,Rec)=0 then
    begin
     if (Rec.Name<>'.')and(Rec.Name<>'..') then
       if (Rec.Attr and faDirectory) <> 0 then begin
       TMP:=GetFiles(Path+Rec.Name,True);
       Result.AddStrings(TMP);
       TMP.Free;
       end else Result.Add(Path+Rec.Name);

     while FindNext(Rec)=0 do
       begin
        if (Rec.Name<>'.')and(Rec.Name<>'..') then
         if (Rec.Attr and faDirectory) <> 0 then begin
         TMP:=GetFiles(Path+Rec.Name,True);
         Result.AddStrings(TMP);
         TMP.Free;
         end else Result.Add(Path+Rec.Name);
       end;
    end;

if not Full then
  for i:=0 to Result.Count-1 do
   begin
     ls := Result[i];
     Delete(ls,1,Length(Path));
     Result[i] := ls;
   end;
  FindClose(Rec);
end;




procedure TForm1.Button1Click(Sender: TObject);
begin
ListBox1.Items.Assign(GetFiles('C:\Windows\System32'));
end;

end.
Файлы в лисбокс добвляются но без начального пути (в примере это C:\Windows\System32). Я попробовал

Код:
 ListBox2.Items.Assign('C:\Windows\System32' +GetFiles(Listbox2.Items[ListBox2.ItemIndex]));
Но ругается на разные переменные. Помогите как исправить, заранее благодарен.
Anfall вне форума Ответить с цитированием
Старый 26.02.2009, 01:40   #2
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Просто нужно убрать кусок в конце function GetFiles:
Код:
  for i:=0 to Result.Count-1 do
   begin
     ls := Result[i];
     Delete(ls,1,Length(Path));
     Result[i] := ls;
   end;
mihali4 вне форума Ответить с цитированием
Старый 26.02.2009, 01:57   #3
roach1967
Пользователь
 
Регистрация: 21.02.2009
Сообщений: 28
По умолчанию

Во втором коде ошибка появляется при попытке сложение строки (тип String) и списка строк (TStrings).
А для вывода полного пути, надо закоментировать последнюю проверку Full:
Код:
--- CUT ---

       end;
    end;

{if not Full then
  for i:=0 to Result.Count-1 do
   begin
     ls := Result[i];
     Delete(ls,1,Length(Path));
     Result[i] := ls;
   end;}
  FindClose(Rec);
end;
В споре рождается истина.
roach1967 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Динамическое добавление файлов в программу Crivel Общие вопросы Delphi 1 02.02.2009 18:22
Добавление файлов в плейлист Dr.Badnezz Мультимедиа в Delphi 12 26.01.2009 18:06
Открытие файлов из заданной папки anutiks Microsoft Office Excel 7 14.04.2008 04:19
Чтение MP3 файлов из папки PAVEL315 Общие вопросы Delphi 1 03.03.2007 13:33