Einzelnen Beitrag anzeigen

Frankfurtoder

Registriert seit: 27. Mär 2008
112 Beiträge
 
RAD-Studio 2010 Pro
 
#1

stack überlauf beim schließen

  Alt 22. Apr 2008, 07:35
Guten Morgen Freunde der Kunst,

beim Beenden meines Programmes über das X rufe ich eine Prozedur auf, jedoch kommt es stattdessen zu einem stack overflow an der stelle.

Delphi-Quellcode:
procedure TForm.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  ButtonExitClick(self);
  action := caNone;
end;

procedure TForm.ButtonExitClick(Sender: TObject);
var intDialogResult:integer;
begin
  if (length(MainRichEdit.text) > 0) and (bolsaved = false) then
  begin
    intDialogResult := MessageDlg('Möchten Sie die Änderungen speichern?', mtWarning,
      [mbYes,mbNo,mbCancel], 0);
    case intDialogResult of
      6: begin
           SaveAsButtonClick(self);
         end;
      7: begin
           ApoTabThemen.Close;
           ApoTabPPP.Close;
           close;
         end;
    end;
  end
  else
  begin
    ApoTabThemen.Close;
    ApoTabPPP.Close;
    close;
  end;
end;
Das Programm prüft also beim schließen durch das X ob sich in einem RichEdit ein Text befindet, der noch nicht gespeichert wurde. Nun sollte die ButtonExitClick Prozedur aufgerufen werden die das prüft und einen Dialog aufruft. Falls sich nichts in dem RichEdit befindet bzw. schon gespeichert wurde, dann soll das Programm einfach beendet werden können, andernfalls ruft es zum speichern auf. Warum kommt es hier zu einem stack overflow und wie kann ich das lösen?

Die ButtonExitClick wird auch von einem speedbtn ausgelöst, hier funktioniert es ohne Probleme.

Danke
Erik
  Mit Zitat antworten Zitat