Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Aufzählungstyp und Array: Fehler beim Zugriff per Index (https://www.delphipraxis.net/187395-aufzaehlungstyp-und-array-fehler-beim-zugriff-per-index.html)

sonicus83 25. Nov 2015 14:56

Delphi-Version: XE3

Aufzählungstyp und Array: Fehler beim Zugriff per Index
 
Hallo,

bei einem Array aus einem Aufzählungstyp bekomme ich nur Fehler beim Zugriff auf die Elemente (bei "anteil_typ[i_typ] := 0"). Wenn ich im Debugger mir die Variable anteil_typ anschaue, ist hier der Index 0..2 gegeben. Ist dieser Index nur intern oder liegt irgendwo in der Definition der Fehler? Ich komm irgendwie nicht drauf.

Der Fehler: Exception-Klasse $C0000005 mit der Meldung 'c000005 ACCESS_VIOLATION'.

Code:
TAufzaehlungstyp = (tA, tB, tC);

[...]

var
  i_typ: TAufzaehlungstyp ;
  anteil_typ: array[TAufzaehlungstyp] of double;

[...]

  for i_typ:= low(TAufzaehlungstyp) to high(TAufzaehlungstyp) do begin
    anteil_typ[i_typ] := 0;
  end;
Folgendes Beispiel habe ich im Internet gefunden, das sollte doch übertragbar sein?

Code:
type
  TWeekDay = (wdMon, wdTue, wdWed, wdThu, wdFri, wdSat, wdSun);

var
  wd    : TWeekDay;
  Income : array[TWeekDay] of double;
  sum   : double;

begin
sum := 0;
for wd:=wdMon to wdFri do
  sum := sum + Income[wd];
end;
Vielen Dank für jeden Hinweis!

Bjoerk 25. Nov 2015 15:07

AW: Aufzählungstyp und Array: Fehler beim Zugriff per Index
 
Der TAufzaehlungstyp Code ist korrekt.

baumina 25. Nov 2015 15:13

AW: Aufzählungstyp und Array: Fehler beim Zugriff per Index
 
Der Code funktioniert, zu beachten ist, dass die Variable i_typ nur lokal definiert werden sollte, sie ist nur innerhalb der for-Schleife gültig.

Sir Rufo 25. Nov 2015 21:21

AW: Aufzählungstyp und Array: Fehler beim Zugriff per Index
 
Zitat:

Zitat von baumina (Beitrag 1322489)
Der Code funktioniert, zu beachten ist, dass die Variable i_typ nur lokal definiert werden sollte, sie ist nur innerhalb der for-Schleife gültig.

Die Variable selbst ist immer gültig (wenn deklariert) nur der Wert kann nach der Schleife undefiniert sein ;)

baumina 26. Nov 2015 06:45

AW: Aufzählungstyp und Array: Fehler beim Zugriff per Index
 
Richtig :thumb:

Dejan Vu 26. Nov 2015 06:52

AW: Aufzählungstyp und Array: Fehler beim Zugriff per Index
 
Zitat:

Zitat von Sir Rufo (Beitrag 1322515)
Die Variable selbst ist immer gültig (wenn deklariert) nur der Wert kann nach der Schleife undefiniert sein ;)

Eine weitere eklatante Schwäche von Delphi.

Neutral General 26. Nov 2015 07:45

AW: Aufzählungstyp und Array: Fehler beim Zugriff per Index
 
Zitat:

Zitat von Dejan Vu (Beitrag 1322529)
Zitat:

Zitat von Sir Rufo (Beitrag 1322515)
Die Variable selbst ist immer gültig (wenn deklariert) nur der Wert kann nach der Schleife undefiniert sein ;)

Eine weitere eklatante Schwäche von Delphi.

Wenn du deine Schleifenvariable außerhalb der Schleife noch benötigst machst du wahrscheinlich irgendwas falsch.

Union 26. Nov 2015 07:54

AW: Aufzählungstyp und Array: Fehler beim Zugriff per Index
 
Irgend etwas verheimlichst Du uns. Folgender Code läuft problemlos:
Delphi-Quellcode:
program Aufzaehlungstyp;

{$APPTYPE CONSOLE}

type
  TAufzaehlungstyp = (tA, tB, tC);

  var
  i_typ: TAufzaehlungstyp ;
  anteil_typ: array[TAufzaehlungstyp] of double;

begin
  for i_typ:= low(TAufzaehlungstyp) to high(TAufzaehlungstyp) do begin
    anteil_typ[i_typ] := 0;
  end;
end.


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:01 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