Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

вопрос связи поток и DataModule [D7, XP]


vegarulez ©   (2009-02-24 08:09:00) 

добрый день всем мастерам!
Вопрос такой - почему при обращении из потока(Tthread) к компоненту из DataModule происходит ошибка. С DataModule из потока нельзя работать?

...
Synchronize(UpdateCaption);
...

procedure TSt.UpdateCaption;
begin
try
 if DModule.DM.ZConnection1.Connected=false then
  DModule.DM.ZConnection1.Connected:=true;
 DModule.DM.ZQuery1.Close;
 DM.ZQuery1.Sql.Text:=sql_str;
 DM.ZQuery1.ExecSQL;
except
on E: Exception do
 begin
  DM.ZQuery1.Close;
  File_Save(''+#10+'Error:St.UpdateCaption:'+ E.Message +'_'+ inttostr(E.HelpContext));
 end;
end;
end;


vegarulez   (2009-02-24 14:53:00) [1]

Anatoly Podgoretsky ©   (24.02.09 14:13) [10]

под бутиратом? :)


Anatoly Podgoretsky   (2009-02-24 14:13:00) [2]


> просто я делаю DM.Free  после Application.Run в project2.
> pas;

Нифига себе.


Anatoly Podgoretsky   (2009-02-24 14:13:00) [3]


> Application.CreateForm(TDM, DM);

Нифига себе.


vegarulez   (2009-02-24 10:43:00) [4]

Медвежонок Пятачок ©   (24.02.09 10:21) [7]
Сергей М. ©   (24.02.09 09:50) [4]
аха спасибо.
Помогло.

Application.CreateForm(TDM, DM);


Медвежонок Пятачок   (2009-02-24 10:21:00) [5]

она инициализирована )

"она" неинициализирована.


vegarulez   (2009-02-24 10:13:00) [6]

хм... что-то не помогло вылетает на проверке
if DM.ZConnection1.Connected=false then


vegarulez   (2009-02-24 10:10:00) [7]

всё кажется понял в чём трабла...
она инициализирована )
просто я делаю DM.Free  после Application.Run в project2.pas;
Поэтому конешно он не может к нему обратится ))
Сечас уберу эту досадную оплошность.


Сергей М.   (2009-02-24 09:50:00) [8]


> vegarulez ©   (24.02.09 09:14) [2]


Скорее всего DM не инициализирована


девушка   (2009-02-24 09:16:00) [9]

DModule.DM - что за переменная??? какой тип?

Вы уверены что все используемые переменные успевают инициализироваться до запуска потока?


vegarulez   (2009-02-24 09:14:00) [10]

try
...
Synchronize(UpdateCaption);
...
except
on E: Exception do
 File_Save(''+#10+'Error:SE.Execute_2:'+ E.Message +'_'+ inttostr(E.HelpContext));
end;

....
procedure TSt.UpdateCaption;
begin
try
if DModule.DM.ZConnection1.Connected=false then
 DModule.DM.ZConnection1.Connected:=true;
DModule.DM.ZQuery1.Close;
DM.ZQuery1.Sql.Text:=sql_str;
DM.ZQuery1.ExecSQL;
except
on E: Exception do
begin
 DM.ZQuery1.Close;
 File_Save(''+#10+'Error:St.UpdateCaption:'+ E.Message +'_'+ inttostr(E.HelpContext));
end;
end;
end;


ошибка -
Error:SE.Execute_2:Access violation at address 005A0C9B in module 'Project2.exe'. Read of address 00000058_0_metka:2


Сергей М.   (2009-02-24 08:56:00) [11]


> С DataModule из потока нельзя работать?


Можно.


> почему ..происходит ошибка


Тебе видней почему.
Отсюда не видно что за ошибка.


Наверх

Титульная страница Поиск, карта сайта Написать письмо