@starkdm

Как получить путь к исходному файлу?

Нужна функция, которая получала бы путь к своему телу (исполняемому файлу):
LPWSTR s;
GetModuleFileName(GetModuleHandle(NULL), s, 260);

Если так, то заявляет, что использована не инициализированная переменная s. Если использовать тип WCHAR, то получаю длину пути, а не сам путь. Может, это вообще не та функция?

Нужно так же реализовать следующие задачи:
Получить все файлы и подпапки в определённой папке.
Открыть файл для дозаписи в конец.
  • Вопрос задан
  • 1487 просмотров
Пригласить эксперта
Ответы на вопрос 2
Adamos
@Adamos
Просто напомню, что в этом веке файлы программы уже не пишут свои файлы туда же, где находится программа.
Потому что, например, в Виндах программе положено лежать в Program Files, а пользователь туда ничего писать не имеет прав. В других системах та же логика.
У вас, возможно, просто старая методичка, но лучше сразу не учиться плохому.
Есть пользовательские папки специально для этих целей, и у кроссплатформенных библиотек есть стандартные функции для получения пути к ним. Потому что реальный путь зависит от версии ОС и имени пользователя.

Как это сделать только под винды - можно посмотреть, например, тут
Ответ написан
@MiiNiPaa
Если так, то заявляет, что использована не инициализированная переменная s

Но она у вас действительно не инициализирована.

LPWSTR это WCHAR*. То есть указатель на массив WCHAR. При объявлении нужно убедится что он указывает в валидную область памяти.
Например так:
const std::size_t buf_len = 260;
LPTSTR s = new TCHAR[buf_len]; 
auto path_len = GetModuleFileName(GetModuleHandle(NULL), s, buf_len);
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы