Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #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');
но здесь ошибка выскакивает...


Подскажите что не так!!? плиз!
Ответить с цитированием
  #2  
Старый 10.03.2010, 18:37
Аватар для Aristarh Dark
Aristarh Dark Aristarh Dark вне форума
Модератор
 
Регистрация: 07.10.2005
Адрес: Москва
Сообщения: 2,906
Версия Delphi: Delphi XE
Репутация: выкл
По умолчанию

а не проще:
dir >> file.txt
__________________
Некоторые программисты настолько ленивы, что сразу пишут рабочий код.

Если вас наказали ни за что - радуйтесь: вы ни в чем не виноваты.
Ответить с цитированием
  #3  
Старый 10.03.2010, 19:04
Azazelps Azazelps вне форума
Прохожий
 
Регистрация: 06.03.2010
Сообщения: 6
Репутация: 10
По умолчанию

Цитата:
Сообщение от Aristarh Dark
а не проще:
dir >> file.txt
если можно, по-подробнее пожалуйста!??
Ответить с цитированием
  #4  
Старый 10.03.2010, 19:10
Azazelps Azazelps вне форума
Прохожий
 
Регистрация: 06.03.2010
Сообщения: 6
Репутация: 10
По умолчанию

Мне нужно чтобы не было невидимых listbox- ов
Ответить с цитированием
  #5  
Старый 10.03.2010, 19:19
Аватар для AND_REY
AND_REY AND_REY вне форума
Активный
 
Регистрация: 31.03.2009
Адрес: Украина, г.Днепропетровск
Сообщения: 324
Версия Delphi: Delphi7
Репутация: 3877
По умолчанию

Код:
Procedure SaveFileList(NamSave,DirScan:string);
Var
 Fs: TSearchRec;
 Tf: TextFile;
begin
 AssignFile(Tf,NamSave);
 Rewrite(Tf);
 if FindFirst(DirScan+'\*.*',faAnyFile-faDirectory-faVolumeID, Fs) = 0 Then
  Repeat
   Writeln(Tf,Fs.Name);
  Until FindNext(Fs) <> 0;
 FindClose(fs);
 CloseFile(Tf);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
SaveFileList('C:\1.txt','C:\Temp');
end;
Ответить с цитированием
  #6  
Старый 10.03.2010, 19:40
Azazelps Azazelps вне форума
Прохожий
 
Регистрация: 06.03.2010
Сообщения: 6
Репутация: 10
По умолчанию

Спасибо !
Ответить с цитированием
  #7  
Старый 10.03.2010, 19:47
Аватар для AND_REY
AND_REY AND_REY вне форума
Активный
 
Регистрация: 31.03.2009
Адрес: Украина, г.Днепропетровск
Сообщения: 324
Версия Delphi: Delphi7
Репутация: 3877
По умолчанию

Вот ещё вариант с подпапками:

Код:
Var
 Sl: TStringList;

Procedure FindFile(Dir: String);
Var
 SR: TSearchRec;
 FR: Integer;
begin
 FR:= FindFirst(Dir+'*.*', faAnyFile, SR);
 While FR = 0 Do
  Begin
   if ((SR.Attr and faDirectory) = faDirectory) and
      ((SR.Name = '.') or (SR.Name = '..')) Then
    begin
     FR:= FindNext(SR);
     Continue;
    end;
   if ((SR.Attr and faDirectory) = faDirectory) Then
    begin
     FindFile(Dir+SR.Name+'\');
     FR:= FindNext(SR);
     Continue;
    end;
   Sl.Add(Dir+SR.Name);
   FR:= FindNext(SR);
  end;
 FindClose(SR);
end;

Procedure TForm1.Button1Click(Sender: TObject);
begin
 Sl:= TStringList.Create;
 FindFile('C:\Temp\');       
 Sl.SaveToFile('C:\23.txt');
 Sl.Free;
end;
Ответить с цитированием
  #8  
Старый 10.03.2010, 19:53
Azazelps Azazelps вне форума
Прохожий
 
Регистрация: 06.03.2010
Сообщения: 6
Репутация: 10
По умолчанию

Отлично! спасибо!
Ответить с цитированием
Ответ


Delphi Sources

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

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 16:09.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter