Форум: "Основная";
Текущий архив: 2003.09.18;
Скачать: [xml.tar.bz2];
ВнизОшибка при присваивании Найти похожие ветки
← →
McMurfy (2003-09-04 19:00) [0]Ситуация следующая:
Ta=class(TComponent)
...
end;
Tb=class(TPersistent)
protected
x:Ta;
public
constructor Create(...)...
end;
constructor Tb.Create;
begin
x:=nil; {!!!!!!!!!!!!!!!!!!!!!}
end;
На строке, помеченной криком души, вылетает Access Violation. При трассировке на этой строке получаем x=Inaccessible Value
Если кто знает, помогите пожалуйста, буду очень благодарен.
← →
mrcat (2003-09-04 19:01) [1]constructor Tb.Create;
begin
inherited Create;
x:=nil; {!!!!!!!!!!!!!!!!!!!!!}
end;
← →
me (2003-09-04 19:07) [2]Приведи код с вызовом конструктора
← →
McMurfy (2003-09-04 19:48) [3]1. Inherited Create; у меня есть, пробовал его комментировать, не помогает.
2. Код с вызовом конструктора:
EntityList[EntityCount-1]:=TEntity(FindClass(FEntityClass)).Create(FFm asApp,TempKeys);
В данном случает Ta - TFmasApp,Tb - TEntity
← →
McMurfy (2003-09-04 19:48) [4]1. Inherited Create; у меня есть, пробовал его комментировать, не помогает.
2. Код с вызовом конструктора:
EntityList[EntityCount-1]:=TEntity(FindClass(FEntityClass)).Create(FFm asApp,TempKeys);
В данном случает Ta - TFmasApp,Tb - TEntity
← →
me (2003-09-04 19:53) [5]type
TEntityClass = class TEntity;
EntityList[EntityCount-1]:= TEntityClass(FindClass(FEntityClass)).Create(FFmasApp,TempKeys) ;
← →
McMurfy (2003-09-04 20:00) [6]На запись TEntityClass = class TEntity; у меня Делфи ругается.
Запись TEntityClass = class(TEntity); не помогла (да и не могла).
Запись TEntityClass = class of TEntity; тоже не помогла - все осталось как и раньше.
← →
me (2003-09-04 20:07) [7]Я имел ввиду
TEntityClass = class of TEntity;
Классовую ссылку нельзя приводить к экземпляру класса.
← →
me (2003-09-04 20:14) [8]АксессВайолэйшн при присвоении полю
обычно означает некорректный Self.
Такое обычно бывает либо при вызове конструктора
как обычного метода объекта при несозданном объекте,
либо, как у тебя, при приведении классовой ссылки к
экземпляру класса (т.е. с точки зрения компилятора это тоже
вызов конструктора как обычного метода, а указатель на
класс он трактует как указатель на экземпляр).
Трудно придумать какие-то ещё причины.
Проверь ещё раз что у тебя с Сэлфом всё впорядке.
← →
Романов Р.В. (2003-09-04 20:34) [9]procedure TApplication.CreateForm(InstanceClass: TComponentClass; var Reference);
var
Instance: TComponent;
begin
Instance := TComponent(InstanceClass.NewInstance);
TComponent(Reference) := Instance;
try
Instance.Create(Self);
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2003.09.18;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.008 c