Forum: Object-Pascal / Delphi-Language
by himitsu,
18. Dez 2013
Im C springt der beim Return raus, was dem heutigen Exit(Result); entspricht
begin
if a < b then
Exit(a)
else
Exit(b);
Exit(0);
end;
begin
if a < b then begin
Forum: Object-Pascal / Delphi-Language
by himitsu,
17. Dez 2013
@Mikkey: Der Delphi-Compiler bemängelt auch (an vielen Stellen) derartige Werte, welche sich außerhalb der Definition befinden,
allerdings "warnt" er da nur und läßt es dennoch zu und ich weiß jetzt nicht, in wie weit das beim ELSE zutrifft.
Hab das z.B. ausgenutzt, um eine Fremdkomponente um ein paar States zu erweitern.
const
miImageMove = Succ(High(TIEMouseInteractVtItems));
...
Forum: Object-Pascal / Delphi-Language
by himitsu,
17. Dez 2013
Und nochmal ein kleines Beispiel, zu dem "warum" es nicht geht.
Das ist wie beim Boolean, welcher auch nicht "nur" zwei Zustände kennt -> http://www.delphipraxis.net/178082-verstaendnisfrage-boolean-zahl.html
type
TMyEnum = (Anfang = 1, Mitte = 3, Ende = 5);
var
MyEnum: TMyEnum;
MyEnum := TMyEnum(2); // hier ginge auch 0 bis 255 (oder größer, jenachdem wie $MINENUMSIZE...
Forum: Object-Pascal / Delphi-Language
by himitsu,
17. Dez 2013
Type TEnum = (Anfang, Mitte, Ende); läßt sich via GetEnumName (GetEnumName) in einen String übersetzen, welcher zufälig genau deinem Array entspricht.
Also zusammen mit Const EnumWerte : Array Of Integer = (1,3,5);.
Bei neueren Delphis könnte man die Werte auch via Attribut an die Typ-Definition hängen
und man könnte da auch andere/alternative "Namen" via Attribut angeben. (wenn man...