Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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
1-58660
Tornado
2003-09-05 08:16
2003.09.18
Ресурсы в DLL


14-58917
strelok
2003-08-26 10:12
2003.09.18
софт с интерфейсом на html


9-58510
SunSay
2003-03-16 23:32
2003.09.18
как вывести картинку Transparent и Alpha (полупрозр.) одновременн


1-58657
McSimm2
2003-09-05 08:58
2003.09.18
Вызов процедуры


14-58896
KaPaT
2003-08-28 16:32
2003.09.18
Бортовые компьютеры автомобилей (BMW, Mercedes и т.д.)





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский