Einzelnen Beitrag anzeigen

Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.008 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#9

AW: Was ist eigentlich der Unterschied zwischen "type" und "type of"?

  Alt 12. Sep 2018, 12:39
type of ist einfach nur ein Bug und ich möchte jedem davon abraten, das zu nutzen.

Ein Typ, der mit type of deklariert ist, wird vom Compiler als TypeKind tkClassRef behandelt.

Delphi-Quellcode:
uses
  TypInfo;

type
  Special = type Cardinal;
  CardinalType = type of Cardinal;
var
  c: Cardinal;
  s: Special;
  ct: CardinalType;
  tk: TTypeKind;
begin
  Writeln(GetEnumName(TypeInfo(TTypeKind), Ord(GetTypeKind(CardinalType))));

  ct := Cardinal; // WAT?!
  ct := Special; // BOOM!

end.
Wenn man mal beim Debuggen über die Variable vom Typ ct geht, sieht man, dass es ein Referenz und kein Ordinaltyp ist (vorm Zuweisen zeigts nil an und nicht 0).
Dass man trotzdem Ordinalvariablen zuweisen kann, liegt daran, dass es nunmal bugged ist.
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight

Geändert von Stevie (12. Sep 2018 um 12:51 Uhr)
  Mit Zitat antworten Zitat