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

Вниз

ООП   Найти похожие ветки 

 
Гога   (2006-03-14 07:54) [0]

Здрасьсте!
У меня почему то не работает код:

unit Unit1;

interface

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs;

type
 TForm1 = class(TForm)
   procedure FormCreate(Sender: TObject);
 private
   { Private declarations }
 public
   { Public declarations }
 end;

var
 Form1: TForm1;

type
 C_ = class(TObject)
   X: Word;
 end;

 C1 = class(C_)
   Y: Word;
 end;

 C2 = class(C_)
   Z: Word;
 end;

 C = class of C_;

var
 TC: C;
 TC1: C1;
 TC2: C2;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
 TC := TC2;
end;

end.


Кароче, мне нужно зделать, чтобы одной переменной мона было присваисвать все типы, наследуемые от C_. Как это зделать?

Спасибо!


 
Virgo_Style ©   (2006-03-14 08:03) [1]

в принципе, можно просто C = TObject;


 
Pearled ©   (2006-03-14 08:44) [2]

Переменная NC у тебя может содержать не объект, а класс. Поэтому вместо tc:= tc2 пиши tc:= c2;


 
Ega23 ©   (2006-03-14 09:01) [3]


> Как это зделать?


Для начала рекомендую приобрести и почитать Орфографический словарь.


 
Гаврила ©   (2006-03-14 10:57) [4]


>var
>  TC: C_;

(ну и названия... ужас)


 
Гаврила ©   (2006-03-14 10:58) [5]

в смысле это ответ был
не
var
 TC: C;
а
var
 TC: C_;


 
tesseract ©   (2006-03-14 11:08) [6]


>  TC: C_;

Объект любого типа можно трактовать, как своего родителя.
Но вот родителя, как потомка трактовать не рекомендуется.
TC:=C(TC1); - пройдёт.
TC1:=C(TC1) - нет


 
Плохиш ©   (2006-03-14 11:11) [7]


> procedure TForm1.FormCreate(Sender: TObject);
> begin
>  TC := TC2;
> end;

И не должно работать, потому что C и C2 несовместимые типы. А для того чтобы понять "почему", нужно начать читать книжку по программирование, раздел "Типы".

> Pearled ©   (14.03.06 08:44) [2]

Может почитаешь для начала чего?


 
tesseract ©   (2006-03-14 11:14) [8]


> Переменная NC у тебя может содержать не объект, а класс.

Мдя - вопрос, чем отличается класс от объекта подозреваешь?


 
Pearled ©   (2006-03-14 12:13) [9]


> > Переменная NC у тебя может содержать не объект, а класс.
>
>
> Мдя - вопрос, чем отличается класс от объекта подозреваешь?
>


Я имел в виду что переменной TC нужно присваивать не переменную класса C2, то есть как у автора - TC2, а сам класс, то есть C2. И никакой несовместимости нет. Аналогично будет работать:
var
  c: TClass;
....
c:= TButton;


 
Плохиш ©   (2006-03-14 12:25) [10]


> Я имел в виду что переменной TC нужно присваивать не переменную
> класса C2, то есть как у автора - TC2, а сам класс, то есть
> C2. И никакой несовместимости нет. Аналогично будет работать:
>
> var
>   c: TClass;
> ....
> c:= TButton;

Лучше жевать.


 
Pearled ©   (2006-03-14 12:30) [11]


> И не должно работать, потому что C и C2 несовместимые типы.
>  А для того чтобы понять "почему", нужно начать читать книжку
> по программирование, раздел "Типы".

C - метакласс, естественно они несовместимы. Но переменная типа C может содержать ссылку на класс C_ или любой из его наследников.



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

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

Наверх




Память: 0.47 MB
Время: 0.042 c
15-1141296239
Карелин Артем
2006-03-02 13:43
2006.03.26
Раша vs НеРаша.


2-1142336251
zorik
2006-03-14 14:37
2006.03.26
Репликация


2-1141894040
nap<>
2006-03-09 11:47
2006.03.26
Minimize


2-1141838875
Adios
2006-03-08 20:27
2006.03.26
Проблема с процедурой


15-1141624505
Ega23
2006-03-06 08:55
2006.03.26
С Днём рождения! 6 марта





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