procedure LookDir(StartDir, Mask : String; List : TStrings);
var
SearchRec : TSearchRec;
begin
if StartDir[Length(StartDir)] <> '\' then StartDir := StartDir + '\';
if FindFirst(StartDir+'*.*', faAnyFile, SearchRec) = 0 then
begin
repeat
if (SearchRec.Attr and faDirectory) <> faDirectory then
begin
if ExtractFileExt(StartDir+SearchRec.Name) = Mask then List.Add(StartDir+SearchRec.Name);
end
else
if (SearchRec.Name <> '..') and (SearchRec.Name <> '.') then
begin
LookDir(StartDir + SearchRec.Name + '\', Mask, List);
end;
until FindNext(SearchRec) <> 0;
FindClose(SearchRec);
end;
end;
Поиск файлов по маскам выбранным в CheckListBox'е
Помогите пожалуйста решить задачу.
Значит дело обстоит так...:
Я пытаюсь написать прогу которая должна искать на диске файлы по маске... Маска выберается из списка в CheckListBox'е... Т.е. проблема в CheckListBox... там одновременно можно выбрать несколько масок для поиска... Можно добовлять дополнительные маски... и удалять имеющиеся. Я использую для этого следующую функцию:
Код:
Как проверить выбранные маски и начать поиск тех которые были выбраны (поочередно)... используя эту процедуру?
Помогите пожалуйста кто знает.
Спасибо заранее!
В чём проблема? Или ты описал не ту задачу, или... ошибка в ДНК.
Цитата: Freeman
В чём проблема? Или ты описал не ту задачу, или... ошибка в ДНК.
Я вроде все понятно обьяснил...
Значит есть на форме CheckListBox. В нем я буду выбирать тот тип файлов которые я хочу найти на диске... Например я выбераю такие маски - *.txt, *.bmp... Как начать поиск только тех масок которые были выбраны в CheckListBox... используя эту процедуру?
Код:
procedure LookDir(StartDir, Mask : String; List : TStrings);
var
SearchRec : TSearchRec;
begin
if StartDir[Length(StartDir)] <> '\' then StartDir := StartDir + '\';
if FindFirst(StartDir+'*.*', faAnyFile, SearchRec) = 0 then
begin
repeat
if (SearchRec.Attr and faDirectory) <> faDirectory then
begin
if ExtractFileExt(StartDir+SearchRec.Name) = Mask then List.Add(StartDir+SearchRec.Name);
end
else
if (SearchRec.Name <> '..') and (SearchRec.Name <> '.') then
begin
LookDir(StartDir + SearchRec.Name + '\', Mask, List);
end;
until FindNext(SearchRec) <> 0;
FindClose(SearchRec);
end;
end;
var
SearchRec : TSearchRec;
begin
if StartDir[Length(StartDir)] <> '\' then StartDir := StartDir + '\';
if FindFirst(StartDir+'*.*', faAnyFile, SearchRec) = 0 then
begin
repeat
if (SearchRec.Attr and faDirectory) <> faDirectory then
begin
if ExtractFileExt(StartDir+SearchRec.Name) = Mask then List.Add(StartDir+SearchRec.Name);
end
else
if (SearchRec.Name <> '..') and (SearchRec.Name <> '.') then
begin
LookDir(StartDir + SearchRec.Name + '\', Mask, List);
end;
until FindNext(SearchRec) <> 0;
FindClose(SearchRec);
end;
end;
Цитата: Eksell
Значит есть на форме CheckListBox. В нем я буду выбирать тот тип файлов которые я хочу найти на диске... Например я выбераю такие маски - *.txt, *.bmp... Как начать поиск только тех масок которые были выбраны в CheckListBox... используя эту процедуру?
Продолжаем играть дурачка? Параметр Mask не говорит сам за себя?
Цитата: Freeman
Продолжаем играть дурачка? Параметр Mask не говорит сам за себя?
Или ты не понял что я имел ввиду или ты просто такой чел......
А имел ввиду я вот это:
Код:
Var
i: Integer;
begin
ListBox1.Clear;
for i:=0 to CheckListBox1.Items.Count-1 do
if CheckListBox1.Checked then
begin
LookDir('C:\temp\',CheckListBox1.Items, ListBox1.Items);
end;
i: Integer;
begin
ListBox1.Clear;
for i:=0 to CheckListBox1.Items.Count-1 do
if CheckListBox1.Checked then
begin
LookDir('C:\temp\',CheckListBox1.Items, ListBox1.Items);
end;
...
Цитата: Eksell
А имел ввиду я вот это:
Операция перпрошивки ДНК отменяется. ;) Вопрос был слишком простым, чтобы получать по нему подсказку. Программирование - во многом самостоятельный поиск решений.
Hint: Маску поиска можно задавать и перечислением типов файлов: "*.bmp;*.doc" ;)