Родились сегодня:
wadim21


Лидеры рейтинга

ID: 401284

Михаил Александров

Советник

378

Россия, Санкт-Петербург


ID: 259041

Алексеев Владимир Николаевич

Мастер-Эксперт

339

Россия, пос. Теплоозёрск, ЕАО


ID: 401888

puporev

Профессор

215

Россия, Пермский край


ID: 405338

vovaromanov.jr

1-й класс

116


ID: 400669

epimkin

Профессионал

111


ID: 242862

Hunter7007

Мастер-Эксперт

29

Россия, Омск


ID: 137394

Megaloman

Мастер-Эксперт

25

Беларусь, Гомель


8.10.2

13.10.2021

JS: 2.10.2
CSS: 4.6.0
jQuery: 3.6.0
DataForLocalStorage: 2021-10-23 05:16:01-standard


Создание программ на языках Pascal, Delphi и Lazarus.

Администратор раздела: Зенченко Константин Николаевич (Старший модератор)

Консультация онлайн # 159995

Раздел: Pascal / Delphi / Lazarus
Автор вопроса: Тимур
Дата: 09.02.2009, 12:55 Консультация закрыта
Поступило ответов: 2

Здравствуйте уважаемые эксперты. Столкнулся со следующей проблемой: написал программу, которая записана на CD-диск и запускаться должна только с диска, проблема в том что на разных компьютерах файлы записанные с программой на диске не открываются (элементарно неправильно определяется путь к файлу). Пожалуйста подскажите, как решить эту проблему.
P.S Для определения пути к файлу пользовался функцими GetCurrentDir, ExtractFilePath.

Ответ # 243239 от Лукьяненко Алексей Валериевич
Здравствуйте, Тимур!

Путь к каталогу, из которого запущен файл программы:

FilePath := ExtractFilePath(ParamStr(0));

Лукьяненко Алексей Валериевич

Посетитель
09.02.2009, 13:18
Ответ # 243247 от monah
Здравствуйте, Тимур!
Используйте функцию ExtractFilePath(Application.ExeName):string;
дело в том, что функция GetCurrentDir возвращает путь к текущей директории, если пользователи откроет любую папку, то текущая директория укажет на нее.
Application.ExeName содержит полный путь к файлу включая его имя.
ExtractFilePath возвращает путь к файлу с завершающим слешем "\"

monah

Посетитель
09.02.2009, 15:08
Мини-форум консультации # 159995

q_id

Евгений/Genia007/

Профессионал

ID: 153662

1

= общий =    09.02.2009, 14:19

Могу добавить к ответу Лукьяненко Алексея, если в этой же папки с программой находятся другие файлы к ним можно добраться если дописать FilePath := ExtractFilePath(ParamStr(0) + 'ваш файл'); таким образом я определяю нужные мне файлы и это работает хоть запиши на диск, хоть на флэшку, проверено не раз и не на одном компе.

=====
Мои программы со статусом freeware для Windows на моём сайте jonix.ucoz.ru

monah

2

= общий =    09.02.2009, 15:10

Функция ExtractFilePath(ParamStr(0)); вернет путь "C:\Program" Так как пробел тоже является разделителем параметров.

Лукьяненко Алексей Валериевич

3

= общий =    09.02.2009, 15:23

2 monah

Интересно, а Вы сами пробовали положить проект в Program files и получить путь к нему через ParamStr(0) ?

Прекрасно все возвращает, несмотря ни на какие пробелы...

Ваш способ тоже работает, но только для GUI-приложений, использующих VCL. Если писать консольное приложение или не пользоваться VCL - то объекта Application не будет.
ParamStr(0) - более универсальный способ

неизвестный

4

= общий =    09.02.2009, 17:31

Всем большое спасибо!

Возможность оставлять сообщения в мини-форумах консультаций доступна только после входа в систему.
Воспользуйтесь кнопкой входа вверху страницы, если Вы зарегистрированы или пройдите простую процедуру регистрации на Портале.

Лучшие эксперты раздела

puporev

Профессор

Рейтинг: 215

Зенченко Константин Николаевич

Старший модератор

Рейтинг: 165

Gluck

9-й класс

Рейтинг: 79

Лысков Игорь Витальевич

Мастер-Эксперт

Рейтинг: 0

Асмик Гаряка

Советник

Рейтинг: 0

Орловский Дмитрий

Мастер-Эксперт

Рейтинг: 0