Einzelnen Beitrag anzeigen

Jürgen Thomas

Registriert seit: 13. Jul 2006
Ort: Berlin
750 Beiträge
 
#3

Re: Array of Record mit Konstanten füllen

  Alt 26. Aug 2006, 11:38
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
#D mit C# für NET, dazu Firebird
früher: Delphi 5 Pro, Delphi 2005 Pro mit C# (also NET 1.1)
Bitte nicht sauer sein, wenn ich mich bei Delphi-Schreibweisen verhaue; ich bin inzwischen an C# gewöhnt.
  Mit Zitat antworten Zitat