![]() |
|
![]() ![]() ![]() |
|
Лена |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 879 Регистрация: 16.8.2006 Репутация: 11 Всего: 11 |
Помогите разобраться с инсталляцией программы. У меня есть код, который читает настройки из ini файла. Фрагмент кода ниже:
Если я запускаю свое приложение из папки, где расположен файл ADO.ini то все нормально. Затем я с помощью программы инсталляции InstallSheld создаю setup.exe. При создании в настройках я прописываю создавать ярлык на Рабочем столе. Так вот, при запуске приложения при щелчке на этот ярлык на Рабочем столе я получаю сообщение из кода выше: "Нe удалось прочитать настройки соединения. Файл ADO.ini не найден". Иду в папку, куда прописала установить программу, вижу там саму программу и файл ADO.ini, почему же срабатывает оператор else при запуске программы с Рабочего стола? Подскажите, как правильно организовать код выше, чтобы после инсталляции программа запускалась из ярлыка на рабочем столе. Спасибо. |
|||
|
||||
_hunter |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 8564 Регистрация: 24.6.2003 Где: Europe::Ukraine:: Kiev Репутация: 24 Всего: 98 |
проверь отладчиком что в Application->ExeName (или MessageBox с ним выведи перед ExtractFilePath)...
-------------------- Tempora mutantur, et nos mutamur in illis... |
|||
|
||||
ama_kid |
|
|||
![]() АСУТП-кодер ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1460 Регистрация: 5.3.2007 Где: Москва Репутация: 10 Всего: 95 |
Есть подозрение, что в свойствах ярлыка устанавливается рабочая папка, отличная от папки программы. Тогда FileExists("ADO.ini")!=FileExists(Path) и, следовательно, программа не находит ни в рабочей, ни в системных папках этого файла... Может правильнее написать так? :
-------------------- самурай без меча подобен самураю с мечом, но только без меча |
|||
|
||||
Лена |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 879 Регистрация: 16.8.2006 Репутация: 11 Всего: 11 |
В свойствах ярлыка написано: "C:\Program Files\Access\Access.exe" В папку Access попадает программа и файл ini.
Код ниже:
показывает: C:\Program Files\Access\Access.exe Если использовать так:
то все вроде начинает работать нормально. Значит ошибка здесь: if(FileExists("ADO.ini")). Получается в эту функцию, в моем случае, надо передавать весь путь, потому что функция FileExists не находит файл в директории проекта, без полного пути... |
||||
|
|||||
dumb |
|
|||
![]() sceloglauxalbifacies ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2929 Регистрация: 16.6.2006 Репутация: 32 Всего: 158 |
нет ни одной функции, работающей с файлами/папками, которая "ищет в директории проекта". если не указан полный путь, все функции работают относительно текущей папки(current dir, в свойствах ярлыка зовется "Рабочей папкой"), которая вовсе не обязательно является папкой, куда ты .exe положила. можешь провести эксперимент - ShowMessage(GetCurrentDir()). либо указывать везде полные пути, собранные по аналогии твоего Path, либо можно при запуске выставлять текущей папку с .exe ( SetCurrentDir(ExtractFileDir(Application->ExeName)) ). только нужно иметь ввиду, что некоторые операции меняют текущую папку, как, например, диалог открытия файлов(если не указана опция ofNoChangeDir). |
|||
|
||||
![]() ![]() ![]() |
Правила форума "С++ Builder" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C++ Builder | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |