Показать сообщение отдельно
  #1  
Старый 10.03.2010, 17:27
Azazelps Azazelps вне форума
Прохожий
 
Регистрация: 06.03.2010
Сообщения: 6
Репутация: 10
По умолчанию Сохранить список файлов и папок в определённой директории в текстовый файл

Есть вот такой код для сохранения списка файлов и папок в определённой директории в текстовый файл


Код:
procedure GetFileList(DirList: string; ListBox1: TListBox); // листинг директории, например GetFileList('C:\*.*')
begin
    ListBox1.Clear;
    ListBox1.Perform(LB_DIR,
                     DDL_ARCHIVE +
                     DDL_DIRECTORY +
                     DDL_DRIVES +
                     DDL_EXCLUSIVE +
                     DDL_HIDDEN +
                     DDL_READONLY +
                     DDL_READWRITE +
                     DDL_SYSTEM,
                     Integer(DirList));
  ListBox1.Items.SaveToFile(GetWinDir+'\temp\DirList.txt');
end;

Приходится делать на форме невидимый ListBox
Я так понимаю, всё можно сделать легче и проще через StringList

Код:
s.add(DirList+'='+IntToStr(DDL_ARCHIVE +
                     DDL_DIRECTORY +
                     DDL_DRIVES +
                     DDL_EXCLUSIVE +
                     DDL_HIDDEN +
                     DDL_READONLY +
                     DDL_READWRITE +
                     DDL_SYSTEM))
TstringList.Create.SaveToFile(GetWinDir+'\temp\DirList.txt');
но почему-то этот код не работает...
файл создается, но в нем что-то типа
C:\=49207 ........

Можно сделать еще вот так
Код:
procedure GetFileList(DirList: string); // листинг директории, например GetFileList('C:\*.*')
var
   SR: TSearchRec;
   List: TStringList;
   Mask:string;
begin
  List.Clear;
  Mask:='*.*';
  if DirList[Length(DirList)] <> '\' then DirList := DirList + '\';
  if FindFirst(DirList+Mask, faAnyFile, SR) = 0 then
  begin
    repeat
      Application.ProcessMessages;
      if (SR.Attr and faDirectory) <> faDirectory then
        List.Add(DirList + SR.Name)
      else if (SR.Name <> '..') and (SR.Name <> '.') then
      begin
        List.Add(DirList + SR.Name + '\');
        GetFileList(DirList + SR.Name + '\');
      end;
    until FindNext(SR) <> 0;
    FindClose(SR);
  end;
  List.SaveToFile(GetWinDir+'\temp\DirList.txt');
но здесь ошибка выскакивает...


Подскажите что не так!!? плиз!
Ответить с цитированием