Página 1 de 1

sair de loop com ESC

Enviado: 15 Jan 2014 15:03
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.

sair de loop com ESC

Enviado: 15 Jan 2014 16:49
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

sair de loop com ESC

Enviado: 15 Jan 2014 20:00
por ANDRIL

Código: Selecionar todos

DO WHILE .T.
inkey(0.01)
IF INKEY() = 27
EXIT
ENDIF 
ENDDO
Ate+

sair de loop com ESC

Enviado: 16 Jan 2014 19:40
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.

sair de loop com ESC

Enviado: 17 Jan 2014 06:57
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+