![]() |
|
|
![]()
|
|
| Лена |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 879 Регистрация: 16.8.2006 Репутация: 11 Всего: 11 |
Если приложение разрабатывается и в локальной сети есть сервер баз данных, то все происходит нормально. Все работает. Готовый exe файл соединяется с базой данных и загружает в гриды данные. Если этот готовый exe файл перенести в удаленную сеть правильно настроить соединение, то тоже все работает нормально. Однако если на этом удаленном компьютере попробовать откомпилировать проект, то получаю окно, с которым не знаю, как бороться. Получается я могу разрабатывать приложения только в локальной сети, где расположен сервер баз данных, а на удаленном компьютере другое сети компилировать его не могу? Подскажите, как быть?
Я поставила на вкладке Сode Guard все галочки. Но никаких ошибок он не пишет. В FormCreate доходит до строки DataModule2->ClientDataSetKey->Open(); и затем это окно CPU. Это сообщение отредактировал(а) Лена - 12.4.2007, 13:00 Присоединённый файл ( Кол-во скачиваний: 20 )
sos.gif 24,88 Kb |
|||
|
||||
| ama_kid |
|
||||
![]() АСУТП-кодер ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1460 Регистрация: 5.3.2007 Где: Москва Репутация: 10 Всего: 95 |
Нало бороться с причиной, а не со следствием...
Учиться пользоваться дебагом, ловить исключения и правильно обрабатывать ошибки.
P.S. Кстати, судя по тому, что без среды эта программа работает корректно - есть подозрение, что данный код - лишний... -------------------- самурай без меча подобен самураю с мечом, но только без меча |
||||
|
|||||
| Лена |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 879 Регистрация: 16.8.2006 Репутация: 11 Всего: 11 |
Если закомментировать код в FormCreate, то код компилируется. Может быть это связано с созданием DataModule? Может он не успевает создаться? Он у меня первый в списке Auto create forms.
Как смотртреть трассировкой? Научите. |
|||
|
||||
| ama_kid |
|
|||
![]() АСУТП-кодер ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1460 Регистрация: 5.3.2007 Где: Москва Репутация: 10 Всего: 95 |
FormCreate - это метод, вызываемый в момент создания формы и неважно, каким по счету он стоит у тебя в AutoCreateForms, вполне возможно, что компоненты не успевают создаться к моменту, когда ты вызываешь их методы (в данном случае, ты вызываешь метод Open() компонента DataModule). Использовать методы формы (или её компонентов) в момент её создания - мало того, что плохой стиль, но и принципиально неправильно, ибо метод может обращаться к переменным и объектам, для которых еще не выделена память... Но вообще, надо смотреть конкретно код, а не гадать просто так...
Посмотри тут (и конкретно третий пункт) -------------------- самурай без меча подобен самураю с мечом, но только без меча |
|||
|
||||
| Лена |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 879 Регистрация: 16.8.2006 Репутация: 11 Всего: 11 |
Я переместила весь код для эксперимента в OnShow формы. Не помогло.
Устанавливаю точку останова в самом начале кода. Начинаю компилировать. Доходит до точки останова, далее используя клавишу F8, спускаюсь вниз по коду. Когда дохожу до строки DataModule2->ClientDataSetKey->Open(); выскакивает окно CPU. Жму дальше, получаю еще одно окно (см. рис.) на втором разе. Жму в нем ОК и опять жму F8 после нескольких раз опять это окно на фоне окна CPU. Спасибо за сссылку. Сейчас посмотрю. P.S. После длительных экспериментов выявила что СPU ругается на строку: DataModule2->ADOConnection1->Connected = true; В настройках соединения делаю тест, пишет все нормально, а при компиляции выдает CPU. Это сообщение отредактировал(а) Лена - 12.4.2007, 17:46 Присоединённый файл ( Кол-во скачиваний: 15 )
new_1.gif 5,59 Kb |
|||
|
||||
| Vyacheslav |
|
||||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2124 Регистрация: 25.3.2002 Где: Москва Репутация: 47 Всего: 59 |
Сколько можно уже твердить:
" Не пользуйтесь событием OnCreate" В С++ для этого существуют конструкторы.
DataModule - первый? Вообще первая в списке форма автоматически становится главной и ее время жизни определяет время жизни приложения. А у Вас первым оказывается DataModule. Ну, не знаю. Может конечно Билдер разруливает данный момент и берет в качестве главно1 формы не первого в списке вообще, а первую форму в списке. Никогда не задавался этим вопросом, потому как это порочная практика. Кто мешает Вам убрать ее из списка и содавать вручную , хотя бы в конструкторе тойже формы. Добавлено @ 18:37
DataModule2 случайно не равно NULL. Отладчиком смотрели? -------------------- С уважением, Вячеслав Ермолаев |
||||
|
|||||
| Лена |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 879 Регистрация: 16.8.2006 Репутация: 11 Всего: 11 |
Я добавила обработчик в DataModule
Я вижу ShowMessage, он появляется перед окном CPU. |
|||
|
||||
| Vyacheslav |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2124 Регистрация: 25.3.2002 Где: Москва Репутация: 47 Всего: 59 |
Лена. Неужели отладчиком пользоваться не умеете? Если нет, учитесь. Значительно облегчает жизнь программиста. Посмотрите, на всякий случай свойство у формы OldCreateOrder. Должно быть false. Может случайно переправили. -------------------- С уважением, Вячеслав Ермолаев |
|||
|
||||
| HappyLife |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 642 Регистрация: 17.5.2006 Репутация: 4 Всего: 8 |
Лена, самый простой способ отладки.
Слево от кода программы, есть полоса, тыкая на ней будут выделяться строки цветом соответсвующим настройкам (по-умолчанию красный). Напротив которых тех что вы ткнете, программа в реалтайме, будет останавливаться. Если наводить мышкой на переменные, будут всплывать плавающие окна со значением этих переменных. Это сообщение отредактировал(а) HappyLife - 13.4.2007, 10:56 |
|||
|
||||
| Лена |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 879 Регистрация: 16.8.2006 Репутация: 11 Всего: 11 |
HappyLife, точками остонова я умею конечно пользоваться.
На строке DataModule2->ADOConnection1->Connected = true; вижу DataModule2->ADOConnection1 = :01084DC0 Vyacheslav, что скрывается за термином "отладчик", Code Guard? В опциях проекта поставила у Code Guard контролировать все ошибки. OldCreateOrder стоит false. |
|||
|
||||
| ama_kid |
|
|||
![]() АСУТП-кодер ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1460 Регистрация: 5.3.2007 Где: Москва Репутация: 10 Всего: 95 |
Лена
Если честно, я не понимаю вот эту строку:
На кой она нужна? При выполнении Open коннект автоматом откроется, обычно это свойство используют для проверки, а устанавливать в ручную его не надо. Может у тебя там запросы не совсе верные? Или настройки соединения еще не выставлены, а ты уже пытаешься открыть БД... -------------------- самурай без меча подобен самураю с мечом, но только без меча |
|||
|
||||
| Vyacheslav |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2124 Регистрация: 25.3.2002 Где: Москва Репутация: 47 Всего: 59 |
Компилите в debug режиме. Ставите в нужном место breakpoint как указал HappyLife. Давите F9 и далее по шагам F8 (выполинить следующую строку) или F7 ( войти внутрь вызываемой фукции) в зависимости от обстоятельств. Так по шагам идете и конторлируете состояние переменных
-------------------- С уважением, Вячеслав Ермолаев |
|||
|
||||
| Лена |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 879 Регистрация: 16.8.2006 Репутация: 11 Всего: 11 |
Вот весь код:
Исли идти по коду через точки останова начиная с первой строки, то CPU появиться на строке: DataModule2->ClientDataSetKey->Open(); Если закомментировать DataModule2->ADOConnection1->Connected = true; CPU появиться опять на строке DataModule2->ClientDataSetKey->Open(); Если закомментировать весь блок:
то CPU появиться на строке Application->Run(); главного файла. Vyacheslav, сейчас попробую ваши рекомендации. Это сообщение отредактировал(а) Лена - 13.4.2007, 12:28 |
||||
|
|||||
| ama_kid |
|
||||
![]() АСУТП-кодер ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1460 Регистрация: 5.3.2007 Где: Москва Репутация: 10 Всего: 95 |
Лена
Хм, у тебя вот такая строка подключения? :
А если попробовать так?:
-------------------- самурай без меча подобен самураю с мечом, но только без меча |
||||
|
|||||
| Лена |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 879 Регистрация: 16.8.2006 Репутация: 11 Всего: 11 |
Тоже CPU выскакивает. Главное что мне не понятно, почему этот проект прекрасно работал и компилировался в локальной сети офиса где был сервер. Вот и exe файл созданный там, прекрасно запускается у меня. А вот откомпилировать на моей нынешнем удаленном компьютере не получается. Буду копать.
|
|||
|
||||
![]()
|
| Правила форума "С++ Builder" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C++ Builder | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |