Italian community of Lazarus and Free Pascal
Programmazione => Generale => Topic aperto da: xinyiman - Dicembre 23, 2012, 10:25:54 pm
-
Ciao ragazzi, non riesco a capire una cosa.
Quando eseguo questo codice sul while mi esce dalla procedura. Non prosegue neanche ad eseguire i passaggi successivi, mentre se tolgo il not lui passa all'istruzione successiva. Vi avverto che questo mio software usa 2 thread secondari. Qualcuno sa dirmi perchè?!
appoggio:=SonoUscitoDalCicloLetturaFile;
while not (appoggio) do
begin
Sleep(1000);
end;
-
Immagino che la "SonoUscitoDalCicloLetturaFile" sia una funzione non rientrante, a dispetto dell'uso dei thread, per cui sincrona.
Dimandina bastarda, lo Sleep, non ti ha mai dato rogne vero?
Da quello che ho capito è lo sleep che ti sta incasinando la vita, ma magari leggo male quello che ti sta succedendo....
Stilgar
-
Non so se è troppo banale ma secondo me.... dovresti mettere...
while not (appoggio) do
begin
appoggio:=SonoUscitoDalCicloLetturaFile;
Sleep(1000);
end;
se invece l'istruzione che restitusce appoggio e' fuori dal ciclo
while not (appoggio) do
begin
application.processmessages;
Sleep(1000);
end;
-
In questo caso non è lo sleep perchè se lo commento e scrivo altro ho lo stesso problema, si pianta sulla riga del while
-
Committa il codice in source forge, in questo modo posso scaricare il progetto e fare qualche prova (sempre che non sia un progetto di lavoro, con tutti i casini che comporta dal punto di vista privacy e menate simili).
Anche fare uno sleep ad cazum senza le tue impostazioni di progetto non avrebbe senso come risposta.
Stilgar
-
ho cambiato da while...do a repeat...until e sembra funzionare. faccio altri test e vi dico