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: 3110
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: 1309
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: 20420
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP
Curtiram: 1 vez

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, multithread, gtwvg, fivewin 25.12, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui), (hmg3), (hmg extended), (oohg), PNotepad, ASP, (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: 1309
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