Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2011.08.21;
Скачать: CL | DM;

Вниз

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

 
Gu   (2011-05-08 02:14) [0]

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

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"


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


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

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


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

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


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


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

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

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


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

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


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


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

Бред.


 
Gu   (2011-05-08 05:18) [6]

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

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

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

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


 
Gu   (2011-05-08 05:44) [7]


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"));


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

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

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

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


 
Anatoly Podgoretsky ©   (2011-05-08 10:14) [9]


> Gu   (08.05.11 05:18) [6]

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


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

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

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

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


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

SearhPath ?


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

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


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

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

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

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

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

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

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

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


 
MBo ©   (2011-05-12 07:48) [14]

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


 
Anatoly Podgoretsky ©   (2011-05-12 09:29) [15]


> RTFM   (11.05.11 20:22) [13]

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


 
Anatoly Podgoretsky ©   (2011-05-12 09:31) [16]

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

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

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


 
sniknik ©   (2011-05-12 10:41) [17]

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


 
Anatoly Podgoretsky ©   (2011-05-12 11:52) [18]

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


 
Anatoly Podgoretsky ©   (2011-05-12 18:35) [19]

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



Страницы: 1 вся ветка

Текущий архив: 2011.08.21;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.013 c
15-1304144251
stas
2011-04-30 10:17
2011.08.21
Unicode To String


15-1304182636
И. Павел
2011-04-30 20:57
2011.08.21
Связь между "логическим" и "физическим" значением сигнала


15-1303631548
arevo
2011-04-24 11:52
2011.08.21
InstallShield


2-1304762114
volkafff
2011-05-07 13:55
2011.08.21
Картинки в массив


1-1262678404
Michail89
2010-01-05 11:00
2011.08.21
Завершение дочернего процесса