Hai Christian,
ersteinmal: "Herzlich Willkommen in der Delphi-PRAXIS"
Zitat von
ticcoid:
...Woran liegt es und wie kann ich es verhindern? Ich stelle mal den code zur verfügung!
Das liegt daran das Du in deinem Programm eine "rekursion" eingebaut hast. Jede
ButtonClick Methode ruft sich selber mehrmals selber auf. Da bei dem erneuten Aufruf einer Mothode aus der Methode selbst daten Daten auf den Stack gelegt werden müssen ist dieser irgend wann voll.
Ich habe mal dein Button1Click als Beispiel genommen und auf die Entscheidenden Codezeilen reduziert:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
if z = 0 then
randomize; // Randomize sollte man nur einmal beim start des Programmes aufrufen
if z = 0 then
blackliste1_erstellen;
zufallszahlen;
blackliste2_pruefen; // Diese Methode ruft Button1OnClick wieder auf
end;
procedure tform1.blackliste2_pruefen;
var
i, m, n: Integer;
begin
for m := 1 to 30 do
for n := 1 to 30 do
if ar_akt_tabelle[m] = ar_blackliste[n] then
begin
z := 1;
inc(versuche2);
label1.Caption := inttostr(versuche2);
Button1.Click; // Hier wird Button1.Click erneut aufgerufen
// Wenn Du die For-Do Schleife höher setzt zum beispiel ein 90
// anstelle der 30 würdest Du schon hier einen Stacküberlauf bekommen.
end;
z := 0;
end;
Ich denke jetzt erkennst Du das Problem.
Stephan B.
"Lasst den Gänsen ihre Füßchen"