Durch einen Daten-Typ iterieren

Für Fragen von Einsteigern und Programmieranfängern...
Antworten
lazarus_newbee
Beiträge: 42
Registriert: So 5. Sep 2010, 14:09
OS, Lazarus, FPC: Win7 (L 0.9.28.2 FPC 2.4.0)
CPU-Target: 32Bit
Wohnort: Erfurt

Durch einen Daten-Typ iterieren

Beitrag von lazarus_newbee »

Hallo zusammen:

ich habe mir einen Datentyp geschaffen und möchte nun durch die Werte iterieren (hoffentlich stimmt das Wort).

Code: Alles auswählen

type TSpielfarben = (rot, gruen, blau, gelb);
Jetzt brauch ich etwas im Sinne von TSpielfarben.Next wo ich z.B. nach dem Wert "rot" den Wert "gruen" bekomme, danach "blau"...

geht das irgendwie?

Benutzeravatar
theo
Beiträge: 10927
Registriert: Mo 11. Sep 2006, 19:01

Re: Durch einen Daten-Typ iterieren

Beitrag von theo »

Mit succ und pred kannst du das relativ einfach machen.

Code: Alles auswählen

var Spf:TSpielfarben;
begin
  Spf:=blau;
  writeln(Spf);
  Spf:=Succ(Spf);
  writeln(Spf);
  Spf:=Pred(Spf);
  writeln(Spf); 
end;

mschnell
Beiträge: 3444
Registriert: Mo 11. Sep 2006, 10:24
OS, Lazarus, FPC: svn (Window32, Linux x64, Linux ARM (QNAP) (cross+nativ)
CPU-Target: X32 / X64 / ARMv5
Wohnort: Krefeld

Re: Durch einen Daten-Typ iterieren

Beitrag von mschnell »

Code: Alles auswählen

var 
  i: Spielfarben;
  n: Integer;
  for i := Low(Spielfarben) to High(Spielfarben) do begin
    n = ord(i);
  end;

lazarus_newbee
Beiträge: 42
Registriert: So 5. Sep 2010, 14:09
OS, Lazarus, FPC: Win7 (L 0.9.28.2 FPC 2.4.0)
CPU-Target: 32Bit
Wohnort: Erfurt

Re: Durch einen Daten-Typ iterieren

Beitrag von lazarus_newbee »

Besten Dank! Genau das hab ich gemeint.

marcov
Beiträge: 1102
Registriert: Di 5. Aug 2008, 09:37
OS, Lazarus, FPC: Windows ,Linux,FreeBSD,Dos (L trunk FPC trunk)
CPU-Target: 32/64,PPC(+64), ARM
Wohnort: Eindhoven (Niederlande)

Re: Durch einen Daten-Typ iterieren

Beitrag von marcov »

Code: Alles auswählen

Uses Typinfo;
 
Type TSpielfarben = (rot, gruen, blau, gelb);
 
var x  : TSpielfarben;
      s : string;
 
begin
  x:=Rot;
  s:=GetEnumName(typeinfo(TSpielfarben),ord(x));
  x:=succ(x);
  s:=s+' '+GetEnumName(typeinfo(TSpielfarben),ord(x));
  writeln(s);
end.

Antworten