Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.05.22;
Скачать: CL | DM;

Вниз

Проблема доступа из потока к данным MDI окна.   Найти похожие ветки 

 
lukey   (2003-05-12 12:42) [0]

Такая проблема: при попытки изменить данные в дочернем(MDI) окне(форме) из потока(или главного окна), т.е. тривиально изменить Caption у Lable, происходит исключение, т.е. ошибка доступа.
Помогите разобратся с причиной.


 
Dms   (2003-05-12 12:48) [1]

возможно, объект на момент изменения уже/еще не существует


 
MBo ©   (2003-05-12 12:49) [2]

Код?


 
lukey   (2003-05-12 13:00) [3]

Код:
procedure TComRead.View;
begin
Form1.Panel1.Caption:=sss;
end;

sss - глобалььная переменная типа string;
Form1 - дочернее окно.
Процедура вызывается в потоке через Synchronize.
Ошибка возникает именно в момент присваивния.


 
lukey   (2003-05-12 13:01) [4]

P.S. TComRead - класс потока.


 
Smithson ©   (2003-05-12 13:05) [5]

Synchronize при любом обращении к VCL!!
Сколько раз говорить!


 
MBo ©   (2003-05-12 13:06) [6]

Form1 - глобальная переменная?
Где проверка на существование?


 
lukey   (2003-05-12 13:30) [7]

Синхронайз есть. И класс потока создается только когда форма(Form1) создается, т.е. экземпляр класса создается в методе Form1.Create. И убивается при закрытии окна. Грубо говоря поток работает только когда окно открыто.

Сейчас разобрались что ошибка возникает когда используется метод
Form1.Create(Application) в главной форме, а когда используется Form1.CreateForm(...) то все работает.
Дело в том что приходится работать с чужим приложением(содержащим только форм 130 штук). И то что уже работатет не хотелось бы трогать или по крайне мере терять время на разбор кода. Поэтому почему применяется метод Form1.Create(Application), я не могу сказать.


 
Skier ©   (2003-05-12 13:32) [8]

>lukey
А не DLL ли это часом ?


 
lukey   (2003-05-12 13:40) [9]

>Skier
Нет, все в одном приложении


 
Dms   (2003-05-12 13:55) [10]


> а когда используется Form1.CreateForm(...) то

вообще то надо Application.CreateForm


 
lukey   (2003-05-12 14:22) [11]

>Dms
Ну да обшибся, так оно и есть Application.CreateForm


 
nikkie ©   (2003-05-12 15:43) [12]

>ошибка возникает когда используется метод Form1.Create(Application)
немудрено. надо хотя бы
Form1 := TForm1.Create(Application)



Страницы: 1 вся ветка

Текущий архив: 2003.05.22;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.019 c
3-70160
Toshanius
2003-05-02 10:39
2003.05.22
Index is out of date!


14-70480
Anat
2003-05-03 15:42
2003.05.22
Как отправить письмо по NMSMTP.


8-70404
bearoman
2002-12-18 16:55
2003.05.22
Использую Flash в своих прогах есть проблема???


1-70233
nevalex
2003-05-11 19:48
2003.05.22
Как добавить событие в TrackBar1?


11-70197
Avenger__
2002-08-14 01:57
2003.05.22
баг