Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   Verständnis: Zugriff auf Typen (https://www.delphipraxis.net/179579-verstaendnis-zugriff-auf-typen.html)

d7user1 17. Mär 2014 20:38

Verständnis: Zugriff auf Typen
 
hallo, ich habe folgendes:
Delphi-Quellcode:
type
  TWochentag = (Montag, Dienstag, Mittwoch, Donnerstag, Freitag, Samstag, Sonntag);

// ...
var
  Tag: TWochentag;

// ...
procedure test(test: Byte);
begin;
  if test = 0 then
   begin
    // tue A
   end
  else if test = 1 then
   begin
    // tue B
   end;
  // usw.
end;

// ...
for i := 0 to 10 do
 begin
  MeineUnit.test(MeineUnit.Tag(i)); // <- Fehler: E2066: Operator oder Semikolon fehlt.
 end;
kann ich nicht einfach auf
Delphi-Quellcode:
Tag(i)
oder
Delphi-Quellcode:
Tag[i]
zugreifen?

denn
Delphi-Quellcode:
Tag.Montag;
ist ja auch gültig. aber ich würde nur ungerne in der schleife folgendes machen:

Delphi-Quellcode:
for i := 0 to Integer(high(MeineUnit.Tag)) do // fehler korrigiert
 begin
  if i = 0 then
   MeineUnit.test(MeineUnit.Tag.Montag)
  else if i = 1 then
   MeineUnit.test(MeineUnit.Tag.Dienstag;
  // usw.
 end;

Uwe Raabe 17. Mär 2014 20:45

AW: Verständnis: Zugriff auf Typen
 
Nicht
Delphi-Quellcode:
Tag(I)
sondern
Delphi-Quellcode:
TWochentag(I)
.

himitsu 17. Mär 2014 20:46

AW: Verständnis: Zugriff auf Typen
 
oder
Delphi-Quellcode:
ListBox1.Items.Add(MeineUnit.test(i));
:stupid:
oder
Delphi-Quellcode:
MeineUnit.test(Ord(MeineUnit.Tag))

(k.A. was genau gemacht werden soll)

Aber wenn ich mir deine Schleife anseh ... Bist du dir sicher, daß "Tag" (echt blöder Name) ein ENUM sein soll, oder nicht etwa ein SET?

BUG 17. Mär 2014 20:48

AW: Verständnis: Zugriff auf Typen
 
Oder auch:
Delphi-Quellcode:
var
  i: TWochentag;
// ...
for i := low(TWochentag) to high(TWochentag) do
begin
  MeineUnit.test(i)
end;

Helmi 17. Mär 2014 20:50

AW: Verständnis: Zugriff auf Typen
 
wenn du, nebenbei bemerkt, 11 Schleifendurchgänge willst
Delphi-Quellcode:
for i := 0 to 10 do
,
dann wird´s ab i = 7 knallen, da dein TWochentag nur 7 Elemente (0..6) enthält.

d7user1 17. Mär 2014 20:54

AW: Verständnis: Zugriff auf Typen
 
Delphi-Quellcode:
var
  i: TWochentag;
// ...
for i := low(TWochentag) to high(TWochentag) do
begin
  MeineUnit.test(i)
end;
kann ich leider nicht benutzen da ich des öfteren mal
Delphi-Quellcode:
if i = 1 then
usw. abfrage.


das hat sich dank Integer(i) erledigt.

aber ein aufruf folgendermaßen sagt mir es würde ein komma fehlen:
Delphi-Quellcode:
i: TWochentag; // ...
MeineUnit.test( MeineUnit.Tag(Integer(i)));

Sir Rufo 17. Mär 2014 21:00

AW: Verständnis: Zugriff auf Typen
 
Zitat:

Zitat von d7user1 (Beitrag 1252333)
Delphi-Quellcode:
var
  i: TWochentag;
// ...
for i := low(TWochentag) to high(TWochentag) do
begin
  MeineUnit.test(i)
end;
kann ich leider nicht benutzen da ich des öfteren mal
Delphi-Quellcode:
if i = 1 then
usw. abfrage.

enum? set?

Dann solltest du deine Logik überdenken, oder mit
Delphi-Quellcode:
Ord( i )
arbeiten.
Klarer wird der Code allerdings durch
Delphi-Quellcode:
if i = Dienstag then

d7user1 17. Mär 2014 21:06

AW: Verständnis: Zugriff auf Typen
 
ok das habe ich nun gemacht. es ist nun überall
Delphi-Quellcode:
if i = Dienstag
usw. zu finden.

aber ein zugriff folgendermaßen funktioniert leider noch immer nicht:
Delphi-Quellcode:
 MeineUnit.test( MeineUnit.Tag(Integer(i)));

Sir Rufo 17. Mär 2014 21:12

AW: Verständnis: Zugriff auf Typen
 
Zitat:

Zitat von d7user1 (Beitrag 1252335)
ok das habe ich nun gemacht. es ist nun überall
Delphi-Quellcode:
if i = Dienstag
usw. zu finden.

aber ein zugriff folgendermaßen funktioniert leider noch immer nicht:
Delphi-Quellcode:
 MeineUnit.test( MeineUnit.Tag(Integer(i)));

Ja, und ... warum übernimmst du auch nur die Hälfte?

Delphi-Quellcode:
MeineUnit.test(i)


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