Hallo Marco,
an dieser Stelle wiederholen sich bei einer konstanten Deklarierung viele Begriffe (Farben und Werte) ständig. Ich würde deshalb sowieso vorschlagen, die Initialisierung zur Laufzeit durch eine Prozedur in drei verschachtelten Schleifen zu erledigen:
Delphi-Quellcode:
var x1, x2, i1: integer;
// die ersten 24 Karten registrieren
for x1 := Low(TKartenfarbe) to High(TKartenfarbe) do
begin
for x2 := Low(TKartenWert) to High(TKartenWert) do
begin
// die folgende Index-Berechnung noch genau prüfen!!!
i1 := (x1+1)*6 + x2 + 1;
AlleKarten[i1].Farbe := TKartenfarbe(x1);
AlleKarten[i1].Wert := TKartenWert(x2);
end;
end;
// jetzt jede Karte verdoppeln
for x1 := 1 to 24 do
begin
AlleKarten[x1+24].Farbe := AlleKarten[x1].Farbe;
AlleKarten[x1+24].Wert := AlleKarten[x1].Wert;
end;
(auf die Schnelle skizziert ohne Test; z.B. weiß ich jetzt nicht mehr: müssen die Laufindizes als integer oder als TKartenfarbe/TKartenWert deklariert werden? funktionieren low/high an dieser Stelle? je nachdem sind die Schleifen und die Zuweisungen zu ändern. Bitte habe Verständnis für meine Unsicherheit...)
Aber grundsätzlich sollte das so funktionieren (und umgeht das Problem der Klammerung). Jürgen