Ich glaube Du prüfst grundsätzlich zuviel auf einmal und aus der falschen Perspektive.
Weniger auf einmal prüfen prüfen geht durch ein Helferlein in Form einer kleinen Boolean Variable:
Delphi-Quellcode:
var
ZugGueltig : Boolean;
begin
ZugGueltig := true; // Erstmal gültig annehmen
// Jetzt jede Reihe einzeln prüfen und Zug bei Bedarf ungültig machen
if Edit3.Text = '0' then
begin
if (Edit1.Text = '0') or (Edit2.Text = '0') then
ZugGueltig := false;
if (Edit6.Text = '0') or (Edit9.Text = '0') then
ZugGueltig := false;
end;
// Am Ende auswerten
if ZugGueltig then
showmessage('Die Bedingungen wurden erfüllt');
.
So ist das zwar ein klein wenig mehr Schreibarbeit, aber erstmal wesentlich leichter zu kontrollieren. Ganz am Schluss (wenn es richtig funktioniert) kann man die Einzelbedingungen immer noch klammern und mit einem
and verbinden.
Interessant wäre auch die Kontrolle aus Sicht des Steines, statt des Ziele, aber das muss nicht sein.