Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Enumeration und Subrange Problem (https://www.delphipraxis.net/188726-enumeration-und-subrange-problem.html)

yogie 31. Mär 2016 10:22

Delphi-Version: 5

Enumeration und Subrange Problem
 
Ich möchte Subranges verwenden, um Felder zu dimensionieren.
Hier mal ein kleines Beispiel

Delphi-Quellcode:
unit SubRangeTest;

interface

  type TEnum1 = (enOne, enTwo, enThree, enFour, enFive);
  type TEnum2 = enTwo..enFour;

  var
    aEnum1 : TEnum1;
    aEnum2 : TEnum2;
    EnumArray1 : array[low(TEnum1)..high(TEnum1)] of integer;   {kein Fehler}
    EnumArray2 : array[low(TEnum2)..high(TEnum2)] of integer;   {kein Fehler}

implementation

initialization
    for aEnum1 := low(tEnum1) to high(TEnum1) do
      EnumArray1[aEnum1] := 0; {ok}

    for aEnum2 := low(tEnum2) to high(TEnum2) do
      EnumArray2[aEnum2] := 0; {Fehlermeldung : Inkommpatible Typen Enumeration und TEnum}

end.
Ich bekomme für das Feld EnumArray2 die Fehlermeldung
Inkommpatible Typen Enumeration und TEnum

Wie kann ich auf ein derart dimensioniertes Feld zugreifen?

Der schöne Günther 31. Mär 2016 10:26

AW: Enumeration und Subrange Problem
 
Warum nicht so?

Delphi-Quellcode:
    EnumArray1 : array[TEnum1] of integer; {kein Fehler}
    EnumArray2 : array[TEnum2] of integer; {kein Fehler}
Dann geht es.

PS: Bitte keinen Code in Unit-Initialisierungsabschnitten. Nichts hasse ich an Pascal mehr als diese Aberration.

yogie 31. Mär 2016 10:44

AW: Enumeration und Subrange Problem
 
besten Dank,
scheint zu funktionieren.

Den Code habe ich hier nur zur Vereinfachung in
den Initialisierungsteil geschrieben. Das ist
nur ein sehr stark vereinfachtes Beispiel.


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:54 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz