Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2003.11.13;
Скачать: [xml.tar.bz2];

Вниз

Перечисляемый тип в качестве свойства класса.   Найти похожие ветки 

 
Cranium   (2003-10-31 14:19) [0]

Ситуация следующая объявляютип
type AliasState = (aView, aClose);
далее
type
TAliasDB = Class
private
Status: AliasState;
function StateRead: AliasState;
.........
public
constructor Create; overload;
property State: AliasState read StateRead;
end
implementation

constructor TAliasDB.Create;
begin
Status:=aClose;
end;

function TAliasDB.StateRead: AliasState;
begin
Result:=Status;
end;


Так вот при чтении свойства State возникает ошибка в функци StateRead "Access violation at address ... in module .. Read address .." В чем грабли?


 
Юрий Зотов   (2003-10-31 14:26) [1]

1. Например, в том, что не создан объект.
2. Уберите overload.


 
Cranium   (2003-10-31 14:33) [2]

Нет объект класса создан. overload не могу убрать у меня несколько конструкторов класса


 
Юрий Зотов   (2003-10-31 14:37) [3]

И все-таки еще раз проверьте, создан ли объект.

А в приведенном Вами коде ошибок нет. Есть некоторые корявости, но это не ошибки. Ищите их где-то снаружи.


 
Reindeer Moss Eater   (2003-10-31 14:37) [4]

Наследуешся от TOblect.

Рисуешь свой конструктор, который заменяет стат. конструктор TObject. Который не вызывается.
У тебя не создается экземпляр одним словом.


 
Nikolay M.   (2003-10-31 14:37) [5]

Можно посмотреть на код в Create и как создается объект?


 
Reindeer Moss Eater   (2003-10-31 14:38) [6]

constructor Create; overload;

Нельзя переопределить статический метод


 
Юрий Зотов   (2003-10-31 14:41) [7]

> Reindeer Moss Eater

Overload - это не override. Конструктор остается статическим, прячет конструктор предка и при явном указании класса будет вызван.


 
Cranium   (2003-10-31 14:43) [8]


> У тебя не создается экземпляр одним словом.

Экземпляр чего класса TAliasDB? Так все остальные свойства читаются. Или экземляр AliasState так в приват процедурах и функция все работет...


 
Cranium   (2003-10-31 14:47) [9]


> Можно посмотреть на код в Create и как создается объект?

procedure TFormLoginParam.FormCreate(Sender: TObject);
var
Alias: TAliasDB;
begin
.......
Alias:=TAliasDB.Create;
.......
end;


 
Reindeer Moss Eater   (2003-10-31 14:49) [10]

Alias:=TAliasDB.Create;

Вызывается статический конструктор TAliasDB.
Разве в нем будет вызван TObject.Create ?


 
Cranium   (2003-10-31 14:52) [11]

А как же тогда надо?


 
Nikolay M.   (2003-10-31 14:52) [12]

Кстати, у меня в Д6 все работает нормально:

procedure TForm1.Button2Click(Sender: TObject);
var
t : TAliasDB;
begin
t := TAliasDB.Create;
ShowMessage (IntToStr (integer(t.State)))
end;

дает 1.

Может у тебя где-то еще определены TAliasDB, aClose и тп?


 
Юрий Зотов   (2003-10-31 15:11) [13]

> Reindeer Moss Eater © (31.10.03 14:49) [10]

Не будет, поскольку в TAliasDB.Create нет вызова inherited. Но это и не требуется. Объект все равно создается, причем вполне корректно.



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2003.11.13;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.036 c
1-41428
Elic
2003-10-29 07:20
2003.11.13
LoadFromStream для ТImage.Picture


1-41330
GIL
2003-10-30 17:21
2003.11.13
остановить программу


3-40860
Inkotex
2003-10-21 12:47
2003.11.13
Где можна сохранить графику в програме?


6-41819
Alex21
2003-09-12 12:40
2003.11.13
Как отследить вход в мой компьютер друго пользователя


1-41467
Sagrer
2003-11-04 19:37
2003.11.13
Помогите с Selection в Memo.





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский