Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.07.18;
Скачать: CL | DM;

Вниз

Система поиска глючит!   Найти похожие ветки 

 
DreYmanD   (2004-07-03 15:12) [0]

Привет всем мастерам!
Хочу в своей проге использовать систему поиска. Объясню поконкретней:
я нажимаю на Button1 и в обработчике пишу:

procedure TForm1.Button1Click(Sender: TObject);

var  SearchRec: TSearchRec;

begin
FindFirst("c:\sasha\temp\*.txt", faAnyFile, SearchRec); \\Директория и формат файла, где будет происходить поиск
Form1.ListBox1.Items.Add(SearchRec.Name); \\Добавление файлов в ListBox
Form1.Label3.Caption:="Поиск завершен"; \\Надпись, которая появится после поиска
end;

Дело в том, что он находит только один файл и после повторного нажатия на Буттон1, в ЛистБоксе записывается тот же файл.
Какой мне надо дописать кусок кода, чтобы он находил в этой директории АБСОЛЮТНО все файлы данного формата? И еще, он у меня
опять же не хочет добавлять в ЛистБокс файлы из Windows\Temporary Internet Files....

Заранее спасибо!


 
menart ©   (2004-07-03 15:20) [1]

procedure ScanDir(StartDir: string; Mask:string; List:TStrings);
var
  SearchRec : TSearchRec;
begin
  if Mask = "" then Mask := "*.*";
  if StartDir[Length(StartDir)] <> "\" then
  StartDir := StartDir + "\";
if FindFirst(StartDir+Mask, faAnyFile, SearchRec) = 0 then
begin
repeat
Application.ProcessMessages;
if (SearchRec.Attr and faDirectory) <> faDirectory then
   List.Add(StartDir + SearchRec.Name)
else if (SearchRec.Name <> "..") and (SearchRec.Name <> ".") then
begin
List.Add(StartDir + SearchRec.Name + "\");
ScanDir(StartDir + SearchRec.Name + "\",Mask,List);
end;
until FindNext(SearchRec) <> 0;
FindClose(SearchRec);
end;
end;


вроде так...
этот код я нашел здесь на этом сайте, просто надо было сначала поискать потом задавать вопросы


 
DreYmanD   (2004-07-03 15:30) [2]

А не можешь дать ссылку, где ты это нашел?


 
menart ©   (2004-07-03 15:53) [3]

давненько это было, я этот код сам использовал, поделился с тобой :)
этот код приводил как пример Anatoly Podgoretsky


 
DreYmanD   (2004-07-03 15:57) [4]

Ну ладно, попробую использовать...


 
Cardinal ©   (2004-07-03 16:00) [5]

Кстати, у меня тоже есть этот код, только немного преобразованный


 
DreYmanD   (2004-07-03 17:03) [6]

Обращение к Menart и Cardinal.

Слушайте, не поможете мне разобраться с этим кодом? Я всего лишь неделю за Delphi сижу....
Мне надо, чтобы после нажатия на Буттон1 искались файлы в той директории, которая записана в системном коде.
В моем случае "C:\Windows\Temporary Internet Files\*.txt" Чтобы система нашла все файлы данного формата и записала их в ListBox....
Я вот еще думаю: появятся ли эти файлы в ЛистБоксе(это же Cookie), т.к. у меня это до этого не получалось(см. как я делал на самом верху).


 
Vasya.ru   (2004-07-03 17:10) [7]

procedure GetDir(dir:string;list:tlistbox);
var
sr:tsearchrec;
begin
if findfirst(dir+"\*.*",faanyfile,sr)=0 then
begin
list.Items.Add(sr.Name);
while findnext(SR)=0 DO
list.Items.Add(sr.Name);
END;
findclose(sr);
end;
//example
procedure TForm1.Button1Click(Sender: TObject);
begin
getdir("c:\windows",listbox1);
end;

Кто то из местных давал пол года назад.
Для поиска по расширению либо запиши расш. в код (if findfirst(dir+"\*.СЮДА ПИШИ РАСШИРЕНИЕ",faanyfile,sr)=0 then)
Либо измени функцию:
procedure GetDir(dir:string;list:tlistbox; Rash : String);
...
(if findfirst(dir+"\*." + RASH,faanyfile,sr)=0 then)
...
Вроде понятно все написал...


 
Cardinal ©   (2004-07-03 21:28) [8]

DreYmanD   (03.07.04 17:03) [6]

Функция у нас объявлена так:

procedure ScanDir(StartDir: string; Mask:string; List:TStrings);

ScanDir - строка, содержащая адрес директории, где надо искать
Mask    - строка с маской, по которой надо искать файлы
List    - объект типа TStrings, в который надо добавлять список
         файлов

Для вашего случая:
ScanDir("C:\Windows\Temporary Internet Files\","*.txt",Listbox1.Items);
Если что не понятно, пишите


 
ЮрийК ©   (2004-07-03 21:41) [9]

"Я всего лишь неделю за Delphi сижу"

А раньше на чём писали?


 
DreYmanD   (2004-07-03 23:12) [10]

Обращение к Vasya.ru - спасибо, попробую...
Обращение к Cardinal - тоже спасибо, все опробую...
Обращение к ЮрийК - вообще не писал...
Короче, все опробую, о результатах напишу...
Спасибо!



Страницы: 1 вся ветка

Текущий архив: 2004.07.18;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.044 c
3-1087550673
Andrey
2004-06-18 13:24
2004.07.18
Как "упаковать" таблицу?


1-1088963569
Igit
2004-07-04 21:52
2004.07.18
Обрезать файл в начале


1-1088939735
ida
2004-07-04 15:15
2004.07.18
принудиельно перенести строки


11-1076874880
DDA
2004-02-15 22:54
2004.07.18
Canvas &amp; Transparent


1-1089106905
YA
2004-07-06 13:41
2004.07.18
траблы с библиотекой