![]() |
Re: Stack Überlauf
Hallo,
habe mir mal den Quelltext genommen und das Ganze ausprobiert. Bei Eingaben > 8 kommt ein Fehler bei der Bereichsprüfung, ansonsten funktioniert der vorhandene Quelltext ohne Stacküberlauf oder sonstige Probleme. Ein Fehlerkandidat könnte dann nur noch die Prozedur Berechne sein. Was passiert darin? |
Re: Stack Überlauf
Dessenungeachtet ist es kein guter Stil, wenn ein Ereignis in einem Key-Down-Event aufgerufen wird. Abhilfe: Schmeiss ein TButton auf dein Formular, setze im Objektinspektor die Eigenschaft 'Default' auf TRUE (dann wird der Button beim ENTER gedrückt) und verfrachte zum Schluss die Logik in das ButtonClick-Ereignis.
Delphi-Quellcode:
Nur löst das ja nicht das Stack-Problem.
Procedure TForm1.Button1Click (Sender : TObject);
Begin eingabe; If (zahler1 = a+2)Then berechne; zahler1:= zahler1+1; End; |
Re: Stack Überlauf
Delphi-Quellcode:
Nach der Schleife entspricht n = a^a, was bei a=8 schon 2^24 = 16777216 entspricht. Vielleicht sollte man in diese Richtung mal weiter forschen.n:= 1; For i:=1 to a Do begin n:= n*a; end; setLength(El,a); setLength(Mo,n); setLength(Re,n,a); setLength(Vo,a); Bei Kombinatorik muss man etwas aufpassen was den benötigten Speicherplatz betrifft. |
Re: Stack Überlauf
Hallo,
a > 8 führt zwar zu Fehlern, aber nicht zum Stacküberlauf. Und bei a = 8 braucht's ja "nur" ca. 1 GB Speicher. |
Re: Stack Überlauf
Leena: Vielleicht kannst du mal die komplette Unit von TForm2 posten. Sieht aus, als kämen wir so nicht weiter.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:11 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz