thoga31 Posted November 30, 2011 at 10:27 PM Report #423740 Posted November 30, 2011 at 10:27 PM Vê-se constantemente o readln ou o readkey serem utilizados como pausas. Contudo, eu não gosto nada de utilizar estes, e já hé muito tempo que criei um procedimento com três overloads que permite criar uma pausa totalmente personalizável e de forma muitíssimo simples. Este procedimento é inspirado no comando Pause [Text] do TI-Basic Z80. Código: TYPE TKeys = set of char; procedure Pause(const PauseText : string; const KeysToProceed : TKeys; var KeyReceiver : char); (* PROCEDIMENTO COMPLETO - recebe texto a mostrar, teclas que desbloqueiam a pausa e a variável receptora da chave *) begin write(PauseText); repeat KeyReceiver := ReadKey; until KeyReceiver in KeysToProceed; end; procedure Pause(const PauseText : string; const KeysToProceed : TKeys); overload; (* PROCEDIMENTO COMPACTO - não há output *) var Key : char; begin Pause(PauseText, KeysToProceed, Key); end; procedure Pause(const PauseText : string); overload; (* PROCEDIMENTO SIMPLIFICADO - assume Enter como tecla a processar *) begin Pause(PauseText, [#13]); end; procedure Pause; overload; const StrEmpty : string = ''; begin Pause(StrEmpty); end; Utilização de cada um, por ordem: // ... var chave : char; // ... pause('Esta é uma pausa completa...', [#13, #27], chave); (* Escreve o texto, e as teclas que desbloqueiam a pausa é o Enter e o Esc, e a tecla que for carregada fica guardada na variável chave. *) pause('Esta é uma pausa compacta...', [#13, #27]); (* O mesmo que o anterior, mas a tecla não é guardada em nenhuma variável - é perdida. *) pause('Esta é uma pausa simplificada...'); (* Só mostra texto, sendo o Enter a tecla que desbloqueia a pausa *) // Nota: como é a única tecla que pode desbloquear, não faz sentido ter um // parêmetro por referência que guarde a tecla. pause; (* Faz pausa, sem texto e com o Enter como tecla desbloqueadora. *) // Nota: este overload evita que se tenha de escrever "Pause('');" // ... Este código foi optimizado para Free Pascal. Se for necessária alteração para ser compatível com outros compiladores, digam que eu altero. 🙂 Espero que seja útil. Cumprimentos. 😉 Knowledge is free!
nunopicado Posted November 30, 2011 at 11:00 PM Report #423750 Posted November 30, 2011 at 11:00 PM É bem, é bem... 😉 Código útil para quem começa poder ver algumas potencialidades da linguagem! E para usar, é claro! Mete na wiki (como se fosse preciso dizer... 🙂 ) Este código foi optimizado para Free Pascal. Se for necessária alteração para ser compatível com outros compiladores, digam que eu altero. 🙂 Porreiro, mete aí em PascalZIM! 😉 hehehe Ou melhor, não metas! Senão, ainda algum professor podia ficar a saber que o pascal faz mais do que loops e writeln's (refiro-me claro aos overloads)... "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.
thoga31 Posted November 30, 2011 at 11:07 PM Author Report #423752 Posted November 30, 2011 at 11:07 PM Em 01/12/2011 às 00:00, nunopicado disse: É bem, é bem... 🙂 Código útil para quem começa poder ver algumas potencialidades da linguagem! E para usar, é claro! Mete na wiki (como se fosse preciso dizer... 🙂 ) Obrigado. 🙂 Fui vasculhar os confins da minha pasta "Prgm Tools" e desencantei este procedimento, entre muitos outros úteis. Já estou a colocar, wait 5 seconds (minutes, I must say 😛 ) EDIT: https://wiki.portugal-a-programar.pt/dev_geral/pascal/pronto-a-usar/pause/ Em 01/12/2011 às 00:00, nunopicado disse: Porreiro, mete aí em PascalZIM! 😉 hehehe Ou melhor, não metas! Senão, ainda algum professor podia ficar a saber que o pascal faz mais do que loops e writeln's (refiro-me claro aos overloads)... Questiono-me se o Pascal é mesmo capaz daquilo que tentei fazer, ou mesmo o Delphi. Será que não inventei aquilo que não existe ainda? Pelos vistos, a coisa mais avançada que existe é o PZim... hum... 😉 Knowledge is free!
thoga31 Posted December 3, 2011 at 09:41 PM Author Report #424222 Posted December 3, 2011 at 09:41 PM Corrigi uma pequena falha. O tipo TKeys fui eu que o criei, e é um set of char. Já lá está posto. 😁 Knowledge is free!
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