Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Поиск файла, FindFirst, FindNext... 
:(
    Опции темы
aktuba
Дата 22.2.2007, 13:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Смышленный
***


Профиль
Группа: Завсегдатай
Сообщений: 1915
Регистрация: 24.4.2006
Где: Планета Земля

Репутация: 16
Всего: 38



Код

lRes := FindFirst(lPath + '*.dll', faAnyFile, SR);
  try
    while lRes = 0 do
      begin
        
        lRes := FindNext(SR);
      end;
  finally
    FindClose(SR);
  end;


Почему этот код находит все файлы, у которых расширение начинается на .dll, т.е. кроме file.dll находит также file.dllwww и т.д.???


--------------------
user posted image
PM MAIL WWW Skype   Вверх
W4FhLF
Дата 22.2.2007, 13:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


found myself
****


Профиль
Группа: Участник Клуба
Сообщений: 2831
Регистрация: 2.12.2006

Репутация: 6
Всего: 121



Маска поиска в твоём случае должна быть вида: Path + '\*.dll'. Убедись, что у тебя на конце lPath есть слеш.


--------------------
"Бог умер" © Ницше
"Ницше умер" © Бог
PM ICQ   Вверх
aktuba
Дата 22.2.2007, 13:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Смышленный
***


Профиль
Группа: Завсегдатай
Сообщений: 1915
Регистрация: 24.4.2006
Где: Планета Земля

Репутация: 16
Всего: 38



Цитата

Маска поиска в твоём случае должна быть вида: Path + '\*.dll'. Убедись, что у тебя на конце lPath есть слеш. 


Слэш в конце есть. Если бы не было, функция не находила бы вообще ничего...


--------------------
user posted image
PM MAIL WWW Skype   Вверх
Snowy
Дата 22.2.2007, 14:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 192
Всего: 484



Так ищет винда.
Дело не в дельфе - у винды много странноствей с поиском файлов.
Проверяй расширение вручную.
PM MAIL   Вверх
Alexeis
Дата 22.2.2007, 14:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 109
Всего: 459



Судя по намекам MSDN анси версия поиска (FindFirstFile) внутри работает по системе 8.3 т.е. расширение файлов не должно иметь более 3 символов. В NT / 2000 / XP есть юникодная версия этой функции, которая работает с путями неограниченной длинны, и как следствие не должно быть ограничений по 8.3
Т.е. функции FindFirstFileW / FindNextFileW


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
Snowy
Дата 22.2.2007, 14:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 192
Всего: 484



Они обе работают по 8.3
И обе возвращают одинаковый результат.
PM MAIL   Вверх
W1zArD
Дата 22.2.2007, 15:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 285
Регистрация: 29.1.2006

Репутация: 3
Всего: 3



Код

var st:TSearchRec;
s:string;
begin
if FindFirst(ExtractFilePath(ParamStr(0))+'*.dll', faAnyFile, SR)=S_OK then    
repeat
if ExtractFileExt(sr.Name)='dll' then ListBox1.Items.Add(sr.name);
until FindNext(sr)<>S_OK;
FindClose(SR);    
end;


а для проверки на наличие слеша в конце можно:
1. исп-ть функц IncludeLast из модуля FileCtrl что-то там ))) (я из кафе так что названия точно не помню)
2. проверять последний символ на '\'  smile 

Это сообщение отредактировал(а) Alexeis - 22.2.2007, 15:38
PM   Вверх
Snowy
Дата 22.2.2007, 15:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 192
Всего: 484



Проблема не в коде, а в том, что у файла file.dllXXX расширение реально dll
В этом можно убедиться, конвертнув в короткое имя.
Поэтому поиск его в список и включает.
PM MAIL   Вверх
Snowy
Дата 22.2.2007, 15:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 192
Всего: 484



фильтруй вручную.
хотя зачем? если расширение кривое, то это не твоя проблема.
если я текстовик переименую в dll, что тогда?
Я бы не фильтровал бы, а пробовал бы работпть.
Если нет, значит не моё.
PM MAIL   Вверх
aktuba
Дата 22.2.2007, 16:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Смышленный
***


Профиль
Группа: Завсегдатай
Сообщений: 1915
Регистрация: 24.4.2006
Где: Планета Земля

Репутация: 16
Всего: 38



Цитата

фильтруй вручную.
хотя зачем? если расширение кривое, то это не твоя проблема.
если я текстовик переименую в dll, что тогда?
Я бы не фильтровал бы, а пробовал бы работпть.
Если нет, значит не моё. 


В принципе у меня так и делается. Ищутся файлы с определенным расширением, подгружаю их как dll и проверяю, есть ли определенная функция...


--------------------
user posted image
PM MAIL WWW Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0593 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.