sair de loop com ESC

Projeto [x]Harbour - Compilador de código aberto compatível com o Clipper.

Moderador: Moderadores

LUCAS MACHADO
Usuário Nível 1
Usuário Nível 1
Mensagens: 25
Registrado em: 31 Mai 2013 11:43
Localização: RIO DE JANEIRO/RJ

sair de loop com ESC

Mensagem por LUCAS MACHADO »

Alguém saberia como substituir a saida de um loop (DO / ENDDO) no xHarbour?
Uso no Clipper o famoso

DO WHILE .T.

IF INKEY() = 27
EXIT
ENDIF

ENDDO


Desde já obrigado.
alxsts
Colaborador
Colaborador
Mensagens: 3092
Registrado em: 12 Ago 2008 15:50
Localização: São Paulo-SP-Brasil

sair de loop com ESC

Mensagem por alxsts »

Olá!

Este código mostrado por você funciona perfeitamente em xHarbour.

Se quiser melhorar, pode usar assim:

Código: Selecionar todos

#include "inkey.ch"

Proc Main()

cls

DO WHILE INKEY() != K_ESC

   ? Time()

ENDDO
[]´s
Alexandre Santos (AlxSts)
Avatar do usuário
ANDRIL
Usuário Nível 5
Usuário Nível 5
Mensagens: 1299
Registrado em: 06 Jul 2004 00:44
Contato:

sair de loop com ESC

Mensagem por ANDRIL »

Código: Selecionar todos

DO WHILE .T.
inkey(0.01)
IF INKEY() = 27
EXIT
ENDIF 
ENDDO
Ate+
Clipper 5.2e / Blinker 5.1 / Harbour 3.2 / GTwvg
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

sair de loop com ESC

Mensagem por JoséQuintas »

Usar somente Inkey() pode falhar se houver mais de um loop.
Aqui uso igual no Clipper.

Código: Selecionar todos

nKey := 0
DO WHILE nKey != K_ESC .AND. .NOT. Eof()
   nKey := Inkey()
   DO WHILE nKey != K_ESC .AND. .NOT. Eof()
      nKey := Inkey()
      SKIP
   ENDDO
ENDDO
Obs. estranhei a rotina anterior.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
ANDRIL
Usuário Nível 5
Usuário Nível 5
Mensagens: 1299
Registrado em: 06 Jul 2004 00:44
Contato:

sair de loop com ESC

Mensagem por ANDRIL »

JoséQuintas escreveu:Obs. estranhei a rotina anterior.
José, se for a minha rotina realmente postei errado. O correto é com uso de LASTKEY() e não INKEY()

Código: Selecionar todos

DO WHILE .T. 
 inkey(0.01) 
 IF LASTKEY() = 27 
 EXIT 
 ENDIF 
ENDDO

Uso sem armazenagem em variável e funciona normal.
Ate+
Clipper 5.2e / Blinker 5.1 / Harbour 3.2 / GTwvg
Responder