Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Компоненты Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.10.2017, 12:12   #1
eybrev
Пользователь
 
Регистрация: 05.10.2017
Сообщений: 14
По умолчанию Присваивание переменной: Form1 vs DataModule

Доброго господа!
Прошу помочь, не могу понять в чем же соль:

Есть формы:
Form1, DataModule

Перменная:
var Q: TFDQuery

И компоненты:
Form1.FDQuery1, DataModule.FDQuery2;


Присваиваю перемнной компонент из той же формы что и перменная, все гуд:

Код:
unit Unit1;
...
var
varQry:TFdQuery;
...
varQry:= FDQuery1;
..
а если компонент находится в DataModule, вылетает ошибка:

Код:
unit Unit1;
...
Uses Unit2
...
var
varQry:TFdQuery;
...
varQry:= DataModule.FDQuery2;
..
В чем ошибка? Прошу помочь, Спасибо!

Решение - DataModule еще не был создан, когда пытался присвоить переменной компонент (спс Serge_Bliznykov)

Последний раз редактировалось eybrev; 05.10.2017 в 17:36.
eybrev вне форума Ответить с цитированием
Старый 05.10.2017, 12:21   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

Цитата:
Сообщение от eybrev Посмотреть сообщение
а если компонент находится в DataModule, вылетает ошибка:
секретная?


Цитата:
Сообщение от eybrev Посмотреть сообщение
varQry:= DataModule.FDQuery2;
ну, например, DataModule ещё не создан в момент присвоения. Тогда, при попытке обращения к несозданному объекту будет access violation...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 05.10.2017, 12:29   #3
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

Или компонент в привате.
p51x вне форума Ответить с цитированием
Старый 05.10.2017, 17:31   #4
eybrev
Пользователь
 
Регистрация: 05.10.2017
Сообщений: 14
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
ну, например, DataModule ещё не создан в момент присвоения. Тогда, при попытке обращения к несозданному объекту будет access violation...
Да, спасибо, то что нужно. Делал все на Form1.OnCreate и DM еще не был создан. Спасибос!
eybrev вне форума Ответить с цитированием
Старый 11.10.2017, 11:47   #5
dummy_user
Форумчанин
 
Аватар для dummy_user
 
Регистрация: 02.03.2013
Сообщений: 109
По умолчанию

Да, пользуйтесь функцией Assign() для проверки валидности объекта.
dummy_user вне форума Ответить с цитированием
Старый 11.10.2017, 12:17   #6
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

Цитата:
Сообщение от dummy_user Посмотреть сообщение
Да, пользуйтесь функцией Assign() для проверки валидности объекта.
путаете с Assigned()
Serge_Bliznykov вне форума Ответить с цитированием
Старый 12.10.2017, 15:43   #7
dummy_user
Форумчанин
 
Аватар для dummy_user
 
Регистрация: 02.03.2013
Сообщений: 109
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
путаете с Assigned()
Да, верно.
dummy_user вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
База + ComboBox, присваивание переменной Evil_Net БД в Delphi 12 05.08.2015 19:00
Присваивание edit переменной. sinobithug Общие вопросы C/C++ 2 13.04.2014 23:34
присваивание переменной "левого" значения kibcat Общие вопросы C/C++ 3 17.05.2012 00:07
Присваивание переменной значения ячейки Soviet Microsoft Office Excel 4 02.04.2012 12:24
Неправильный вывод или присваивание char переменной. PlumBoom Общие вопросы C/C++ 3 23.03.2010 06:34