Forum Delphi.cz

Delphi => Obecné => Téma založeno: Stanislav Hruška 17-01-2019, 13:53:27

Název: Enumerated type - zistenie aký má počet položiek
Přispěvatel: Stanislav Hruška 17-01-2019, 13:53:27
Kód: Delphi [Vybrat]
  1. TTypeFocData = (tfFlat, tfOwner_Flat, tfMeter, tfEachFlatHasRoom, tfDeposit, tfDepositInYear, ...);
  2.  
Ja potrebujem zistiť aký počet položiek tam mám. Alebo hodnotu poslednej. Čo je vlastne to isté +-1. Nedarí sa.
Název: Re:Enumerated type - zistenie aký má počet položiek
Přispěvatel: Stanislav Hruška 17-01-2019, 13:54:26
Mám na mysli priame zistenie. Bez prechádzania položiek v cykle.
Název: Re:Enumerated type - zistenie aký má počet položiek
Přispěvatel: pf1957 17-01-2019, 14:13:03
Ja potrebujem zistiť aký počet položiek tam mám. Alebo hodnotu poslednej. Čo je vlastne to isté +-1. Nedarí sa.
Posledni zjistis pomoci High().  Pokud nejsou prirozene cislovane, tak pocet neziskas. Tam nefunguje poradne ani RTTI.
Název: Re:Enumerated type - zistenie aký má počet položiek
Přispěvatel: Stanislav Hruška 17-01-2019, 14:16:28
To som skúšal
Kód: Delphi [Vybrat]
  1.   for I := Low(TTypeFocData) to High(TTypeFocData) do
  2.     FGlobalDataOk.Add(False);
[dcc32 Error] AdaptRibbon.pas(215): E2010 Incompatible types: 'Integer' and 'TTypeFocData'
Název: Re:Enumerated type - zistenie aký má počet položiek
Přispěvatel: Stanislav Hruška 17-01-2019, 14:25:05
Momentálne som to vyriešil pridaním tfLast. Dokonca v múdrych knihách píšu žeby sa malo používať xxFirst a xxLast. Vtedy som veľmi nerozumel prečo. Už čiastočne viem.
Název: Re:Enumerated type - zistenie aký má počet položiek
Přispěvatel: pf1957 17-01-2019, 14:29:46
To som skúšal
Kód: Delphi [Vybrat]
  1.   for I := Low(TTypeFocData) to High(TTypeFocData) do
  2.     FGlobalDataOk.Add(False);
[dcc32 Error] AdaptRibbon.pas(215): E2010 Incompatible types: 'Integer' and 'TTypeFocData'
No vzdyt ti pise, co mas spatne, takze bud
Kód: Delphi [Vybrat]
  1. var e: TTypeFocData;
  2. for e := low(...) to high(...) do
  3. begin
  4.   i := ord(e);  //pokud to k necemu vubec potrebujes
  5. end;
nebo
Kód: Delphi [Vybrat]
  1. for i := ord(low(...)) to ord(high(...)) do
  2. begin
  3. end;
Název: Re:Enumerated type - zistenie aký má počet položiek
Přispěvatel: pf1957 17-01-2019, 14:31:37
Momentálne som to vyriešil pridaním tfLast. Dokonca v múdrych knihách píšu žeby sa malo používať xxFirst a xxLast. Vtedy som veľmi nerozumel prečo. Už čiastočne viem.
To je IMHO blbost: to tak mozna v jazykach, ktere nemaji enum (uz si to nepamatuju, ale mam dojem, ze Java ho nemela a jestli ho stale nema nevim) nebo v drevni dobach pred 40 lety v asm a C, kde taky enumy nejsou a musi se to definovat pomoci integeru
Název: Re:Enumerated type - zistenie aký má počet položiek
Přispěvatel: pf1957 17-01-2019, 14:32:58
Kód: Delphi [Vybrat]
  1. TTypeFocData = (tfFlat, tfOwner_Flat, tfMeter, tfEachFlatHasRoom, tfDeposit, tfDepositInYear, ...);
  2.  
Co se naopak vetsinou definuje je tfUnknown jako prvni clen.
Název: Re:Enumerated type - zistenie aký má počet položiek
Přispěvatel: Stanislav Hruška 17-01-2019, 14:34:08
A ja nie a nie tam napasovať ten Ord :)
Název: Re:Enumerated type - zistenie aký má počet položiek
Přispěvatel: pf1957 17-01-2019, 14:37:50
A ja nie a nie tam napasovať ten Ord :)
No to by mela byt situace, kdy neni zbyti a skutecne potrebujes pracovat s ordinalnimi hodnotami. Jinak bys mel operovat na urovni enumu vsude, kde to jde tj. i pri rizeni cyklu.
Název: Re:Enumerated type - zistenie aký má počet položiek
Přispěvatel: Stanislav Hruška 17-01-2019, 14:54:02

Citace
No to by mela byt situace, kdy neni zbyti a skutecne potrebujes pracovat s ordinalnimi hodnotami. Jinak bys mel operovat na urovni enumu vsude, kde to jde tj. i pri rizeni cyklu.
A ako bez toho Ord? To je vlastne tu položená otázka.
Název: Re:Enumerated type - zistenie aký má počet položiek
Přispěvatel: pf1957 17-01-2019, 14:56:10
A ako bez toho Ord? To je vlastne tu položená otázka.
Vzdyt jsem ti to psal tady (https://forum.delphi.cz/index.php/topic,16510.msg103298.html#msg103298)
Název: Re:Enumerated type - zistenie aký má počet položiek
Přispěvatel: Stanislav Hruška 17-01-2019, 15:10:02
Jaj, už som to pochopil.