Главная страница
    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.036 c
2-1141666276
Demons
2006-03-06 20:31
2006.03.26
Общие


15-1141284592
КаПиБаРа
2006-03-02 10:29
2006.03.26
Каким будет программирование в 2030 году?


2-1141496084
bogdan
2006-03-04 21:14
2006.03.26
pagecontrol и speedbutton


10-1115555213
MaFon
2005-05-08 16:26
2006.03.26
Проблема Delphi+Word


2-1142181698
zaN0za
2006-03-12 19:41
2006.03.26
Сравнение типов





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