Página 1 de 1

Quando penso que o Flagship vai bem....

Enviado: 16 Mai 2019 18:19
por JoséQuintas
Importante: é a versão velha de Flagship que estou usando, não a versão atual
tela1.png
Como dá pra ver no fonte:
- entra no programa mostra "Programa certo mostra este aviso".
- dentro do DO WHILE, se teclar F2 mostra "apertou F2"
tela2.png
Mas no Linux, compilado/linqueditado com Flagship....

F2 mostra a mesma mensagem de quando entra no módulo
Parece que o Flagship perdeu a informação de referência ao fonte, e aciona fonte errado.
Até procurei se a função STATIC existe em outro módulo (seria uma possibilidade) mas não existe.

Já apaguei todos os .o (obj), todos os .c, e até todos os .prg

Muito doido isso.
No momento nem sei o que fazer, talvez apagar alguns dos fontes pra ver se faz alguma diferença.

Quando penso que o Flagship vai bem....

Enviado: 16 Mai 2019 18:31
por asimoes
Isso me lembra format c: resolver qualquer zueira

Quando penso que o Flagship vai bem....

Enviado: 17 Mai 2019 12:01
por JoséQuintas
A coisa é pior do que mostrei....
Pra conseguir alguma coisa, acrescentei aqueles DO CASE, CASE .F., ENDCASE.
Ou seja, fonte que não faz nada.

Código: Selecionar todos

   mVendedor := Space(2)
   MsgExclamation( "Aviso antes do DO WHILE" )

   DO WHILE .T.
      Mensagem( "<F2>Pedidos  <F3>Pend  <F4>Destino  <F5>Consulta  <TAB>Plano Pgto" + ;
         "  <F6>Estoque  <F7>Pedido  <F8>Localizar  <F10>BDI  <K>KIT  <F11> Sair" )

      IF BrowseNavigate( oMyBrowse, @nKey )
         DO CASE
         CASE .F.
         CASE .F.
         CASE .F.
         ENDCASE
         LOOP
      ENDIF
      MsgExclamation( "Tecla " + Ltrim(Str(nKey)) )

      DO CASE
      CASE .F.
      CASE .F.
      CASE .F.
      ENDCASE

      DO CASE

      CASE nKey == K_F2
         MsgExclamation( "Apertou F2" )
         F2_Pedidos()
         oMyBrowse:RefreshAll()

      CASE nKey == K_F3
         F3_Compra()
         oMyBrowse:RefreshAll()

      CASE nKey == K_F4
         F4_Destino( @pDestino, @aItemList )
         oMyBrowse:RefreshAll()

      CASE nKey == K_F5
         F5_Consulta( @aItemList, oMyBrowse, pDestino, @c_Espec, @mVendedor )
         oMyBrowse:RefreshAll()

      CASE nKey == K_F6
         F6_Estoque()
         oMyBrowse:RefreshAll()

      CASE nKey == K_F7
         F7_Pedido( @aItemList, @c_Espec )
         oMyBrowse:refreshAll()

      CASE nKey == K_F8
         f8_Pesquisa()
         oMyBrowse:refreshAll()

      CASE nKey == K_F10
         F10_Bdi()

      CASE Chr( nKey ) $ "kK"
         K_Kits( aItemList, oMyBrowse, mVendedor )
         oMyBrowse:refreshAll()

      CASE nKey == K_TAB
         TBPR->( dbSkip(-1) )
         IF TBPR->( Bof() )
            TBPR->( dbGoBottom() )
         ENDIF
         oMyBrowse:refreshAll()

      CASE nKey == K_F11 .OR. nKey == K_ESC
         n_rec := PRO1->( RecNo() )
         PRO1->( dbSetOrder(1) )
         FOR n_i := 1 TO Len( aItemList )
            PRO1->( dbSeek( aItemList[ n_i, 1 ] ) )
            PRO1->( RecLock() )
            REPLACE pro1->qde_Pe WITH Max( 0, PRO1->qde_pe - aItemList[ n_i, 9 ] )
            PRO1->( RecUnlock() )
            IF Val( Substr( aItemList[ n_i, 1 ] , 1 , 1 ) ) > 7
               KITPRO->( dbSeek( Substr( aItemList[ n_i, 1 ], 3, 3 ) ) )
               KITEM->( dbSeek( KITPRO->cod_KIt ) )
               DO WHILE ! KITEM->( Eof() ) .AND.  KITEM->cod_KIt == KITPRO->cod_Kit
                  PRO1->( dbSeek( KITEM->cod_pro ) )
                  PRO1->( RecLock() )
                  REPLACE pro1->qde_Pe WITH Max( 0, PRO1->qde_pe - aItemList[ n_i, 9 ] )
                  PRO1->( RecUnlock() )
                  KITEM->( dbSkip() )
               ENDDO
            ENDIF
         NEXT
         PRO1->( dbSetOrder( 1 ) )
         PRO1->( dbGoto( n_rec ) )
         SetCursor(1)
         SetColor( cSays )
         EXIT
      OTHERWISE
         MsgExclamation( "Nenhum CASE" )
      ENDCASE
      MsgExclamation( "Saiu do DO CASE" )
   ENDDO

   CLOSE DATABASES

   RETURN

FUNCTION F2_Pedidos()

Num resumo:
- mostra a mensagem "antes do do while"

dentro do do while:
- mostra a tecla pressionada
- aciona algo conforme a tecla, sendo que F2 mostra "teclou F2", e nas outras faz outras coisas
- caso não tenha nada pra tecla, aparece "nenhum CASE"
- depois de qualquer tecla, e analisar os CASES, mostra "saiu do case"
- e finalmente ESC sai fora

O que está acontecendo:

- tecla de espaço: ok, mostra o ascii 32, mostra "nenhum case", "saiu do case"
- tecla ESC: ok, mostra o ascii 27, sai fora
- tecla F6: ok, entra no case nKey == K_F6

- teclas F2 a F5: mostra o ascii 27, e sai fora

Isso foi depois dos CASE .F., agora trocou F2 a F5 por retornar código ascii inválido.

sem os CASE .F., aparecia "aviso antes do do while", como se o fonte estivesse chamando ele mesmo ao teclar de F2 a F5.

Pergunta:
Alguém aí experiente, que possa saber o que essas teclas poderiam fazer, ou no Linux, ou no putty?

Quando penso que o Flagship vai bem....

Enviado: 17 Mai 2019 12:28
por JoséQuintas
Depois do post veio a luz.....
Não tem a ver com flagship.
Provavelmente na atualização do putty, ou reinstalação do Windows 10, a configuração default voltou.
terminal.png
O que tem a ver?
Só olhar:
Teclas de função como ESC + outros caracteres

O que parecia ser executar o mesmo módulo ao teclar F2.....
é que era algo como ESC ENTER, mas que pela tela não deu pra perceber, porque nem piscava.

Mas... porque F6 funcionava?
Sei lá... parece que não vale pra tudo que é Fn