Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 5 053

/ вопрос открыт /

Здравствуйте!

Вопрос простой. Как узнать текущую папку, где находится программа.
Но задача не совсем проста. Например, в англоязычной версии ОС, где в пути используют кириллицу, функция GetCurrentDir выдает следующее: "C:\Users\???\" Вместо кириллицы знаки вопроса, поэтому не определить путь, где находится приложение. Если приложение в автозагрузке, то GetCurrentDir = "C:\WINDOWS" и выходит, что не узнать папку приложения, и даже не установить её как текущую.

Вопрос таков: как установить текущей папку запускаемого приложения?

VKHacker Вопрос ожидает решения (принимаются ответы, доступен мини-форум)

Вопрос задал: VKHacker (статус: 1-ый класс)
Вопрос отправлен: 26 февраля 2011, 19:58
Состояние вопроса: открыт, ответов: 0.


Мини-форум вопроса

Всего сообщений: 3; последнее сообщение — 14 марта 2011, 20:50; участников в обсуждении: 3.
min@y™

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

mikelll (статус: Посетитель), 14 марта 2011, 20:50 [#3]:

var
dir: string;
begin
GetDir(0,dir);    
end;
после этого в переменной dir будет записано путь к ехе фаилу
если у него такое расположение
С:/my/программы/test.exe
то в dir будет записано
С:/my/программы

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 11:40
Выполнено за 0.03 сек.