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

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

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 06.07.2008, 04:35   #1
Спартак
Пользователь
 
Регистрация: 01.02.2008
Сообщений: 44
По умолчанию Проблемы с установленной программой

Доброго времени суток!
Подскажите, может кто знает в чем проблема...
Есть программа, написанная на дельфи. Она использует картинки, которые хранятся в подпапке Resourses (картинки подгружаются в Image).
С помощью программы InnoSetup сделал установщик, но возникла проблема. Досустим, что программа установилась в C:\MyProgram. Так если запускать ее из этой папки -все нормально, а если запускать ее с ярпыка на рабочем столе или через меню Пуск - говорит, что картинки не найдены.
В чем проблема?
Спартак вне форума Ответить с цитированием
Старый 06.07.2008, 04:41   #2
_Engine_
Форумчанин
 
Регистрация: 29.06.2008
Сообщений: 603
По умолчанию

Проблема в том, что в твоей программе при определении пути к папке с картинками нужно использовать такой способ:
ExtractFilePath(ParamStr(0))
а ты скорее всего пользуешь такой способ:
GetDir / GetCurrentDir

Угадал?
_Engine_ вне форума Ответить с цитированием
Старый 06.07.2008, 05:04   #3
_Engine_
Форумчанин
 
Регистрация: 29.06.2008
Сообщений: 603
По умолчанию

Кстати, можешь еще в свойствах ярлыка прописать "правильную" рабочую папку. Тогда в программе можешь пока ничего не править.
_Engine_ вне форума Ответить с цитированием
Старый 06.07.2008, 09:39   #4
Спартак
Пользователь
 
Регистрация: 01.02.2008
Сообщений: 44
По умолчанию

Цитата:
Сообщение от _Engine_ Посмотреть сообщение
Проблема в том, что в твоей программе при определении пути к папке с картинками нужно использовать такой способ:
ExtractFilePath(ParamStr(0))
а ты скорее всего пользуешь такой способ:
GetDir / GetCurrentDir

Угадал?
ага.. я потом прочитал про ParamStr(0) но как представил, сколько всего править надо - аж страшно стало ))

Цитата:
Сообщение от _Engine_ Посмотреть сообщение
Кстати, можешь еще в свойствах ярлыка прописать "правильную" рабочую папку. Тогда в программе можешь пока ничего не править.
что значит правильная рабочая папка?? напиши кнкретно где прописывать
Спартак вне форума Ответить с цитированием
Старый 06.07.2008, 11:16   #5
woo
 
Регистрация: 05.07.2008
Сообщений: 4
По умолчанию

Цитата:
что значит правильная рабочая папка?? напиши кнкретно где прописывать
В свойствах ярлыка. Должна совпадать с папкой, где лежит приграмма.
woo вне форума Ответить с цитированием
Старый 06.07.2008, 15:11   #6
Спартак
Пользователь
 
Регистрация: 01.02.2008
Сообщений: 44
По умолчанию

Цитата:
Сообщение от woo Посмотреть сообщение
В свойствах ярлыка. Должна совпадать с папкой, где лежит приграмма.
а как путь может не совпадать, если программа все-таки запускается? она пытается работать, но постоянно выдает ошибку... если программа установлена в c:\Program, то картинки находятся в c:\Program\Resourses. И это действительно так... НО!!! когда я запускаю с раб. стола мне говорят, что невозможно найти файл c:\Program\Resourses\Resourses\pic1 .bmp!!!!
Почему он Resourses 2 раза пишет??
Спартак вне форума Ответить с цитированием
Старый 06.07.2008, 17:02   #7
zetrix
Delphi/C++/C#
Участник клуба
 
Аватар для zetrix
 
Регистрация: 29.10.2006
Сообщений: 1,972
По умолчанию

Потому что вы ошиблись при написании программы. На расстоянии ваш код не видим. Либо выкладывайте, либо ищите ошибку сами.
zetrix вне форума Ответить с цитированием
Старый 06.07.2008, 17:52   #8
Спартак
Пользователь
 
Регистрация: 01.02.2008
Сообщений: 44
По умолчанию

Цитата:
Сообщение от zetrix Посмотреть сообщение
Потому что вы ошиблись при написании программы. На расстоянии ваш код не видим. Либо выкладывайте, либо ищите ошибку сами.
ок!
Суть состоит в том, что имеется пара сотен лампочек и пара десятков кнопок. Все это счастье размещается на 6 форм. Надо сделать так, чтобы лампочки "зажигались" разным цветом в зависимости от нажатых кнопок.
В программе событие "зажечь лампочку" выглядит либо так:

Image1.Picture.LoadFromFile('Resour ses/pick1.bmp');

либо так:
Image1.Picture := Image2.Pictire

Т.е. файл pick1.bmp находится во вложенной подпапке. При запуске с ярлыка вылетает та самая ошибка, что не найден файл c:\Program\Resourses\Resourses\pick 1.bmp.


2_Engine_
понял, что именно ты имел ввиду... исправил - заработало... возник другой вопрос: как сделать так, чтобы эта рабочая папка прописывалась автоматом?

P.S. я не преувеличиваю, когда говорю о паре сотен лампочек ))) это реально так поэтому мне так страшно переделывать
Спартак вне форума Ответить с цитированием
Старый 06.07.2008, 18:06   #9
eoln
Старожил
 
Аватар для eoln
 
Регистрация: 26.04.2008
Сообщений: 2,645
По умолчанию

Вот так можно
Код:
var Path: string;
...
Path := sysutils.ExtractFilePath(application.ExeName) + 'Resourses\';
Image1.Picture.LoadFromFile(PChar(Path + 'pick1.bmp'));
тогда и ярлык не при чём будет и работать должно
eoln вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите с программой ПлЗ. Manoff Общие вопросы Delphi 1 25.02.2008 04:41
Проблема с программой eks-s Общие вопросы Delphi 9 06.02.2008 09:47
Помогите с программой! MAKEDON Общие вопросы Delphi 3 27.12.2007 13:46
Проблема с программой Dues Помощь студентам 1 19.11.2007 01:46
Помогите с программой для WI Fi Ылыл Работа с сетью в Delphi 5 23.05.2007 15:09