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() записать его в прогу... т.к. после того, как если текущий путь будет изменён, то его никак не достать
|
|
Dimon.Ru |
Отправлено: 17.12.2004, 16:36 |
|
Станционный диспетчер
Группа: Участник
Сообщений: 92
|
точно! есть функция GetCurrentDir() |
|
Slon |
Отправлено: 17.12.2004, 22:47 |
|
Ученик-кочегар
Группа: Участник
Сообщений: 19
|
Мне был нужен именно путь где exe-шник лежит... Интересно как можно запустить прогу, так чтобы текущий путь не совпал с путем к exe файлу?
|
|
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 файлу?
|
А когда-то "под DOS"работали и каждый человек знал... |
|
Treumer |
Отправлено: 20.12.2004, 16:15 |
|
Станционный диспетчер
Группа: Участник
Сообщений: 92
|
QUOTE (Boyko @ 20/12/2004, 11:47) | QUOTE (Slon @ 17/12/2004, 22:49) | Интересно как можно запустить прогу, так чтобы текущий путь не совпал с путем к exe файлу?
|
А когда-то "под DOS"работали и каждый человек знал... |
"Все больше становилось программистов, все дальше они становились от операционной системы" (с)
|
|
Gedeon |
Отправлено: 20.12.2004, 16:28 |
|
Ветеран
Группа: Модератор
Сообщений: 1742
|
QUOTE (Slon @ 17/12/2004, 23:49) | Интересно как можно запустить прогу, так чтобы текущий путь не совпал с путем к exe файлу?
|
Кстати говоря, текущий путь может не совпадать с путем к ехе если даже прога была запущена оттуда, но потом из др. места открывался файл, нек-рых это удивляет.
|
|
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
|
Забыл упомянуть, что звать данн.функц. нужно естественно из модуля,
путь к которому нужно получить |
|