AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Wie läßt sich die Anzahl der Elemente eines AufzählungsTyps bestimmen?
Thema durchsuchen
Ansicht
Themen-Optionen

Wie läßt sich die Anzahl der Elemente eines AufzählungsTyps bestimmen?

Ein Thema von Andreas13 · begonnen am 21. Apr 2023 · letzter Beitrag vom 21. Apr 2023
Antwort Antwort
Andreas13

Registriert seit: 14. Okt 2006
Ort: Nürnberg
730 Beiträge
 
Delphi XE5 Professional
 
#1

AW: Wie läßt sich die Anzahl der Elemente eines AufzählungsTyps bestimmen?

  Alt 21. Apr 2023, 13:29
Danke, Himitsu!

[Edit]
Anzahl := Ord(Succ(High(MyType))); liefert die Meldung:
[dcc32 Fehler]E1012 Konstantenausdruck verletzt untere Grenzen
Grüße, Andreas
Wenn man seinem Nächsten einen steilen Berg hinaufhilft, kommt man selbst dem Gipfel näher. (John C. Cornelius)

Geändert von Andreas13 (21. Apr 2023 um 13:38 Uhr)
  Mit Zitat antworten Zitat
peterbelow

Registriert seit: 12. Jan 2019
Ort: Hessen
731 Beiträge
 
Delphi 12 Athens
 
#2

AW: Wie läßt sich die Anzahl der Elemente eines AufzählungsTyps bestimmen?

  Alt 21. Apr 2023, 16:20
Danke, Himitsu!

[Edit]
Anzahl := Ord(Succ(High(MyType))); liefert die Meldung:
[dcc32 Fehler]E1012 Konstantenausdruck verletzt untere Grenzen
Anzahl := Succ(Ord(High(MyType))); Succ(High(MyType)) wird von Compiler als vom Typ MyType interpretiert und das gibt natürlich einen Overflow oder Range Check Fehler.
Peter Below
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.746 Beiträge
 
Delphi 12 Athens
 
#3

AW: Wie läßt sich die Anzahl der Elemente eines AufzählungsTyps bestimmen?

  Alt 21. Apr 2023, 17:23
Ohhh, Na gut, inzwischen ist die blöde Bereichsprüfung nun standardmäßig aktiv,
aber hätte gedacht, die schlägt hier nur auf die "reale" Speichergröße (ein Byte = 256) an.

Mal ausprobieren, ob die auch meckert, wenn man was Größeres zuweisen will.
Test := MyType(123);

[add]
Jo, Zuweisen und Vergleichen geht immernoch,
aber beim Rechnen knallt es wirklich überall.
Delphi-Quellcode:
type
  MyType = (aa, bb, cc, dd, ee);

procedure TForm2.FormCreate(Sender: TObject);
begin
  var Test := MyType(5);
  Test := Pred(Test); // aka Dec(Test);
  if Test = High(MyType) then
    Beep;

  Test := MyType(6);
  Dec(Test);
  if Test = Low(MyType) then ;
end;
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (21. Apr 2023 um 17:29 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:42 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz