|
Вопрос # 5 053/ вопрос открыт / |
|
Здравствуйте!
Вопрос простой. Как узнать текущую папку, где находится программа.
Но задача не совсем проста. Например, в англоязычной версии ОС, где в пути используют кириллицу, функция GetCurrentDir выдает следующее: "C:\Users\???\" Вместо кириллицы знаки вопроса, поэтому не определить путь, где находится приложение. Если приложение в автозагрузке, то GetCurrentDir = "C:\WINDOWS" и выходит, что не узнать папку приложения, и даже не установить её как текущую.
Вопрос таков: как установить текущей папку запускаемого приложения?
 |
Вопрос задал: VKHacker (статус: 1-ый класс)
Вопрос отправлен: 26 февраля 2011, 19:58
Состояние вопроса: открыт, ответов: 0.
|
Мини-форум вопроса
Всего сообщений: 3; последнее сообщение — 14 марта 2011, 20:50; участников в обсуждении: 3.
|
min@y™ (статус: Доктор наук), 27 февраля 2011, 08:17 [#1]:
Для таких целей можно использовать юникодовые функции из kernel32.dll (описаны в Windows.pas):
function GetCurrentDirectoryW(nBufferLength: DWORD; lpBuffer: PWideChar): DWORD; stdcall;
function SetCurrentDirectoryW(lpPathName: PWideChar): BOOL; stdcall;
По поводу каталога программы - не знаю, что в такой ситуации возвратит ParamStr(0), однако есть другой способ:
function GetModuleFileNameW(hModule: HINST; lpFilename: PWideChar; nSize: DWORD): DWORD; stdcall;
Мне этими функциями пользоваться не доводилось, поэтому оформляю свой ответ как пост в форуме.
Экспериментируй.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
27 февраля 2011, 21:23: Вопрос перемещён из тематического раздела Delphi » Общие вопросы по программированию в раздел Delphi » Работа с файловой системой модератором Ерёмин А.А.
|
Вадим К (статус: Академик), 28 февраля 2011, 10:23 [#2]:
Там то на самом деле не знаки вопроса. Просто английская винда глупенькая и символы кириллицы отобразить не может. Ну не знает она их. Но это абсолютно не мешает ей оперировать ими.
То, откуда запустился exe файл точно определяется по строке Application.ExeName.
Галочка "подтверждения прочтения" - вселенское зло.
|
|
mikelll (статус: Посетитель), 14 марта 2011, 20:50 [#3]:
var
dir: string;
begin
GetDir(0,dir);
end;
после этого в переменной dir будет записано путь к ехе фаилу
если у него такое расположение
С:/my/программы/test.exe
то в dir будет записано
С:/my/программы
|
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|