Toon posts:

[Delphi] Loop door Enumerated Type

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik wil graag met een loop door een enumerated type lopen.

Op zich is dat wel te doen, alleen als je de verschillende type een niet opvolgend nummer ga geven dan wordt het lastig:
Delphi:
1
2
type
  TEnumeratedType = (Type1 = 1, Type2 = 5, Type3 = 10);


Je kan dan niet met een loop zo er door heen lopen:

Delphi:
1
  for i := Ord(Low(TEnumeratedType)) to Ord(High(TEnumeratedType)) do


Is dit op een of andere manier toch mogelijk?

  • mjax
  • Registratie: September 2000
  • Laatst online: 28-07 20:20
met een while loop, waarbij je met het eerste element begint en m.b.v. de Succ() functie de volgende pakt.

[ Voor 71% gewijzigd door mjax op 19-09-2003 10:44 ]


  • Johnny Goodbye
  • Registratie: Augustus 2003
  • Laatst online: 21-08 12:42
bedoel je dit:
var
i:TEnumeratedType;
begin
for i := low(TEnumeratedType) to high(TEnumeratedType) do
begin
showmessage(inttostr(ord(i)))
end;
end;

Verwijderd

Topicstarter
mjax schreef op 19 september 2003 @ 10:44:
met een while loop, waarbij je met het eerste element begint en m.b.v. de Succ() functie de volgende pakt.
Nee dat werkt niet. In het voorbeeld wat ik gaf zijn de 3 mogelijk typen van de enumerated type niet op een volgend. Dus ik zou eerst 1 moeten hebben, daarna 5 en daarna 10.

  • klinz
  • Registratie: Maart 2002
  • Laatst online: 10-08 15:44

klinz

weet van NIETS

Concept:
code:
1
2
3
4
5
6
7
8
9
type
    TEnumeratedType = (Type1 = 1, Type2 = 5, Type3 = 10);
    TEnumeratedTypeSet = set of TEnumeratedType;
    
var
    i: TEnumeratedType;
    for i := Low(TEnumeratedType) to High(TEnumeratedType) do
        if i in TEnumeratedTypeSet then
            // doe iets met i

  • _Thanatos_
  • Registratie: Januari 2001
  • Laatst online: 22-06 10:32

_Thanatos_

Ja, en kaal

Delphi:
1
2
3
4
5
6
7
8
9
10
11
12
type
   TEnumeratedType = (Type1 = 1, Type2 = 5, Type3 = 10);
var
   I: TEnumeratedType;
begin
I := Low(I);
while I < High(I)
do begin
   //doe iets
   I := Succ(I);
   end;
end;


Dit moet toch werken?

日本!🎌


Verwijderd

Topicstarter
Nee dat werkt niet. Ik moet zo nog even kijken of ik die oplossing van klinz werkend kan krijgen.

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 18-08 21:00

Creepy

Tactical Espionage Splatterer

_Thanatos_ schreef op 19 september 2003 @ 13:15:
Delphi:
1
2
3
4
5
6
7
8
9
10
11
12
type
   TEnumeratedType = (Type1 = 1, Type2 = 5, Type3 = 10);
var
   I: TEnumeratedType;
begin
I := Low(I);
while I < High(I)
do begin
   //doe iets
   I := Succ(I);
   end;
end;


Dit moet toch werken?
Succ is niet zo slim om rekening te houden met niet opvolgende enumerated types, helaas. Want je zou inderdaad wel verwachten dat het zou werken.

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney

Pagina: 1