![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как определить, есть ли в системных путях (где либо) нужнй файл? [D7, Win95/98, WinME, NT4, Win2k, WinXP]
w666w © (2003-08-27 18:55:00)
Сабж....
w666w (2003-08-28 15:04:00) [1]
Спасибо за пост, jack128. Очень помогло.
jack128 (2003-08-27 23:37:00) [2]
первые две строки, естественно, такие
var
hLib : Thandle;
begin
hLib = LoadLibrary(Pchar(Filename));
jack128 (2003-08-27 23:35:00) [3]
можно сделать так
var
hLib = LoadLibrary(Pchar(Filename));
begin
Result := hLib <> 0;
if Result then
begin
FreeLibrary(hLib);
Exit;
end;
Result := GetLastError = ERROR_BAD_EXE_FORMAT;
end;
суть в том что функция LoadLibrary как раз и ищет файk в системном катологе, в путях указанных в переменных окружения и тд
Rouse_ (2003-08-27 20:30:00) [4]
Хм, как и говорил инет у меня дерьмо, пока писал ситуация прояснилась...
Rouse_ (2003-08-27 20:27:00) [5]
Мда.... уж...
Неисповедимы пути.... системные...
Встроенных функций есть, смотря для чего?
Если просто найти файл то см. > Reindeer Moss Eater © (27.08.03 19:27) [3], если попытка определения кодеков или наличия драйверов, то вопрос должен выглядеть глубже.
А переменные среды можно найти в FAQ (предупреждая следующий вопрос)
Желаю успехов
w666w (2003-08-27 20:21:00) [6]
Пока писал уже дали ответ: GetWindowsSysDir.....
Именно это мне и нужно:
if FileExists (GetWindowsSysDir + "filename.dll")
и т.п.
Reindeer Moss Eater (2003-08-27 20:19:00) [7]
1.GetEnvironmentVariable
2.GetWindowsDirectory,GetWindowsSysDir.....
w666w (2003-08-27 20:19:00) [8]
В общем суть проблемы поподробнее:
проект использует Indy для соединения по SSL. SSL библиотека находится в 2-х dll"ках, и возможно их подгрузить или нет, становится понятным только при попытке соединения.
Хочется сделать проверку при старте, есть ли эти файлы в системных путях, однако сканить весь винт никак нерационально, иначе овчинка выделки не стоит. Подскажите, как определить, возможна ли подгрузка этих dll"ок при затрате как можно меньшего кол-ва ресурсов (и ЦПУ, и времени, и винта).
Reindeer Moss Eater (2003-08-27 20:17:00) [9]
Кстати, что такое "системные пути"?
Это "пути" или "системные каталоги"?
Reindeer Moss Eater (2003-08-27 20:15:00) [10]
Они в переменных окружения записаны.
w666w (2003-08-27 20:11:00) [11]
Ну хорошо, тогда каким образом возможно узнать все системные пути?
Reindeer Moss Eater (2003-08-27 19:27:00) [12]
FindFirst,FindNext,FindClose (и не только в системных путях)
w666w (2003-08-27 19:21:00) [13]
Хороший ответ. Это понятно. А какие нибудь быстрые функцие встроенные есть (для быстрого поиска в системных путях)?
Reindeer Moss Eater (2003-08-27 19:18:00) [14]
Попробовать найти его