Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2011.08.21;
Скачать: [xml.tar.bz2];

Вниз

Поиск файла в путях переменной окружения 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.49 MB
Время: 0.004 c
2-1305111938
leonid666
2011-05-11 15:05
2011.08.21
ole-container немогу открыть ворд


15-1304242479
И. Павел
2011-05-01 13:34
2011.08.21
Как отловить информацию о запускаемых программах?


15-1304108999
Юрий
2011-04-30 00:29
2011.08.21
С днем рождения ! 30 апреля 2011 суббота


2-1304806453
Gu
2011-05-08 02:14
2011.08.21
Поиск файла в путях переменной окружения Path


15-1303976611
stas
2011-04-28 11:43
2011.08.21
Изменить серийный номер в ISO образе





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский