Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.02.2011, 13:57   #1
sheva_ya
Новичок
Джуниор
 
Регистрация: 17.02.2011
Сообщений: 1
По умолчанию Как определить каталог из которого запущен .exe файл

Проблема в следующем:
При запуске программы, в обработчике Form.Create, мне нужно узнать полный адрес каталога из которого запущен .exe файл, т.е. в таком виде D:\Programs\...\MyProgram\Project1. exe
sheva_ya вне форума Ответить с цитированием
Старый 17.02.2011, 14:31   #2
VadikV
Форумчанин
 
Аватар для VadikV
 
Регистрация: 08.01.2011
Сообщений: 226
По умолчанию

Application.ExeName дает полный путь с именем файла
icq 223-630-454
e-mail vysotskiy@list.ru
сайт http://www.big-library.net/
VadikV вне форума Ответить с цитированием
Старый 17.02.2011, 15:59   #3
veniside
Старожил
 
Регистрация: 03.01.2011
Сообщений: 2,508
По умолчанию

Обычно используют ParamStr(0), т.к. Аппликейшн не всегда под рукой )
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
veniside вне форума Ответить с цитированием
Старый 17.02.2011, 16:16   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от veniside
Обычно используют ParamStr(0), т.к. Аппликейшн не всегда под рукой )
в общем случае, я с Вами согласен. Это и проще и более универсально.
если заглянуть чуть поглубже, то в модуле Forms:
Цитата:
Код:
function TApplication.GetExeName: string;
begin
  Result := ParamStr(0);
end;
справедливости ради надо отметить, что раз в вопросе TC прозвучало "в обработчике Form.Create" - то доступ к Application у него однозначно есть
Serge_Bliznykov вне форума Ответить с цитированием
Старый 17.02.2011, 17:09   #5
xwicked
Участник клуба
 
Аватар для xwicked
 
Регистрация: 21.03.2010
Сообщений: 1,508
Лампочка

Ещё вариант, каким я пользуюсь(только каталог):
Код:
var
  dir : string;

begin
  // Получаем текущую директорию
  dir := GetCurrentDir;
end;
Google - лучший помощник программиста.
---
моя лаборатория | мой FaceBook
xwicked вне форума Ответить с цитированием
Старый 17.02.2011, 18:22   #6
veniside
Старожил
 
Регистрация: 03.01.2011
Сообщений: 2,508
По умолчанию

текущая директория имеет достаточно отдалённое отношение к "полный адрес каталога из которого запущен .exe файл".
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
veniside вне форума Ответить с цитированием
Старый 17.02.2011, 19:00   #7
xwicked
Участник клуба
 
Аватар для xwicked
 
Регистрация: 21.03.2010
Сообщений: 1,508
Лампочка

Цитата:
Сообщение от veniside Посмотреть сообщение
текущая директория имеет достаточно отдалённое отношение к "полный адрес каталога из которого запущен .exe файл".
Название темы: Как определить каталог из которого запущен .exe файл
потом, "полный адрес каталога из которого запущен .exe файл".

Вопрос не стоял об полном имени исполняемого файла.

Даже такой код:
Код:
var
  dir : string;

begin
  SetCurrentDir('C:\');
  // Получаем текущую директорию
  dir := GetCurrentDir;
end;
dir
возвращает ту директорию(каталог), из которой запущен исполняемый файл.
Google - лучший помощник программиста.
---
моя лаборатория | мой FaceBook
xwicked вне форума Ответить с цитированием
Старый 17.02.2011, 19:06   #8
veniside
Старожил
 
Регистрация: 03.01.2011
Сообщений: 2,508
По умолчанию

> Вопрос не стоял об полном имени исполняемого файла.

OK, принимается:

Код:
ExeDir = ExtractFilePath(ParamStr(0));
Но ни в коем случае не GetCurrentDir(), который может вернуть вобще что угодно.

> Даже такой код .... возвращает ту директорию(каталог), из которой запущен исполняемый файл.

хм.. а у меня такой код возвращает "С:\", как он и должен возвращать, хотя файл запущен совсем не из корня диска С:
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
veniside вне форума Ответить с цитированием
Старый 17.02.2011, 19:31   #9
xwicked
Участник клуба
 
Аватар для xwicked
 
Регистрация: 21.03.2010
Сообщений: 1,508
По умолчанию

veniside, возможно, но я всегда использовал GetCurrentDir и никогда проблем не возникало. У меня побывало от Delphi7, до, сейчас 2010 - рабочий код приводил...
sheva_ya, есть выбор, что для Вас будет удобнее.
Google - лучший помощник программиста.
---
моя лаборатория | мой FaceBook
xwicked вне форума Ответить с цитированием
Старый 17.02.2011, 20:00   #10
veniside
Старожил
 
Регистрация: 03.01.2011
Сообщений: 2,508
По умолчанию

Видимо, у вас в проектах нет Open/Save диалогов, например. Они меняют текущую дерикторию. Да и файл может быть запущен с предустановленным рабочим (текущим) каталогом. Это легко проверить, создав shortcut на ваш файл и задав в свойствах shortcut-а какой угодно стартовый каталог, отличный от каталога с .ехе.
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
veniside вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как привязать текстовый файл имя которого меняется. SergeyK Microsoft Office Excel 8 28.10.2010 14:16
Найти окно программы ксли запущен exe Человек_Борща Общие вопросы Delphi 2 28.08.2010 12:39
Как удалить exe если он запущен? jone Общие вопросы Delphi 31 07.06.2010 13:33
Как 'засунуть' звуковой файл в EXE-шник.чтоб моя прога состояла всего из одного exe betirsolt Общие вопросы Delphi 11 18.04.2010 21:58
из Паскаля определить запущен ли Windows Трофимов Александр Паскаль, Turbo Pascal, PascalABC.NET 9 14.06.2007 15:25