C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
Совершенно тупой вопрос :((, Как получить путь откуда запущена прога?
Slon
Отправлено: 17.12.2004, 14:31


Ученик-кочегар

Группа: Участник
Сообщений: 19



Как получить путь откуда запущена программа?
Guest
Отправлено: 17.12.2004, 14:46


Не зарегистрирован







Например Application->ExeName
или как принято в C первый из массива строк
Slon
Отправлено: 17.12.2004, 14:54


Ученик-кочегар

Группа: Участник
Сообщений: 19



а там полный путь? мне почему-то казалось, что там только имя запускаемого файла...
Пойду проверю
Slon
Отправлено: 17.12.2004, 15:27


Ученик-кочегар

Группа: Участник
Сообщений: 19



Спасибо большое! Вы очень помогли =))
Dimon.Ru
Отправлено: 17.12.2004, 15:48


Станционный диспетчер

Группа: Участник
Сообщений: 92



А что бы получить именно путь, а не имя файла, можно написать так:
CODE
ExtractFilePath(Application->ExeName);
Konstantine
Отправлено: 17.12.2004, 16:06


Мастер участка

Группа: Модератор
Сообщений: 545



НЕТ!!!
это не тот путь...
если нада путь, откуда была запущена прога (а это НЕ путь к ЕКЗЕ файлу), то нада в начале выполнения проги вызвав что-то типа GetCurrentPath() записать его в прогу... т.к. после того, как если текущий путь будет изменён, то его никак не достать sad.gif
Dimon.Ru
Отправлено: 17.12.2004, 16:36


Станционный диспетчер

Группа: Участник
Сообщений: 92



точно! есть функция GetCurrentDir()
Slon
Отправлено: 17.12.2004, 22:47


Ученик-кочегар

Группа: Участник
Сообщений: 19



Мне был нужен именно путь где exe-шник лежит... Интересно как можно запустить прогу, так чтобы текущий путь не совпал с путем к exe файлу?
smile.gif
Konstantine
Отправлено: 20.12.2004, 09:14


Мастер участка

Группа: Модератор
Сообщений: 545



1) нормально задавай вопрос — т.к. у тебя было именно ОТКУДА была запущена прога.
2) путь откуда была запущена прога (при запуске проги = текущему пути) можно изменить напр. так:
свойства ярлыка:
обьект: c:\windows\system32\calc.exe
рабочая папка: c:\

в Этом случае EXE-шник лежит там гда и лежал (в system32) но запущен был из c:\
аналогично при запуске проги из командной строки (строка Run или Far) с написанием полного или промежуточного пути....

3) про EXE-шник говорили, на всяк случай:
CODE
ExtractFilePath(Application->ExeName);
Boyko
Отправлено: 20.12.2004, 10:45


Станционный диспетчер

Группа: Участник
Сообщений: 88



QUOTE (Slon @ 17/12/2004, 22:49)
Интересно как можно запустить прогу, так чтобы текущий путь не совпал с путем к exe файлу?
smile.gif

А когда-то "под DOS"работали и каждый человек знал... biggrin.gif
Treumer
Отправлено: 20.12.2004, 16:15


Станционный диспетчер

Группа: Участник
Сообщений: 92



QUOTE (Boyko @ 20/12/2004, 11:47)
QUOTE (Slon @ 17/12/2004, 22:49)
Интересно как можно запустить прогу, так чтобы текущий путь не совпал с путем к exe файлу?
smile.gif

А когда-то "под DOS"работали и каждый человек знал... biggrin.gif

"Все больше становилось программистов, все дальше они становились от операционной системы" (с)
biggrin.gif
Gedeon
Отправлено: 20.12.2004, 16:28


Ветеран

Группа: Модератор
Сообщений: 1742



QUOTE (Slon @ 17/12/2004, 23:49)
Интересно как можно запустить прогу, так чтобы текущий путь не совпал с путем к exe файлу?
smile.gif

Кстати говоря, текущий путь может не совпадать с путем к ехе если даже прога была запущена оттуда, но потом из др. места открывался файл, нек-рых это удивляет. smile.gif
xim
Отправлено: 21.12.2004, 11:37


Станционный диспетчер

Группа: Участник
Сообщений: 143



В общем случае (для получения пути к любому модулю программы — exe,dll,ocx ... ) можно использовать:

CODE

AnsiString get_file_path()
{
 char szPath[512];
 if(GetModuleFileName(GetModuleHandle(NULL),szPath,sizeof(szPath)))
 return ExtractFilePath(szPath);
}

xim
Отправлено: 21.12.2004, 11:39


Станционный диспетчер

Группа: Участник
Сообщений: 143



Забыл упомянуть, что звать данн.функц. нужно естественно из модуля,
путь к которому нужно получить

Вернуться в Вопросы программирования в C++Builder