Главная страница
    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.034 c
3-1088042525
Марат
2004-06-24 06:02
2004.07.18
Query


1-1089033655
wild_arg
2004-07-05 17:20
2004.07.18
навигация по TXMLDocument


1-1089039778
serg128
2004-07-05 19:02
2004.07.18
Как получить код клавиши на клавиатуре?


14-1087459582
blackman
2004-06-17 12:06
2004.07.18
Что за портал дремучих?


14-1088685167
Cincinnut
2004-07-01 16:32
2004.07.18
Как не надо заниматься вымогательством





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский