GETSENHA

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

Moderador: Moderadores

MARCELOG
Usuário Nível 4
Usuário Nível 4
Mensagens: 546
Registrado em: 15 Mar 2005 16:54
Localização: Divinópolis/MG

GETSENHA

Mensagem por MARCELOG »

A FUNÇÃO GETSENHA PARA MOSTRAR "*" EM SENHAS, QUE FUNCIONA LEGAL EM CLIPPER, GERA ERRO DE "UNRESOLVED EXTERNAL" NO XHARBOUR.

ALGUÉM SABE COMO RESOLVER O PROBLEMA?

MGS
Avatar do usuário
Antonio
Usuário Nível 3
Usuário Nível 3
Mensagens: 347
Registrado em: 14 Ago 2003 17:33
Localização: Sao Paulo - SP
Contato:

Mensagem por Antonio »

Posta a função ou seja mais esclarecedor. Unresolved External e mais o que?

Veja se todas as funções e/ou procedures que são referenciadas no projeto, constam do mesmo.
Antonio Carlos
Harbour 3.2 (20180213)
Hwgui 2.20 3b | PostGresql 9.5 | ADO/ODBC
MARCELOG
Usuário Nível 4
Usuário Nível 4
Mensagens: 546
Registrado em: 15 Mar 2005 16:54
Localização: Divinópolis/MG

Mensagem por MARCELOG »

Antonio escreveu:Posta a função ou seja mais esclarecedor. Unresolved External e mais o que?

Veja se todas as funções e/ou procedures que são referenciadas no projeto, constam do mesmo.
A função é a seguinte:

** Kiel - Ezequiel Moraes - ezequielmoraes@bol.com.br
** Exemplo para Pegar Senha e mostrar na tela *
** GETSEN(<senha>) - Retorna Senha se ENTER ou Vazio se ESC
** Clipper getsenha
** Rtlink ou Blinker

Function Main()
CLS
csenha := SPACE(10)
calgo := SPACE(10)
@01,00 SAY PADC("Kiel - Ezequiel Moraes - Exemplo para Pegar Senha",80)

@05,37 Say "Digite Algo...: " get calgo pict "@!" // apenas para mostrar
// que este nao pega *

@06,37 Say "Digite Senha..: " get csenha pict "@!"
ATAIL(GETLIST):READER := {|BL1|GETSEN(BL1)} // Pega csenha e
// mostra *

@07,37 Say "Digite Algo...: " get calgo pict "@!" // apenas para mostrar
// que este nao pega *
READ

@10,37 Say "Senha Digitada: "+csenha
INKEY(0)
CLS

Return

PROCEDURE GETSEN(P1)

LOCAL L2, L3, L4

IF GETPREVALI(P1)

P1:SETFOCUS()
P1:CARGO := ""

DO WHILE P1:EXITSTATE() == 0

IF P1:TYPEOUT()

P1:EXITSTATE := 5

ENDIF

DO WHILE P1:EXITSTATE() == 0

L2 := INKEY(0)

IF L2 >= 32 .AND. L2 <= 255

P1:CARGO := P1:CARGO() + CHR(L2)
GETAPPLYKE(P1, 42)

ELSEIF L2 = 8

P1:CARGO := SUBSTR(P1:CARGO(), 1, LEN(P1:CARGO()) - 1)
GETAPPLYKE(P1, L2)

ELSEIF L2 = 13 // Sai com tecla ENTER e retorna a
// senha digitada
GETAPPLYKE(P1, L2)

ELSEIF L2 = 27 // Sai com Tecla ESC e retorna vazio

GETAPPLYKE(P1, L2)

ENDIF

ENDDO

IF .NOT. GETPOSTVAL(P1)

P1:EXITSTATE := 0

ENDIF

ENDDO

P1:KILLFOCUS()

ENDIF

IF P1:EXITSTATE() <> 7

P1:VARPUT(P1:CARGO())

ENDIF

RETURN


E o erro o seguinte:

