$SCOPEDENUMS

woolfik
Składnia:`{$SCOPEDENUMS OFF}` lub `{$SCOPEDENUMS ON}`
Wartość domyślna:`{$SCOPEDENUMS OFF}`

Dyrektywa umożliwia włączenie lub wyłączenie wymuszenia podania nazwy typu przed jego wartością.
Dokładniej, {$SCOPEDENUMS OFF} dotyczy tylko definicji typów wyliczeniowych i kontroluje dodanie nazwy typu przed wartością typu wyliczeniowego w zasięgu globalnym.

type
  TFoo = (A, B, Foo);
  {$SCOPEDENUMS ON}
  TBar = (A, B, Bar);
  {$SCOPEDENUMS OFF}

begin
  WriteLn(Integer(Foo)); 
  WriteLn(Integer(A)); // TFoo.A 
  WriteLn(Integer(TBar.B));
  WriteLn(Integer(TBar.Bar));
  WriteLn(Integer(Bar)); // Tu podczas kompilacji pojawi się wyjątek E2003 Undeclared identifier: 'Bar'
end;

Mimo, iż w powyższym przykładzie TFoo zostało zdefiniowane bez dyrektywy {$SCOPEDENUMS ON} wywołanie WriteLn(Integer(TFoo.A)) również jest dopuszczalne

0 komentarzy