passarito 58 Posted October 11, 2018 Report Share Posted October 11, 2018 Boa tarde. Desenvolvi um programa simples para misturar ficheiros. O programa está a funcionar bem, mas as labels do form apenas mostram o último ficheiro, não vão mostrando os nomes dos ficheiros à medida que são alterados. O procedimento que trata desse ponto é o este: procedure shuffle; Var FileInfo: TSearchRec; Fich, SNum:String; Num, Erro, i:Integer; f:file; begin Randomize; if FindFirst('*.mp3', faArchive, FileInfo) = 0 then begin Repeat Fich:=FileInfo.Name; Frm_Shuffle_MP3.StrNomeOriginal.Caption:=Fich; {Aqui mostra o nome atual} Val(copy(Fich,1,4), Num, Erro); if (Erro=0) and (Fich[5]='_') then begin Delete(Fich,1,5); end; Num:=Random(9999)+1; Str(Num,SNum); For i:=length(SNum) to 3 do SNum:='0'+SNum; Fich:=SNum+'_'+Fich; AssignFile(f,FileInfo.Name); Rename(f,Fich); Frm_Shuffle_MP3.StrNovoNome.Caption:=Fich; {Aqui mostra o nome novo} until FindNext(FileInfo)<>0; FindClose(FileInfo); end; end; experimentei colocar um sleep para o processo ser mais lento e verificar se as labels realmente alteravam ou não e as labels ficam em branco até ao último ficheiro. Alguém sabe a razão deste comportamento? Obrigado Link to post Share on other sites
Solution Rafael Adão 2 Posted October 11, 2018 Solution Report Share Posted October 11, 2018 Experimente colocar um 'Application.ProcessMessages;' ..... Frm_Shuffle_MP3.StrNovoNome.Caption:=Fich; {Aqui mostra o nome novo} Application.ProcessMessages; .... 1 Report Link to post Share on other sites
nunopicado 1,247 Posted October 11, 2018 Report Share Posted October 11, 2018 Esse comportamento ocorre porque a tarefa está a ser executada na mesma thread que o user interface. Isto faz com que algumas mensagens do windows fiquem na queue até haver 'uma aberta' para as processar. Como algumas dessas mensagens incluem a actualização dos valores mostrados no UI, acabas por não ter um refresh correcto. Podes testar a dica do @Rafael Adão, que para coisas simples costuma resolver. Idealmente, o teu processamento de ficheiros ficaria numa thread dedicada, deixando a principal para actualizar o UI, mas para coisas simples, se o ProcessMessages funcionar, podes não querer ir por aí... 1 Report "A humanidade está a perder os seus génios... Aristóteles morreu, Newton já lá está, Einstein finou-se, e eu hoje não me estou a sentir bem!" > Não esclareço dúvidas por PM: Indica a tua dúvida no quadro correcto do forum. Link to post Share on other sites
passarito 58 Posted October 11, 2018 Author Report Share Posted October 11, 2018 Obrigado @Rafael Adão , resolveu na perfeição. @nunopicado, tens razão, não quero ir por aí não. Aquilo nem se pode chamar de programa de tão "simplérrimo" que é. Se leste o código, o programa... é aquilo! Coloca 4 algarismos e um underscore em todos os ficheiros mp3 por forma a imitar o shuffle dos players. É que os phones que tenho não têm essa função e estava farto de ouvir sempre as mesmas musicas pela mesma ordem. E quando se tem cerca de 10h de musica as últimas nunca são ouvidas. Bem, obrigado aos 2 Só mais uma coisa, como é que coloco resolvido no tópico Link to post Share on other sites
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now