Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как определить директорию с программой? Путь, откуда прога запущена... 
:(
    Опции темы
TheAviator
Дата 28.9.2003, 21:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 219
Регистрация: 28.9.2003
Где: Николаев-Киев

Репутация: нет
Всего: нет



Нужно из программы узнать, откуда она запущена, т.е. путь к ней..
Подскажите, плз, в факе не нашел..
PM MAIL WWW ICQ   Вверх
x77
Дата 28.9.2003, 21:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1255
Регистрация: 25.3.2002

Репутация: 19
Всего: 22



ParamsStr (0) всегда возвращает путь и имя запущенного файла, а сами параметры нумеруются с единицы, т.е.
Код

procedure TForm1.FormCreate(Sender: TObject);
begin
 ShowMessage (ExtractFileDir (ParamStr (0)));
end;



--------------------
Я никогда не сопротивлялся искушению, поскольку узнал: что мне
не нравится, то меня не искушает.
© Джордж Бернард Шоу (Ирландия)
PM MAIL ICQ   Вверх
remax
Дата 28.9.2003, 22:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доцент
**


Профиль
Группа: Участник Клуба
Сообщений: 686
Регистрация: 7.4.2002
Где: Украина, Харьков

Репутация: 1
Всего: 5



Цитата
ParamsStr (0) всегда возвращает путь и имя запущенного файла


Имя то возвращает всегда. А путь? Например, если вызвать программу из текущего каталога?

На самом деле, в Delphi получить родной для программы каталог можно так:
ExtractFilePath(Application.ExeName)


--------------------
Как бы ты не старался быть хорошим и правильным человеком с принципами и уважительным отношением к другим, всегда найдется кто-то, кто бросит в тебя какашку
PM MAIL ICQ Skype   Вверх
x77
Дата 28.9.2003, 22:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1255
Регистрация: 25.3.2002

Репутация: 19
Всего: 22



Цитата
Например, если вызвать программу из текущего каталога?


да откуда угодно. нажимаем Ctrl, левой кнопкой мыша давим на ParamStr. любуемся на дельфийский исходник:

Код
function ParamStr(Index: Integer): string;
var
 P: PChar;
 Buffer: array[0..260] of Char;
begin
 Result := '';
 if Index = 0 then
   SetString(Result, Buffer, GetModuleFileName(0, Buffer, SizeOf(Buffer)))
 else
 ... // ну и т.д., нас это уже не волнует.
end;


лезем в Win32 SDK поглядеть на GetModuleName:

Цитата
The GetModuleFileName function retrieves the full path and filename for the executable file containing the specified module.


т.е., ParamStr (0) всегда возвращает полный путь и имя к запущенному файлу.

любопытства ради, глянем на твой вариант. с ExtractFilePath всё понятно. нажимаем Ctrl, левой кнопкой мыша на ExeName. имеем:
Код
   property ExeName: string read GetExeName;


находим функцию GetExeName:
Код
function TApplication.GetExeName: string;
begin
 Result := ParamStr(0);
end;



забавно, правда?

Это сообщение отредактировал(а) x77 - 28.9.2003, 22:44


--------------------
Я никогда не сопротивлялся искушению, поскольку узнал: что мне
не нравится, то меня не искушает.
© Джордж Бернард Шоу (Ирландия)
PM MAIL ICQ   Вверх
TheAviator
Дата 28.9.2003, 22:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 219
Регистрация: 28.9.2003
Где: Николаев-Киев

Репутация: нет
Всего: нет



Спасибы, помогло. Приятно, что так оперативно и четко ответы получил.
PM MAIL WWW ICQ   Вверх
December
Дата 29.9.2003, 19:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Antitheorist
****


Профиль
Группа: Участник
Сообщений: 4423
Регистрация: 14.8.2002
Где: Харьков

Репутация: 8
Всего: 57



x77, не лень копаться было? Просто проверить было не проще? smile.gif


--------------------
Для друзей с винграда - скидки на разработку сайтов
PM MAIL WWW ICQ   Вверх
x77
Дата 29.9.2003, 19:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1255
Регистрация: 25.3.2002

Репутация: 19
Всего: 22



всё на свете не проверишь smile.gif когда я понимаю, что реально происходит за той или иной строчкой кода, мне как-то жить спокойнее smile.gif и проверять ничего не надо.


--------------------
Я никогда не сопротивлялся искушению, поскольку узнал: что мне
не нравится, то меня не искушает.
© Джордж Бернард Шоу (Ирландия)
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0524 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.