Newsgroup: it.comp.lang.delphi
Titolo: neofita - chiarimento su Application.ProcessMessages

Ciao a tutti,
premesso che sono un neofita del mondo Delphi,
sto effettuando una forma di reverse-engeneering di un pgm scritto in Delphi 
7.
Non riesco a capire perché, lungo varie parti del codice, viene richiamata 
la procedure qui sotto indicata con il parametro nSecondi valorizzato alle 
volte con 500 alle volte con 6000 (il tutto in secondi)...
Non capisco se questo richiamo rallenta l'esecuzione del programma...
Un grazie in anticipo per l'aiuto.
-------------------------------------------------------
procedure Delay(nSecondi: Integer);
var FTCount: Longint;
begin
   FTCount:=GetTickCount;
   repeat
      Application.ProcessMessages;
   until ((Longint(GetTickCount)-FTCount) >= Longint(nSecondi));
end;
-------------------------------------------------------
Luca 

 Non capisco se questo richiamo rallenta l'esecuzione del programma...
Sì, rallenta. Il nome /Delay/ dovrebbe essere intuitivo, ad ogni modo 
all'interno viene effettuato un ciclo di attesa per i millisecondi 
specificati con la chiamata al metodo Application.ProcessMessages() che, 
in modo analogo al celebre DoEvents() di VB, fa sì che l'applicazione 
gestisca i messaggi in coda riprendendo l'esecuzione della routine non 
appena tutti i messaggi sono stati serviti (ad esempio, timer, paint di 
controlli, clic su pulsanti, ecc.).
Bisogna poi vedere se questa chiamata viene inserita per motivi seri 
oppure se può effettivamente essere eliminata. Occorre prendere in esame 
il codice circostante per capirlo.
P.S.:
come fai a fare "reverse engineering" se hai...il codice sorgente? :-)
P.P.S.:
se fai "reverse engineering", sei certo che sia un'azione ammessa da chi 
ha sviluppato il prodotto?
Ciao,
   Marco (in pseudoferie). :-)
-- 
Marco «Alka» Breveglieri	
http://www.marco.breveglieri.name
  «bvmcnxsjlkhròhyeq, potrei scrivere a questo punto,
   se mi addormentassi sui tasti» (Daniele Luttazzi)

 ha scritto nel messaggio 
news:iDpKe.30987$TR5....@news.edisontel.com...


 bloccato oppure si possono effettuare richiami di voce di menu ecc.
Se nel ciclo *repeat...until* esiste una chiamata ad 
/Application.ProcessMessages/, l'applicazione non risulta bloccata 
poichè questo metodo fa sì che il thread primario gestisca i messaggi 
che arrivano alla coda, inclusi quelli di refresh, clic del mouse e così 
via.
Se manca la chiamata a ProcessMessages, il programma risulta bloccato 
poichè il thread primario non prosegue nella gestione dei messaggi fino 
a quando quello corrente, ricondotto al ciclo in questione, non è concluso.
Ovvio che nel caso sia chiamata la ProcessMessages, è necessario gestire 
  tutta una serie di situazioni come: disabilitare i pulsanti su cui si 
vuole evitare il clic, impedire la chiusura dell'applicazione e così via.
In quanto all'utilità del ciclo di attesa...mi associo al tuo "mah". :-D


 ha scritto nel messaggio 
news:yW0Le.31381$TR5....@news.edisontel.com...


Luca
	Ciao
	MassimoB
 
---------------------------------
http://www.massimobeschi.it/
---------------------------------
Se tu pagare come dici tu ...
Io lavorare come dico io ...
Se tu pagare come dico io ...
Io lavorare come dici tu ...
---------------------------------