ciao a tutti,
se si fanno cicli errati (quindi andranno avanti in eterno), come si fà a bloccare il debug?
es:
codice:a=1 do while a < 60 'esegui qualcosa! loop
ciao a tutti,
se si fanno cicli errati (quindi andranno avanti in eterno), come si fà a bloccare il debug?
es:
codice:a=1 do while a < 60 'esegui qualcosa! loop
durante il debug clicca Ctlr+Pausa e il codice si ferma sull'istruzione che deve eseguire![]()
05.08.2005 - by alka
Auguri all'angelo custode dei moderatori.
Si dovrebbe aggiungere all'interno del ciclo una chiamata alla funzione API Sleep che consente al thread primario di restituire momentaneamente il controllo al sistema operativo, evitando di girare al 100% dell CPU (che è probabilmente il motivo per cui, sebbene sia possibile arrestare il progetto, questo non viene consentito per eccessivo impiego della CPU da parte del thread primario dell'applicazione).
Magari prova e mi saprai dire se ho indovinato.
Ciao!![]()
MARCO BREVEGLIERI
Software and Web Developer, Teacher and Consultant
Home | Blog | Delphi Podcast | Twitch | Altro...
CTRL+Pausa funziona a meraviglia.
Grazie x 10000000
di nienteOriginariamente inviato da lbottoni
CTRL+Pausa funziona a meraviglia.
Grazie x 10000000![]()
05.08.2005 - by alka
Auguri all'angelo custode dei moderatori.
Molto più semplice e logico inserire una istruzione doevents, che fa si che vengano processati gli eventi di sistema (come il click del mouse)Originariamente inviato da alka
Si dovrebbe aggiungere all'interno del ciclo una chiamata alla funzione API Sleep che consente al thread primario di restituire momentaneamente il controllo al sistema operativo, evitando di girare al 100% dell CPU (che è probabilmente il motivo per cui, sebbene sia possibile arrestare il progetto, questo non viene consentito per eccessivo impiego della CPU da parte del thread primario dell'applicazione).
Magari prova e mi saprai dire se ho indovinato.
Ciao!![]()
Scusate i puntini di sospensione...... La verità è che non ho argomenti....
Che sia semplice, forse... che sia logico, assolutamente no.Originariamente inviato da kalosjo
Molto più semplice e logico inserire una istruzione doevents, che fa si che vengano processati gli eventi di sistema (come il click del mouse)
Non si tratta della stessa cosa: DoEvents processa tutti i messaggi, anche i clic e tutto il resto, comportanto tutti gli eventi collaterali del caso ai quali è necessario prendere provvedimenti (ad esempio, disabilitare i controlli visuali, inibire la chiusura del form e così via).
D'altronde, la programmazione multithreading - a meno di salti mortali (leggere "ricorrere alle API", con molta fatica) - è esclusa in Visual Basic 6, pertanto qualsiasi "manovra" è da considerarsi un puro espediente nel tentativo di aggirare una limitazione dell'ambiente di sviluppo.
Ciao!![]()
MARCO BREVEGLIERI
Software and Web Developer, Teacher and Consultant
Home | Blog | Delphi Podcast | Twitch | Altro...
Originariamente inviato da alka
Che sia semplice, forse... che sia logico, assolutamente no.
Non si tratta della stessa cosa: DoEvents processa tutti i messaggi, anche i clic e tutto il resto, comportanto tutti gli eventi collaterali del caso ai quali è necessario prendere provvedimenti (ad esempio, disabilitare i controlli visuali, inibire la chiusura del form e così via).
D'altronde, la programmazione multithreading - a meno di salti mortali (leggere "ricorrere alle API", con molta fatica) - è esclusa in Visual Basic 6, pertanto qualsiasi "manovra" è da considerarsi un puro espediente nel tentativo di aggirare una limitazione dell'ambiente di sviluppo.
Ciao!![]()
![]()
Scusa, forse sono stato duro (per la velocità....)
Non intendevo quello che sembrava, volevo solo dare una soluzione alternativa....![]()
Scusate i puntini di sospensione...... La verità è che non ho argomenti....
Nessun problema, ci mancherebbe.Originariamente inviato da kalosjo
Scusa, forse sono stato duro (per la velocità....)
Non intendevo quello che sembrava, volevo solo dare una soluzione alternativa....![]()
Ad ogni modo, sembra che i disguidi del "ciclo infinito" non fossero riferiti ad un programma funzionante in cui è necessario farlo, ma ad una semplice condizione che impedisce - durante il debugging - di arrestare il programma.
In sostanza, il problema - se ho capito bene - è nell'utilizzo dell'ambiente di sviluppo per arrestare un simile ciclo piuttosto che nel gestirlo in modo appropriato quando esso si verifica (in condizioni di normali funzionamento di un programma definitivo).
Se mi sono sbagliato, attendo correzioni.
Ciao!![]()
MARCO BREVEGLIERI
Software and Web Developer, Teacher and Consultant
Home | Blog | Delphi Podcast | Twitch | Altro...
si parlavo in fase di debug.Per quanto riguarda il DOevents è già presente nel codice.