Array
(
)

sistema congelado!

Crcam
   - 16 mar 2006

como evito que meu sistema congele durante um processo que pode levar de 2 a 10 minutos


eu já tentei Application.ProcessMessages

e THREAD não achei uma pessoa que me ajude a montar um pois nunca trabalehi com ele...


Aroldo Zanela
   - 17 mar 2006

Colega,

O método Application.ProcessMessages ´funciona´ dentro de uma estrutura de laço, entretanto, dependendo de que esteja sendo processado, realmente nenhum resultado esperadom será obtido.
Se puder, coloque um fragmento do código (comentado) para avaliarmos uma solução.


Martins
   - 17 mar 2006


Citação:
como evito que meu sistema congele durante um processo que pode levar de 2 a 10 minutos


eu já tentei Application.ProcessMessages

e THREAD não achei uma pessoa que me ajude a montar um pois nunca trabalehi com ele...


Nobre amigo Carlos, passei um e-mail para vc com um exemplo básico de Thread, quanto ao Application.Processmessage, procede o q Aroldo Zanela já ressaltou, mas ainda assim, coloque o código q deseja q seja colocado em uma thread.

Boa sorte!


Crcam
   - 18 mar 2006

// copia public
procedure TForm1.BkpPublic(Sender: TObject);
var
DirPublicOrig,DirPublicDest:pchar;
a:integer;
begin

DirPublicOrig:=pchar(PublicOr);

DirPublicDest:=pchar(PublicDe);

for a:=0 to FileListBox_public.Items.Count do
begin
FileListBox_public.itemindex:=a;
Gauge_public.progress:=(a*100) div FileListBox_public.Items.Count;
copyfile(pchar(DirPublicOrig+´\´+ExtractFilename(FileListBox_public.FileName)),pchar(DirPublicDest+´\´+ExtractFilename(FileListBox_public.FileName)),true);
end;


// hora fim
Hora_final:=(Time);
lbl_hora_final.Caption:=timetostr(Hora_final);
lbl_temp.Caption :=TimeToStr(Hora_Inicial - Hora_final);
// fim hora fim
end;
// fim copia public


// limpeza
procedure TForm1.LimpaArq(Sender: TObject);
var
SR: TSearchRec;
copan, publi: integer;
begin

begin
copan := FindFirst(CopanDe+´\*.*´, faAnyFile, SR);
while copan = 0 do begin
if (SR.Attr and faDirectory) <> faDirectory then
if not DeleteFile(CopanDe+´\´ + SR.Name) then
ShowMessage(´Não Foi Possível Limpar´ +CopanDe+´\´+SR.Name);
copan := FindNext(SR);
end;
end;

begin
publi := FindFirst(PublicDe+´\*.*´, faAnyFile, SR);
while publi = 0 do begin
if (SR.Attr and faDirectory) <> faDirectory then
if not DeleteFile(PublicDe+´\´ + SR.Name) then
ShowMessage(´Não Foi Possível Limpar´ +PublicDe+´\´+SR.Name);
publi := FindNext(SR);

end;
end;

end;
// fim limpeza

são essas funções basicas copia e limpeza