Deklarowanie typow.

0

Witam, moje pytanie odnosi sie do roznic w deklarowniu nowych typow w Delphi. Z samym deklarowaniem NIE MA problemu ale jestem ciekaw jakie sa roznice miedzy deklarowaniem typow nastepujaco

type 
  MojNowyTyp1 = Integer; // ten chyba najbardziej powrzechnie uzywany

  MojNowyTyp2 = type Integer;

  MojNowyTyp3 = type of Integer

Jak dla mnie jest to ciekawostka choc niemam pojecia czy jest jakakolwiek roznica miedzy powyzszymi deklaracjami :|.

Z gory dzieki za wyjasnienie. :)

0

MojNoeyTyp jest IDENTYCZNY z Integer.
MojNowyTyp2 jest taki sam jak Integer, mimo to jest traktowany jak inny typ.
MojNowyTyp3 w tym wypadku nie ma większego sensu. Instrukcji typ of używa się najczęściej w odniesieniu do klas, a zmiennej tego typu można przypisać klasę, np:

type
  MojTyp=type of TObject;

{...}
var
  a:MojTyp;
  obj:TObject;
begin
  a:=TStringList;
  obj:=a.Create;  //obj będzie obiektem typu TStringList
end;
0

Co do Typu 1 i 2 myslalem podobnie ale czy to oznacz ze np taki zapis bedzie niepoprawny? Z gory mowie ze kompiluje sie bez problemu. Tak wiec kiedy przydaje sie deklaracja NewType = type Integer?

type
  TNewInteger = type Integer;

var
  NewInteger: TNewInteger;
  Int: Integer;

begin
  NewInteger := Int;
end.

0

Dla deklaracji w stylu Typ=type InnyTyp jest generowana informacja RTTI. Gdyby nie to, to kompilator traktowałby typy Typ i InnyTyp tak samo, co nie zawsze jest porządane. Np. W komponencie TOpenDialog jest właściwość FileName typu TFileName. Typ TFileName jest zadeklarowany następująco:

TFileName=type string;

Przez to jest od inaczej traktowany od typu string i to pozwala wyświetlić przycisk ... przy właściwości w Inspektorze Obiektów. Cała sprawa jest nieco bardziej skomplikowana, ale różnice w generowanej informacji RTTI leżą u podstaw tego mechanizmu

0

ok dzieki za odpowiedz :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1