Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.12.2009, 22:02   #1
Arxangelname
Пользователь
 
Аватар для Arxangelname
 
Регистрация: 12.03.2009
Сообщений: 30
По умолчанию Вопрос по поводу поиск файлов

Всем привет и спасибо заранее.
У меня такой вопрос мне нужно искать файл JPeg везде т.е. на всем компьютере при нажатии на кнопку как это сделать.
По определенной директории я знаю как искать.
У меня есть один исходник но он просто ищет все а файлов то не мало и прога застывает короче не работает а может что то надо переделать
Вот код:

Код:
uses
Masks;

procedure Scan(s: string);
var
  sr: TSearchRec;
  r: integer;
  OldDir: string;
begin
  {$I-}
  ChDir (s);
  {$I+}
  if IoResult = 0 then begin
    try
      r := FindFirst ('*.jpeg', faAnyFile, sr);
      while r = 0 do begin
        if (sr.Name = '*.Jpeg') and (sr.Name = '*.jpg') then begin
          Form1.Label1.Caption := ExpandFileName (sr.Name);
          Form1.Label1.Update;
          if (faDirectory and sr.Attr) = faDirectory then begin
            OldDir := GetCurrentDir;
            Scan (ExpandFileName (sr.Name));
            ChDir (OldDir);
          end else begin
            if MatchesMask (sr.Name, Form1.Edit1.Text) then
              Form1.sListBox1.Items.Add (ExpandFileName (sr.Name));
          end;
        end;
        r := FindNext (sr);
      end;
    finally
      FindClose (sr);
    end;
  end;
end;
 
procedure Search;
var
  DriveNum: Integer;
  DriveChar: Char;
  DriveBits: set of 0..25;
 
begin
  Form1.sListBox1.Clear;
  Integer(DriveBits) := GetLogicalDrives;
  for DriveNum := 0 to 25 do begin
  if not (DriveNum in DriveBits) then
    Continue;
    DriveChar := Char(DriveNum + Ord('a'));
    Scan (DriveChar + ':\');
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
Search;
end;
У нас принято оформлять код специальным тэгом - кнопочка "#".
Модератор

Последний раз редактировалось mihali4; 20.12.2009 в 22:36.
Arxangelname вне форума Ответить с цитированием
Старый 20.12.2009, 22:06   #2
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

ну правильно...файлов то не мало на всем компе.

многопоточность вас спасет.
хотя можно еще юзать Application.ProcessMessages
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.

Последний раз редактировалось Пепел Феникса; 20.12.2009 в 22:09.
Пепел Феникса вне форума Ответить с цитированием
Старый 20.12.2009, 22:07   #3
Marsel737
Форумчанин
 
Аватар для Marsel737
 
Регистрация: 09.11.2009
Сообщений: 669
По умолчанию

Arxangelname, я так понимаю что ты имел ввиду - этот код ищет все картинки формата jpg, тогда при первом взгляде на исходник возникает мысль что нужно вместо

Код:
r := FindFirst ('*.jpeg', faAnyFile, sr);
while r = 0 do begin
if (sr.Name = '*.Jpeg') and (sr.Name = '*.jpg') then begin
писать

Код:
r := FindFirst ('Имя нужной картинки.jpeg', faAnyFile, sr);
while r = 0 do begin
if (sr.Name = 'Имя нужной картинки.Jpeg') and (sr.Name = 'Имя нужной картинки.jpg') then begin
хотя могу ошибаться
Я не всегда знаю, о чем говорю, но знаю, что прав. © Мухаммед Али.
К чёрту обстоятельства. Я создаю возможности. © Брюс Ли
Marsel737 вне форума Ответить с цитированием
Старый 20.12.2009, 22:12   #4
Arxangelname
Пользователь
 
Аватар для Arxangelname
 
Регистрация: 12.03.2009
Сообщений: 30
По умолчанию

А вообще есть какой ни будь другой код подскажите пожалуйста
Arxangelname вне форума Ответить с цитированием
Старый 20.12.2009, 22:16   #5
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

вверху есть кнопка поиск.
примеров кода тут тысячи наверно.

я для ся уже давно модуль составил:P
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 20.12.2009, 22:23   #6
Arxangelname
Пользователь
 
Аватар для Arxangelname
 
Регистрация: 12.03.2009
Сообщений: 30
По умолчанию

вот именно что много а то что надо нету везде надо директорию писать
Arxangelname вне форума Ответить с цитированием
Старый 20.12.2009, 22:27   #7
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

я вам дал подсказки в своем посте.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 21.12.2009, 09:53   #8
Greek9000
Форумчанин
 
Регистрация: 01.09.2009
Сообщений: 151
По умолчанию

У меня есть подозрение, что автору необходимо часто искать у себя на жестком диске различные картинки. (В самом деле, зачем писать программу для поиска одного конкретного файла, если можно
нажать F3 ?!).
Если я не прав - поправьте меня, в противном случае можно порекомендовать создание индексного списка. Т.е. создаёте базу данных в любой удобной СУБД, в ней создаёте таблицу в которой будут храниться пути до всех Ваших картинок, правильно индексируете эту таблицу и наслаждаетесь скоростью поиска. Правда, один раз придётся потратить час-полтора на поиск всех картинок на диске.

Последний раз редактировалось Greek9000; 21.12.2009 в 10:31.
Greek9000 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
маленький вопрос по поводу копи рования файлов kakawkin Общие вопросы Delphi 4 06.10.2009 17:21
Вопрос по поводу регионов Malkovich Win Api 3 12.09.2009 10:25
Вопрос по поводу памяти! Slava12345 Компьютерное железо 13 04.07.2009 16:59
вопрос по Unix'у, поиск файлов Gimi Linux (Ubuntu, Debian, Red Hat, CentOS, Mint) 1 13.03.2009 16:50