Zitat von
HenKst:
Die Schleife dürfte so nicht functionieren.
Doch! Na ja, fast.
Zitat von
HenKst:
ord(high(FruchtTyp)) ist ja schon der index des letzten Elements, davon succ ist dieser Index +1, gibts also nicht.
Deswegen zieht er ja auch 1 davon ab!
Zitat von
HenKst:
Ich weiss sowieso nicht was succ von nem ord bzw ord von nem integer bewirken soll.
succ gibt einfach den nächst höheren Wert der übergenen Variablen zurück. Bei einem Integer ist das wieder ein Integer, bei einem Aufzählungstyp ist das auch wieder dieser Typ.
Zitat von
HenKst:
high(FruchtTyp) gibt schon nen integer zurück, davon ord ist eigentlich wenig sinnig.
und succ(ord(i)) ist = i+1...
high(FruchtTyp) gibt keinen Integer zurück, sondern einen FruchtTyp - genauer gesagt, den höchsten FruchtTyp.
Die Funktionen succ, pred, high und low geben alle genau den Typ zurück, dere ihnen übergeben wurde. Pascal's Typsicherheit läßt grüßen.
Ich gestehe aber zu, daß die Schleifengrenze unnötig kompliziert angegeben wurde (mal abgesehen davon, daß ord(I) natürlich nicht geht):
Delphi-Quellcode:
var
ft: FruchtTyp;
for ft := low(FruchtTyp) to high(FruchtTyp) do
begin
Showmessage(FruchttypToStr(ft));
end;
Bei neueren Delphi-Versionen geht auch dies:
Delphi-Quellcode:
var
ft: FruchtTyp;
for ft in FruchtTyp do
begin
Showmessage(FruchttypToStr(ft));
end;