Ich hab mir den Code mal angesehen und analysiert. Kann sein, dass ich manche Sachen falsch eingeschätzt habe, weil ich das ganze nur mal im Kopf durchgespielt habe. Hinzu kommt noch, dass ich nicht weiß, was partiek ist. Und von Spielplänen hab ich keine Ahnung -.-'
Trotzdem hab ich dir ein paar Kommentare in den Source geschrieben und an manchen Stellen etwas gekürzt. Vielleicht hilft dir das ja, den Fehler zu finden.
Delphi-Quellcode:
for k := 1 to 12 do
begin
repeat
// gleich wird initialisiert: das ist wichtig, hast du allerdings bei einigen
// variablen vergessen, was zu fatalen folgen führen kann
gleich := false;
// Zufällige Mannschaft ermitteln
x := random(4)+1;
// In aktuelle Partie Heimmannschaft eintragen
partie[k].heim := teams[x];
// -> y muss entweder 0 sein oder die Zufallszahlx, also die Heimmannschaft.
// Das hieße, die Auswärtsmannschaft muss entweder die Manschaft mit Index 0
// oder die Heimmannschaft sein
// Macht das Sinn?! o_O
while (y=0) or (y=x) do // Achtung, y ist nicht initialisiert!
begin
y := random(4)+1; // Hier wird die Zufallszahl ermittelt, die eh nur
// 0 oder x sein darf!
partie[k].auswaerts := teams[y]; // Wert wird eingetragen: das sollte man
// lieber nach der Schleife machen
end;
// Hier werden die beiden Zahlen x und y aneinandergefügt, jedoch nicht addiert
// Soll das so sein??
partiek[k] := strtoint(inttostr(x)+inttostr(y));
// Solange i kleiner ist als der Index der aktuellen Partie UND
// partiek[k] nicht das gleiche ist wie partiek[i]
// Frage: was ist partiek?
// ACHTUNG: i ist nicht initialisiert
// Es kann sehr gut sein, dass diese schleife NIE durchlaufen wird!
while (i<k) and (not gleich) do
begin
gleich := (partiek[k]) = (partiek[i]); // hab das mal gekürzt
inc(i);
end;
until not gleich; // bin mir nicht sicher, ob dieser Vergleich Sinn macht...
// Du prüfst hier im Endeffekt, ob das item partiek[k]
// sich von pariek[i] unterscheidet.
end;