Вниз
Скачать: CL | DM;

Kак преобразовать путь программы   Найти похожие ветки 

 
Делфиец   (2010-09-05 09:10) [0]

Есть программы у которых путь задан таким образом "%SystemRoot%\system32\" ....  есть ли в стандартном наборе делфи функция котора возращает полный путь?


 
Leonid Troyanovsky ©   (2010-09-05 09:41) [1]


> Делфиец   (05.09.10 09:10)  

> ....  есть ли в стандартном наборе делфи функция котора
> возращает полный путь?

Windows.ExpandEnvironmentStrings

--
Regards, LVT.


 
Делфиец   (2010-09-05 10:06) [2]

Да в действительности сам вопрос туповатый.
Код своей функции получислся то из двух строчек:

function ExtractSystemRoot(Path: String): String;
var
 SystemRoot : String;
begin
 SystemRoot := GetEnvironmentVariable("SystemRoot");
 Result := StringReplace(Path,"%SystemRoot%", SystemRoot,[rfIgnoreCase]);
end;


 
Leonid Troyanovsky ©   (2010-09-05 10:37) [3]


> Делфиец   (05.09.10 10:06) [2]

> Да в действительности сам вопрос туповатый.

В пути может быть и не одна переменная окружения, отсюда и ..Strings.

function ExpandPath(const EPath: String): String;
var
 buf: array [0..MAX_PATH] of Char;
begin
 Win32Check(ExpandEnvironmentStrings(PChar(EPath), buf, MAX_PATH) <> 0);
 Result := buf;
end;

--
Regards, LVT.


 
DVM ©   (2010-09-05 20:10) [4]

С этими SystemRoot и прочими надо быть очень внимательным, особенно при запуске 32 разрядной программы в 64 бит окружении. При отключении перенаправления файлового-ввода ввывода, ExpandEnvironmentStrings возвращает неверные по сути пути.

Также в реестре встречаются пути %folder% которых нет среди переменных окружения.
Еще иногда в реестре встречаются SystemRoot и подобные пути без символов %.


 
Делфиец   (2010-09-09 19:02) [5]


> DVM ©   (05.09.10 20:10) [4]


Впринципе любой возвращенный путь можно проверить через FileExists()
Поиск файлов из реестра это полный бред, как раз это  мне  и нужно реализовать.


 
Anatoly Podgoretsky ©   (2010-09-09 19:08) [6]

То есть тебе нужно реализовать бред.



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

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.005 c
15-1282541332
12
2010-08-23 09:28
2010.11.28
Сообщения. Уведомления об изменениях других окон


2-1284121956
HF-Trade
2010-09-10 16:32
2010.11.28
Проверка прокси серверов в потоках


15-1282111749
TStas
2010-08-18 10:09
2010.11.28
Дельфи выдаю AV во адресу... dcc32.dll


15-1282339535
старый ламер
2010-08-21 01:25
2010.11.28
Как быстрее влиться в проект.


15-1282249788
Юрий
2010-08-20 00:29
2010.11.28
С днем рождения ! 20 августа 2010 пятница




   Наверх