Einzelnen Beitrag anzeigen

bcvs

Registriert seit: 16. Jun 2011
668 Beiträge
 
Delphi 12 Athens
 
#3

AW: Problem mit Schleifen/Array/??? - Brettspiel Mastermind

  Alt 16. Okt 2020, 07:13
Oder, wenn du die Rectangles nicht zur Laufzeit, sondern im Objekt-Inspector erzeugt, dieser Ansatz, den du schon versucht hast:

Statt:
Delphi-Quellcode:
// Befüllen des 1. Arrays (Namen d. Rectangle zunächst als string):
  for I := 1 to 5 do
    rechteckenamen[I] := 'Form1.Rec1_'+inttostr(I) ;
so:
Delphi-Quellcode:
For i:=1 to 5 do
  rechtecke[i]:=FindComponent('Rec1_'+inttostr(I));
Damit speicherst du die Objektinstanzen der automatisch erzeugten Rectangles im deinem rechtecke - Array und kannst später darüber darauf zugreifen. Dein Array Rechteckenamen brauchst du nicht.

Aber unbedingt das 'Form1' weglassen. Das gehört nicht zum Namen der Komponente, sondern ist der Name des Forms, auf dem die Komponente liegt.

Zitat:
Delphi-Quellcode:
// Befüllen d. 2. Arrays (Umwandlung von string nach TRectangle)
  for J := 1 to 5 do
    rechtecke[J] := TRectangle(rechteckenamen[J]) ;

// wieder Testen (ja, es klappt)
  Form1.LbTest2.Text := string(rechtecke[1])+#13#10 +
    string(rechtecke[2])+#13#10 +
    string(rechtecke[3])+#13#10 +
    string(rechtecke[4])+#13#10 +
    string(rechtecke[5])+#13#10 ;
Auch hier bitte das Form1. weglassen oder durch Self ersetzen. Form1 ist die Instanzvariable des Forms. Die kann aber auch ganz anders heißen. In deinem Fall mag das gehen, aber wenn du mal eine zweite Instanz eines Forms erzeugst, greifst du sonst immer auf die erste Instanz zu oder gar ins Leere.

Abgesehen davon kann die Umwandlung von String zu TRectangle nicht funktionieren. Du speicherst hier einen String in deinem Rechtecke-Array, aber das ist nur der Name des Rectangles, nicht das Rectangle selbst.
  Mit Zitat antworten Zitat