Вниз
Скачать: CL | DM;

Ошибка при присваивании   Найти похожие ветки 

← →
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 вся ветка

Скачать: CL | DM;



Память: 0.47 MB
Время: 0.012 c
14-58829
Пан Сенюта
2003-08-30 16:38
2003.09.18
Что вы обо мне думаете?


1-58620
M@D
2003-09-05 15:35
2003.09.18
Component Name


1-58781
Jacob
2003-09-05 16:19
2003.09.18
Контекстное меню Windows


14-58839
Jeer
2003-09-01 10:25
2003.09.18
Всех учащихся с новым учебным годом


7-58942
hawkins
2003-06-29 08:51
2003.09.18
автозапуск программы перед выключением




   Наверх