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

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

Почему датасоурс Nil (не определяется)? (выдает ошибку)Что не так [D6, XP]


Страницы:   1 2

Abcdef123 ©   (2007-06-21 12:50:00) 

TFRM_Grid = class(TForm_parent)
private
   InDataSet : TDataSet;
   InDataSrc : TDataSource;
end;
constructor TFRM_Grid.Create(AOwner: TComponent; DtSet : TDataSet);
begin
 Self.InDataSet := DtSet;
  Self.InDataSrc.DtSet := DtSet;
 Create(AOwner);
end;


Abcdef123   (2007-06-21 18:33:00) [21]

Насчет Inherited - Однокамушкин правильно прокомментировал Create(AOwner); так же работает.
To Desdechado [2]
У меня задача из одной формы привнести некоторые выбранные данные по query и дальше на другой форме поместить данные в DBGrid и работать в этом гриде.Поэтому при создании новой формы я пытаюсь прихватить этот DataSet из прежней формы, как параметр.
Причем,  в указанном коде строка Self.InDataSet := DtSet; вполне читает этот датасет, и я подумала, что я могу датасоурсе назначить, ссылаясь на этот датасет в виде строки Self.InDataSrc.DtSet := DtSet; НО, вот тут и показывает, что значение датасоурса Nil, и дальше идет ошибка AccessViolation, как правильно предположила Ega23.
Я пыталась создать датасоурс, но у меня вылезала ругалось на создание. Похоже, я не умею создавать датасоурс, подскажите, плз, как прописать правильно.


Плохиш   (2007-06-21 15:45:00) [22]


> Однокамушкин   (21.06.07 15:09) [4]
>
> > Ega23 ©   (21.06.07 13:52) [3]
> > 1. DataSource не создан
>
> С чего вы это взяли? Тут же не показано, с какими параметрами
> вызывается конструктор и что передаётся в качестве DtSet,
>  может, там всё нормально...

Каким боком здесь замешались передаваемые параметры, если пытаются присвоить какое-то значение свойству объекта, ссылка на который должна храниться в приватной переменной InDataSrc и которой(переменной) ничего в конструкторе не было присвоено. Это конструктор, не забываем, до вызова стоящего в нём кода для создаваемого объекта выделяется только память и ничего больше не создаётся.


Ega23   (2007-06-21 15:18:00) [23]


> Тут же не показано, с какими параметрами вызывается конструктор
> и что передаётся в качестве DtSet


В качестве DtSet передаётся указатель на экземпляр класса-потомка TDataSet. nil он, или явный адрес - в данном случае роли не играет.
А вот то, что непосредственно в конструкторе данный параметр присваивается полю InDataSrc, которое имеет вполне конкретный класс TDataSource, создание которого я нигде не вижу. И сильно подозреваю, что в выделенной строке InDataSrc=nil.


Ega23   (2007-06-21 15:14:00) [24]


> С чего вы это взяли? Тут же не показано, с какими параметрами
> вызывается конструктор и что передаётся в качестве DtSet,
>  может, там всё нормально...


Как Вы полагаете, с какого фига на выделенной строке валится ошибка? Причём, сильно подозреваю, что AccessViolation.


Anatoly Podgoretsky   (2007-06-21 15:13:00) [25]

> Однокамушкин  (21.06.2007 15:09:04)  [4]

> С чего вы это взяли? Тут же не показано, с какими параметрами вызывается конструктор

Поэтому можно считать что угодно, полный карт-бланш


Однокамушкин   (2007-06-21 15:09:00) [26]


> Ega23 ©   (21.06.07 13:52) [3]
> 1. DataSource не создан

С чего вы это взяли? Тут же не показано, с какими параметрами вызывается конструктор и что передаётся в качестве DtSet, может, там всё нормально...

> 2. Не наблюдаю inherited Create

Там же есть вызов Create(AOwner); - это и есть вызов конструктора предка... так как конструктор предка имеет другое имя, тут inherited писать не обязательно, и так всё однозначно...

> 3. constructor нефигово по-другому назвать...

Почему? Даже в VCL полно классов, у которых есть конструкторы, которые называются не Create: TWinControl, TComObject, TDataModule...


Ega23   (2007-06-21 13:52:00) [27]


> Потому, что перед использованием объект надо создать, а
> этого в твоём коде не наблюдается...


1. DataSource не создан
2. Не наблюдаю inherited Create
3. constructor нефигово по-другому назвать...


Desdechado   (2007-06-21 12:55:00) [28]

Что ты этим кодом хочешь сделать?
Причем тут формы?
Где inherited?


Плохиш   (2007-06-21 12:54:00) [29]

Потому, что перед использованием объект надо создать, а этого в твоём коде не наблюдается...


Страницы:   1 2

Наверх

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