Показать сообщение отдельно
  #2  
Старый 14.02.2011, 13:04
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

Код:
type
  TA = class
  end;

  TB = class(TA)
  end;

  TC = class(TA)
  end;

var
  a: TA;
  b: TB;
  c: TC;
begin
  a:=TA.Create;
  b:=TB.Create;
  c:=TC.Create;

  if a is TA then Memo1.Lines.Add('a is TA');
  if b is TA then Memo1.Lines.Add('b is TA');
  if c is TA then Memo1.Lines.Add('c is TA');

  if a is TB then Memo1.Lines.Add('a is TB');
  if b is TB then Memo1.Lines.Add('b is TB');
//  if c is TB then Memo1.Lines.Add('c is TB');

  if a is TC then Memo1.Lines.Add('a is TC');
//  if b is TC then Memo1.Lines.Add('b is TC');
  if c is TC then Memo1.Lines.Add('c is TC');

  c.Free;
  b.Free;
  a.Free;
end;

// потому что: Incompatible types: '<element>' and '<element>'

или:

Код:
var
  a: TObject;
  b: TObject;
  c: TObject;
begin
  a:=TA.Create;
  b:=TB.Create;
  c:=TC.Create;

  if a is TA then Memo1.Lines.Add('a is TA');
  if b is TA then Memo1.Lines.Add('b is TA');
  if c is TA then Memo1.Lines.Add('c is TA');

  if a is TB then Memo1.Lines.Add('a is TB');
  if b is TB then Memo1.Lines.Add('b is TB');
  if c is TB then Memo1.Lines.Add('c is TB');

  if a is TC then Memo1.Lines.Add('a is TC');
  if b is TC then Memo1.Lines.Add('b is TC');
  if c is TC then Memo1.Lines.Add('c is TC');

  c.Free;
  b.Free;
  a.Free;
end;

Цитата:
a is TA
b is TA
c is TA
b is TB
c is TC

__________________
Пишу программы за еду.
__________________
Ответить с цитированием