UNRESOLVED EXTERNAL ´_HB_FUN_GETPREVALI´ REFERENCED FROM...
UNRESOLVED EXTERNAL ´_HB_FUN_GETAPPLYKE´ REFERENCED FROM...
UNRESOLVED EXTERNAL ´_HB_FUN_GETPOSTVAL´ REFERENCED FROM...
Avatar do usuário
Antonio
Usuário Nível 3
Usuário Nível 3
Mensagens: 347
Registrado em: 14 Ago 2003 17:33
Localização: Sao Paulo - SP
Contato:

Mensagem por Antonio »

Compila esse codigo:

Atente para os nomes:

GetPreValidate
GetApplyKey
GetPostValidade

Código: Selecionar todos


Function Main()
CLS 
csenha := SPACE(10) 
calgo := SPACE(10) 
@01,00 SAY PADC("Kiel - Ezequiel Moraes - Exemplo para Pegar Senha",80) 

@05,37 Say "Digite Algo...: " get calgo pict "@!" // apenas para mostrar 
// que este nao pega * 

@06,37 Say "Digite Senha..: " get csenha pict "@!" 
ATAIL(GETLIST):READER := {|BL1|GETSEN(BL1)} // Pega csenha e 
// mostra * 

@07,37 Say "Digite Algo...: " get calgo pict "@!" // apenas para mostrar 
// que este nao pega * 
READ 

@10,37 Say "Senha Digitada: "+csenha 
INKEY(0) 
CLS 

Return 

PROCEDURE GETSEN(P1) 

LOCAL L2, L3, L4 

IF GETPREVALIDATE(P1) //  NOME COMPLETO

P1:SETFOCUS() 
P1:CARGO := "" 

DO WHILE P1:EXITSTATE() == 0 

IF P1:TYPEOUT() 

P1:EXITSTATE := 5 

ENDIF 

DO WHILE P1:EXITSTATE() == 0 

L2 := INKEY(0) 

IF L2 >= 32 .AND. L2 <= 255 

P1:CARGO := P1:CARGO() + CHR(L2) 
GetApplyKey(P1, 42)  // NOME COMPLETO

ELSEIF L2 = 8 

P1:CARGO := SUBSTR(P1:CARGO(), 1, LEN(P1:CARGO()) - 1) 
GetApplyKey(P1, L2)  // NOME COMPLETO

ELSEIF L2 = 13 // Sai com tecla ENTER e retorna a 
// senha digitada 
GetApplyKey(P1, L2)  // NOME COMPLETO

ELSEIF L2 = 27 // Sai com Tecla ESC e retorna vazio 

GetApplyKey(P1, L2) // NOME COMPLETO

ENDIF 

ENDDO 

IF .NOT. GETPOSTVALIDATE(P1) // NOME COMPLETO

P1:EXITSTATE := 0 

ENDIF 

ENDDO 

P1:KILLFOCUS() 

ENDIF 

IF P1:EXITSTATE() <> 7 

P1:VARPUT(P1:CARGO()) 

ENDIF 

RETURN 


Abraços
Antonio Carlos
Harbour 3.2 (20180213)
Hwgui 2.20 3b | PostGresql 9.5 | ADO/ODBC
MARCELOG
Usuário Nível 4
Usuário Nível 4
Mensagens: 546
Registrado em: 15 Mar 2005 16:54
Localização: Divinópolis/MG

Mensagem por MARCELOG »

100% é máximo que eu posso dizer quanto ao funcionamento da função e,
100000000000000000000000000000000000000000000000000000000%
o mínimo que posso agradecer.

Valeu.

MGS
culik

Mensagem por culik »

Marcelo

a funcao em questao e parte da ct.lib do xharbour

quando criar o makefile com o xharbour via hbmake selecione a opcao use libs externas e selecione a lib

[]´s
Luiz
www.xharbour.com.br

ps: use tambem o news oficial em news://news.xharbour.org/xharbour.spanish.portuguese
Responder