AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Stack Überlauf

Ein Thema von Leena · begonnen am 6. Nov 2008 · letzter Beitrag vom 7. Nov 2008
Antwort Antwort
Seite 2 von 2     12   
nahpets
(Gast)

n/a Beiträge
 
#11

Re: Stack Überlauf

  Alt 7. Nov 2008, 10:19
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?
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#12

Re: Stack Überlauf

  Alt 7. Nov 2008, 11:30
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:
Procedure TForm1.Button1Click (Sender : TObject);
Begin
  eingabe;
  If (zahler1 = a+2)Then
    berechne;
  zahler1:= zahler1+1;
End;
Nur löst das ja nicht das Stack-Problem.
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.024 Beiträge
 
Delphi 12 Athens
 
#13

Re: Stack Überlauf

  Alt 7. Nov 2008, 14:24
Delphi-Quellcode:
     
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);
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.

Bei Kombinatorik muss man etwas aufpassen was den benötigten Speicherplatz betrifft.
Uwe Raabe
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#14

Re: Stack Überlauf

  Alt 7. Nov 2008, 14:55
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.
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.024 Beiträge
 
Delphi 12 Athens
 
#15

Re: Stack Überlauf

  Alt 7. Nov 2008, 16:07
Leena: Vielleicht kannst du mal die komplette Unit von TForm2 posten. Sieht aus, als kämen wir so nicht weiter.
Uwe Raabe
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:00 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz