Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C++ Builder > EAccessViolation


Автор: AntonChik 15.12.2005, 12:06
блин,даже не знаю откуда это вылазит...
у меня 2 формы...ЧИТАТЬ переменные со второй формы я могу,а НА ЗАПИСЬ туда вылетает окошко с вышеописанным сообщением...
например, если на Form1 где-нибудь написать Form2->Edit1->Text="Hello World";
может я не так формы подцепил?...хотя раньше вроде таких проблем не было...

Автор: _hunter 15.12.2005, 12:19
показsвай код ( с кодом проекта )

Автор: AntonChik 11.1.2006, 08:15
Form1 (interactive_u1.cpp) и Form4 (titles_u4.cpp)
в interactive_u1.h я черкнул
Код

...
#include "titles_u4.h"
...

а в titles_u4.h соответственно
Код

...
#include "interactive_u1.h"
...


в interactive_u1.cpp описываю функцию,где например встречается
Код

bool __fastcall TForm1::extractxml(AnsiString xmlpath)//-- EXTRACT XML ---------
{
...
Form4->Edit6->Text=GroupBox1->Caption;
...
}


при компиляции выскакивает EAccessViolation.
комментарю эту строку - все ок...
чую,коряво подцепил формы.
а как правильно?



Автор: Vyacheslav 11.1.2006, 11:12
Где extractxml вызывается ?

Автор: AntonChik 11.1.2006, 13:30
Код

__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
...
extractxml(xmlpath);
...
}


void __fastcall TForm1::N5Click(TObject *Sender)
{
...
extractxml(xmlpath);
...
}



Автор: _hunter 11.1.2006, 14:11
при компиляции или таки при выполнении?
+ явно четвертая форма еще не создалась ( если ты порядок создания не менял )
зайди в файл проекта и там переставь строки местами

Автор: Vyacheslav 11.1.2006, 15:21
Вызываешь extractxml(xmlpath) в конструкторе главной формы, когда еще Form4 не создано и что в таком случае ты ожидаешь получить?
Если уж хочешь выполнить данную операцию к конструкторе TForm1
1. убери Form4 из списка автосоздаваемых форм
2. добавь в конструкторе код по созданию формы
Код

__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
...
  Form4 = new TForm4(Application);
  extractxml(xmlpath);
...
}


Добавлено @ 15:23
Цитата(_hunter @ 11.1.2006, 14:11 Найти цитируемый пост)

+ явно четвертая форма еще не создалась ( если ты порядок создания не менял )
зайди в файл проекта и там переставь строки местами

Ага, и Forma4 станет главной формой приложения smile

Автор: _hunter 11.1.2006, 16:11
Цитата(Vyacheslav @ 11.1.2006, 14:21 Найти цитируемый пост)

Ага, и Forma4 станет главной формой приложения smile

может ему так и нужно... ;)

Автор: AntonChik 12.1.2006, 05:38
_hunter и Vyacheslav ,спасибо.
опять же корю себя за тупость , лень м нежелание подумать немного самому...
в наслойке задумок остается мало времени на анализ внезапных ошибок...
ведь данную проблему можно было обойти разными "извращенскими" способами,что я, в принципе, и сделал smile
но всегда хочется знать истиную причину,а она как водится лежит как раз на поверхности...

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)