Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2004.07.18;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.048 c
14-1088403388
31512
2004-06-28 10:16
2004.07.18
ГАИшники наши и буржуинские


3-1088274833
Karburator
2004-06-26 22:33
2004.07.18
Как подтвердить транзакцию в процедуре?


1-1088583732
Tempo
2004-06-30 12:22
2004.07.18
Диалог выбора папки


14-1088522467
pasha_golub
2004-06-29 19:21
2004.07.18
Всем смотреть, это просто шедевр!!!


1-1089175023
vlgrig1961
2004-07-07 08:37
2004.07.18
Почему TPanel не реагирует на OnKeyDown





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский