passarito Posted October 11, 2018 at 12:41 PM Report #612033 Posted October 11, 2018 at 12:41 PM 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
Solution Rafael Adão Posted October 11, 2018 at 01:03 PM Solution Report #612034 Posted October 11, 2018 at 01:03 PM Experimente colocar um 'Application.ProcessMessages;' ..... Frm_Shuffle_MP3.StrNovoNome.Caption:=Fich; {Aqui mostra o nome novo} Application.ProcessMessages; .... 1 Report
nunopicado Posted October 11, 2018 at 02:02 PM Report #612035 Posted October 11, 2018 at 02:02 PM 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.
passarito Posted October 11, 2018 at 02:47 PM Author Report #612036 Posted October 11, 2018 at 02:47 PM 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
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