Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Поиск файла в путях переменной окружения Path


Gu ©   (2011-05-08 02:14:00) 

Нет ли какой готовой функции, которая может это делать? Что-то типа

Fn:=FinfFileEnv(FileName, PathStr);

где
PathStr - значение переменной окружения Path (получить можно например так: http://www.delphirus.com/modules.php?name=Pages&pa=showpage&pid=1785)

FileName - искомое имя файла, например "my.dll"

а Fn - возвращаемый результат, например "c:\windows\System32\my.dll"


Anatoly Podgoretsky   (2011-05-12 18:35:00) [1]

А наши пытаются помочь, и если не получится, то хотя бы поразлекаться.


Anatoly Podgoretsky   (2011-05-12 11:52:00) [2]

А чего можно ответить на вопрос "Помогите не работает"


sniknik   (2011-05-12 10:41:00) [3]

> Они считают само собой обычным
http://bash.org.ru/quote/410956
ага, и тут на полном серьезе ответят - звоните в поддержку. или - вызовите мастера.


Anatoly Podgoretsky   (2011-05-12 09:31:00) [4]

> RTFM  (11.05.2011 20:22:13)  [13]

> Потому что им лениво выпытывать у автора, чего ему на самом деле надо. А
> тут - нет.

Они считают само собой обычным, что запросчик предоставляет всю необходимую
информацию, понятным языком и не скажут при этом что автор дурак
необразованый.


Anatoly Podgoretsky   (2011-05-12 09:29:00) [5]


> RTFM   (11.05.11 20:22) [13]

Даже если на каком то этапе будет работать правильно, это не значит, что и завтра так будет.


MBo   (2011-05-12 07:48:00) [6]

offtop:
Автору в копилку - лучше англоязычных благодарить так - Thanks, it works.
Им будет понятнее.


RTFM   (2011-05-11 20:22:00) [7]

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

Потому что им лениво выпытывать у автора, чего ему на самом деле надо. А тут - нет.

Не надо писать всякую х.

Ну, заюзаешь ты SearchPath. Дальше что?

Ты учёл приоритет поиска? Нет.
Ты учёл настойку SafeSearch? Нет.
Ты учёл Dll Redirection? Нет.
Ты учёл SideBySide? Нет.

Итого - на пустом месте внёс в программу потенциальную брешь в безопасности, ибо грузишь DLL не оттуда, откуда её грузила бы система.

Мои поздравления с созданием очередной поделки.


Игорь Шевченко   (2011-05-08 12:02:00) [8]

SearchPath,
http://msdn.microsoft.com/en-us/library/aa365527(v=vs.85).aspx


Игорь Шевченко   (2011-05-08 12:02:00) [9]

SearhPath ?


sniknik   (2011-05-08 11:07:00) [10]

> Нашел ты десять mydll.dll в десяти разных местах - и что дальше?
он не найдет 10 этим способом, он найдет 1, ту которую бы использовал если бы просто сделал лоадлайбрари "не выделываясь".

но вопрос "что дальше?" остается, и еще вопрос, а ЗАЧЕМ это все? ну вот нашёл ты путь с которого лоадлайбрари загрузит dll а смысл? зачем лишние "телодвижения"?

> почему тут все по другому?
тут пытаются осмыслить проблему, а не заработать балов положительным ответом как на "потребительских" форумах. там на вопрос "дайте мне мыло и веревку" говорят "на". а здесь "зачем?" перед тем как дать, и приходится придумывать варианты типа "сейчас помоюсь и в горы!" попутно задумываясь "а реально ли мне именно этого нужно?".


Anatoly Podgoretsky   (2011-05-08 10:14:00) [11]


> Gu   (08.05.11 05:18) [6]

С тебя и "зачем" не вытянуть. Присоединяюсь к предыдущим анализом глупость и опасно.


Медвежонок Пятачок   (2011-05-08 07:18:00) [12]

Загружаются несколько длл с одинаковым именем,

Ну если они разные, но одинаково называются, то как ты их отличишь если найдешь все?

Нашел ты десять mydll.dll в десяти разных местах - и что дальше?


Gu   (2011-05-08 05:44:00) [13]


Function EnvFNS(Fn: string): string;
var SPPath:Array[0..255] of char;PathPtr:PChar;
begin
if SearchPath(nil, PChar(Fn), nil, 255, SPPath, PathPtr)>0 then Result:=StrPas(SPPath) else Result:=Fn;
end;


пример использования:


Showmessage(EnvFNS('notepad.exe'));


Gu   (2011-05-08 05:18:00) [14]

ну это вы так думаете.

подсказали решение.

вот тут люди не спрашивают "зачем", не говорят "это тебе не надо", а сразу ответ пишут: http://stackoverflow.com/questions/5924755/file-search-in-paths-of-environment-variable-path

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


Германн   (2011-05-08 03:40:00) [15]


>  Gu   (08.05.11 03:18) [4]
>
> У меня библиотеки динамически загружаются, потому нужен
> полный путь.

Бред.


Gu   (2011-05-08 03:18:00) [16]

У меня библиотеки динамически загружаются, потому нужен полный путь. Это както повлияет на ответ - есть такая функция или нет?


Германн   (2011-05-08 02:55:00) [17]


> Почему а5 все сводится к вопросу "зачем"?

Потому, что не надо делать всё "через анус". DLL принято располагать либо в системной папке для dll, либо в папке с программой.

"Нужно знать полный путь." Ещё раз нафига?
P.S.
Ещё раз увижу а5 - отвечать более не буду.


Gu   (2011-05-08 02:40:00) [18]

Мне нужна. Загружаются несколько длл с одинаковым именем, которые могут лежать в определенном месте или в папке проге или в путях переменной path. Нужно знать полный путь.
Почему а5 все сводится к вопросу "зачем"? :)


Германн   (2011-05-08 02:26:00) [19]


>  Поиск файла в путях переменной окружения Path

А пардон, нафига такая функция нужна кому-то?
Path прописывается для того, чтобы можно было "запустить" исполняемый файл без указания пути к нему. Не запустился - значит либо нет файла, либо путь к нему не входит в Path.


Наверх

Титульная страница Поиск, карта сайта Написать письмо