![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
|
Есть вот такой код для сохранения списка файлов и папок в определённой директории в текстовый файл
Код:
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
|
||||
|
||||
|
а не проще:
dir >> file.txt |
|
#3
|
|||
|
|||
|
Цитата:
|
|
#4
|
|||
|
|||
|
Мне нужно чтобы не было невидимых listbox- ов
|
|
#5
|
||||
|
||||
|
Код:
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
|
|||
|
|||
|
Спасибо !
|
|
#7
|
||||
|
||||
|
Вот ещё вариант с подпапками:
Код:
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
|
|||
|
|||
|
Отлично! спасибо!
|