|
|
Up |
|
|
  |
Author: StarkStark Date: Sep 8, 2008 06:13
Compilo e avvio il mio programma (in fase di sviluppo) dall'IDE di Delphi 6.
Appena il mio MainForm viene visualizzato, lo chiudo usando l'icona X
(Chiudi) di Windows. A questo punto esce il messaggio di Stack Overflow.
Ho provato a introdurre un exit subito all'ingresso nella routine
dell'evento OnShow che è la prima eseguita, in modo che in effetti il
programma non apra files etc., cioè non faccia nulla. Il problema rimane.
Che cosa può causare una stack overflow ? Pensavo ad un problema di loop
infinito o roba del genere, ma non mi pare venga eseguito nulla ..
Come cercare l'origine del problema ?
|
| |
|
| | 6 Comments |
|
  |
Author: Giacomo Degli EspostiGiacomo Degli Esposti Date: Sep 8, 2008 12:24
Stark wrote:
> Compilo e avvio il mio programma (in fase di sviluppo) dall'IDE di Delphi 6.
> Appena il mio MainForm viene visualizzato, lo chiudo usando l'icona X
> (Chiudi) di Windows. A questo punto esce il messaggio di Stack Overflow.
> Ho provato a introdurre un exit subito all'ingresso nella routine
> dell'evento OnShow che è la prima eseguita, in modo che in effetti il
> programma non apra files etc., cioè non faccia nulla. Il problema rimane.
> Che cosa può causare una stack overflow ? Pensavo ad un problema di loop
> infinito o roba del genere, ma non mi pare venga eseguito nulla ..
> Come cercare l'origine del problema ?
potrebbe trattarsi di due eventi che finiscono per chiamarsi uno
con l'altro. Prova a sganciarli o a mettere un breakpoint su
tutti gli eventi di chiusura (onclosequery, onclose, ondestroy, ...)
ciao
Giacomo
|
| |
|
| | no comments |
|
  |
Author: StarkStark Date: Sep 11, 2008 05:49
Ho ricominciato da capo: ricreato il mio form e gli oggetti sopra, senza
alcuna routine di eventi, a parte l'OnClose del form (per chiudere il
dataset). A questo punto ho fatto il run e quando è apparsa la finestra l'ho
chiusa subito e non ho avuto problemi.
A questo punto ho introdotto un evento OnCellClick su un DBGrid che è uno
degli oggetti della mia finestra e questa volta si è ricreato lo
StackOverflow.
Convinto di aver capito tutto, ho eliminato la gestione dell'evento
riportando tutto alla situazione di prima.
Peccato che l'errore NON se n'è andato, e sono quindi al punto iniziale.
Sto impazzendo !!
"Giacomo Degli Esposti" ha scritto nel
messaggio news:f_exk.57369$Ca.18298@twister2.libero.it...
> Stark wrote:
>> Compilo e avvio il mio programma (in fase di sviluppo...
|
| Show full article (1.64Kb) |
| no comments |
|
  |
Date: Sep 11, 2008 07:18
Stark ha scritto:
> Ho ricominciato da capo: ricreato il mio form e gli oggetti sopra, senza
> alcuna routine di eventi, a parte l'OnClose del form (per chiudere il
> dataset). A questo punto ho fatto il run e quando è apparsa la finestra l'ho
> chiusa subito e non ho avuto problemi.
> A questo punto ho introdotto un evento OnCellClick su un DBGrid che è uno
> degli oggetti della mia finestra e questa volta si è ricreato lo
> StackOverflow.
> Convinto di aver capito tutto, ho eliminato la gestione dell'evento
> riportando tutto alla situazione di prima.
> Peccato che l'errore NON se n'è andato, e sono quindi al punto iniziale.
> Sto impazzendo !!
>> ciao
>> Giacomo
>
>
Prova a postare qualche riga del codice che scrivi nell'OnClose, e
nell'OnCellClick forse è li' l'errore
Goblin
|
| Show full article (0.88Kb) |
| no comments |
|
  |
|
|
  |
Date: Sep 11, 2008 23:57
Stark ha scritto:
> Nell'On Close:
> Close;
> MyStringList.Free;
mmm Domanda: Perchè nell'evento OnClose richiami il Close ????
E' implicito, se vuoi gestire la chiusura devi gestire la variabile
'CanClose' nell'evento CloseQuery. Il close lo metti sull'evento Onclick
di qualche bottone. Piccolo esempio.
procedure TForm13.Button1Click(Sender: TObject);
begin
close; // qui dico di chiudere
end;
procedure TForm13.FormCloseQuery(Sender: TObject; var CanClose:Boolean);
begin
// chiedo conferma di chiusura
canclose := MessageDlg('Chiudo la form', mtConfirmation, [mbYes, mbNo],
0) = mrYes;
end;
Goblin
|
| Show full article (0.71Kb) |
| no comments |
|
  |
|
|
  |
Author: StarkStark Date: Sep 13, 2008 01:56
Scusa, hai ragione. Non era Close, ma Dataset.Close....
"^_Goblin_^" <^__^Nic_^__^sab_^__^@^__^Libero_^__^.it> ha scritto nel
messaggio news:2poyk.10986$YZ3.8914@tornado.fastwebnet.it...
Stark ha scritto:
> Nell'On Close:
> Close;
> MyStringList.Free;
mmm Domanda: Perchè nell'evento OnClose richiami il Close ????
E' implicito, se vuoi gestire la chiusura devi gestire la variabile
'CanClose' nell'evento CloseQuery. Il close lo metti sull'evento Onclick
di qualche bottone. Piccolo esempio.
procedure TForm13.Button1Click(Sender: TObject);
begin
close; // qui dico di chiudere
end;
|
| Show full article (0.90Kb) |
| no comments |
|
|