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

Обсуждение

Неизвестный
09.02.2009, 13:18
общий
это ответ
Здравствуйте, Тимур!

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

FilePath := ExtractFilePath(ParamStr(0));
давно
Профессионал
153662
1070
09.02.2009, 14:19
общий
Могу добавить к ответу Лукьяненко Алексея, если в этой же папки с программой находятся другие файлы к ним можно добраться если дописать FilePath := ExtractFilePath(ParamStr(0) + 'ваш файл'); таким образом я определяю нужные мне файлы и это работает хоть запиши на диск, хоть на флэшку, проверено не раз и не на одном компе.
Об авторе:
Мои программы со статусом freeware для Windows на моём сайте jonix.ucoz.ru

Неизвестный
09.02.2009, 15:08
общий
это ответ
Здравствуйте, Тимур!
Используйте функцию ExtractFilePath(Application.ExeName):string;
дело в том, что функция GetCurrentDir возвращает путь к текущей директории, если пользователи откроет любую папку, то текущая директория укажет на нее.
Application.ExeName содержит полный путь к файлу включая его имя.
ExtractFilePath возвращает путь к файлу с завершающим слешем ""
Неизвестный
09.02.2009, 15:10
общий
Функция ExtractFilePath(ParamStr(0)); вернет путь "C:\Program" Так как пробел тоже является разделителем параметров.
Неизвестный
09.02.2009, 15:23
общий
2 monah

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

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

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