![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Kак преобразовать путь программы
Делфиец © (2010-09-05 09:10:00)Есть программы у которых путь задан таким образом "%SystemRoot%\system32\" .... есть ли в стандартном наборе делфи функция котора возращает полный путь?
Anatoly Podgoretsky (2010-09-09 19:08:00) [1]То есть тебе нужно реализовать бред.
Делфиец (2010-09-09 19:02:00) [2]
> DVM © (05.09.10 20:10) [4]
Впринципе любой возвращенный путь можно проверить через FileExists()
Поиск файлов из реестра это полный бред, как раз это мне и нужно реализовать.
DVM (2010-09-05 20:10:00) [3]С этими SystemRoot и прочими надо быть очень внимательным, особенно при запуске 32 разрядной программы в 64 бит окружении. При отключении перенаправления файлового-ввода ввывода, ExpandEnvironmentStrings возвращает неверные по сути пути.
Также в реестре встречаются пути %folder% которых нет среди переменных окружения.
Еще иногда в реестре встречаются SystemRoot и подобные пути без символов %.
Leonid Troyanovsky (2010-09-05 10:37:00) [4]
> Делфиец (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.
Делфиец (2010-09-05 10:06:00) [5]Да в действительности сам вопрос туповатый.
Код своей функции получислся то из двух строчек:
function ExtractSystemRoot(Path: String): String;
var
SystemRoot : String;
begin
SystemRoot := GetEnvironmentVariable('SystemRoot');
Result := StringReplace(Path,'%SystemRoot%', SystemRoot,[rfIgnoreCase]);
end;
Leonid Troyanovsky (2010-09-05 09:41:00) [6]
> Делфиец (05.09.10 09:10)
> .... есть ли в стандартном наборе делфи функция котора
> возращает полный путь?
Windows.ExpandEnvironmentStrings
--
Regards, LVT.