Also, erstmal danke für die zahlreichen Antworten. Ich habe erst einmal die falschen Tags korrigiert, damit es übersichtlicher ist. Zum Punkt, was den nun nicht funktioniert: Er erkennt nie den Gewinner, egal welche Gewinn Konstellation ich teste (sei es diagonal, vertikal oder horizontal). Gewünscht ist, dass er eine Message mit dem Gewinner ausgibt.
Delphi-Quellcode:
// Sieger ermitteln
Gewinner := ErmittelGewinner();
// Entsprechend des Siegers eine Meldung ausgeben
case Gewinner of
0: Exit;
1,2: ShowMessage( Format( 'Spieler %d hat gewonnen.', [ Gewinner ] ) );
3: ShowMessage( 'Das Spiel endet unentschieden.' );
end;
Und bezüglich der Tags von
VCL-Komponenten: Ich war mir bewusst, dass es diese Eigenschaft für
VCL Komponente gibt. Doch leider habe ich mich vorher nie damit auseinander gesetzt, deswegen nahm ich die 'unsaubere' Methoden anhand der Erstellungsreihenfolge (1-9 gehören zum Spielfeld, 10 ist der Neustart Button). Also dürfte es da keine Probleme geben (außer die Unsauberkeit des Codes).
Ich werde versuchen weitgehend alles Überflüssige zu entfernen (For-Schleifen) bzw. zu optimieren (Tags). Dennoch bin ich überzeugt, dass der Fehler woanders liegt. Ich würde mich sehr freuen, wenn ich noch ein paar Lösungsansätze finden würdet bzw. mit mir teilen würdet.