![]() |
|
|
![]()
|
|
| SydeX |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 26 Регистрация: 3.11.2004 Где: Таллинн, Эстония Репутация: нет Всего: нет |
Платформа: x86 / MS Windows 2000 SP4
Платформа2: x86 / MS Windows 98SE Borland C++ Builder 6.0 Enterprise Trial (на крякнутом те же грабли) Вот беда - есть у нас две формы Form1 и Form2 когда загружается форма1 она проверяет целостность своих конфигов - если конфиги оказываются битыми - она модально вызывает Форм2 в котором будет сообщение об ошибке. И вот беда - прописываю алгоритм по нужному евенту в Форм1 - то есть при загрузке - ну код примерно такой - ---- FORM1.cpp ---- #include <stdio.h> #include <stdlib.h> #include <form1.h> #include <form2.h> if(validate_cfg(cfg_path)<0) { Form2->ShowModal(); If(Form2->Critical == 1) exit(0); } Что в Форм2.спп не важно - пробовал даже если он вообще пустой - то есть с пустыми функциями - грабли всё равно появляются. Компилится и собирается всё хорошо и красиво - но как только запускаешь - если в Винде - то кидает просто EAccessException такой любимый красный значок под ним окей и рядом эта надпись - а если в борланде - то пишет длинные адреса памяти - пишет что нарушение прав доступа по такому то адресу в vcl60.bpl (точно не помню кажется такое название библиотеки) - и как ни странно - кажет что ошибка вот в этой строке главном файле проекта: Application->CreateForm(__classid(TForm2), &Form2); Ну я думаю объяснять не надо что этот файл генерит сам борланд. Если убрать из исходника строчку вызова формы - то есть: Form2->ShowModal(); Всё летает без проблем. Если скажем процедуру вызова формы запихать в __fastcall функцию - и привязать сиё дело с вызовом формы к какому нить евенту - скажем к клику по меню - то тоже красиво вызывает - а вот если просто по человечески вызывать форму - кидает ексепшн. Никак не могу понять - проблема в кривизне моих рук или в Борланде. Народ может у кого есть какие идеи ? |
|||
|
||||
| _hunter |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 8564 Регистрация: 24.6.2003 Где: Europe::Ukraine:: Kiev Репутация: 24 Всего: 98 |
проблема -- в руках
если форма на протяжении всего времени не нужна -- зачем ее создавать автоматом? Application->CreateForm(__classid(TForm2), &Form2); из файла проекта -- удали. добавь к первой форме заголовок второй и перед показом создай ее. все должно работать -------------------- Tempora mutantur, et nos mutamur in illis... |
|||
|
||||
| SydeX |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 26 Регистрация: 3.11.2004 Где: Таллинн, Эстония Репутация: нет Всего: нет |
Cпасибо, млин я как то даже не подумал. Спасибо большое - действительно помогло. Млин кривизна моих рук меня порой самого поражает
|
|||
|
||||
| Hroft |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 310 Регистрация: 20.10.2003 Где: Москва Репутация: 1 Всего: 3 |
Project-Options-Forms посмотри еще, там Form2 в Available можно переместить, то же самое, но как-то естественнее.
|
|||
|
||||
![]()
|
| Правила форума "С++ 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. |