Ajuda com asterisco no cadastro de senha, urgente por favor.

Fórum sobre a linguagem CA-Clipper.

Moderador: Moderadores

vaninho
Usuário Nível 1
Usuário Nível 1
Mensagens: 27
Registrado em: 17 Jul 2004 19:41

Ajuda com asterisco no cadastro de senha, urgente por favor.

Mensagem por vaninho »

Amigos do Fórum, preciso muito da ajuda de vocês, eu utilizo esta codificação abaixo para reconhecimento da senha do usuário para entrada do sistema ,ecoando asterisco ao digitar a senha , funciona perfeitamente !.Só,que eu não consigo utilizar esta mesma codificação para o cadastro de usuário ecoando asterisco e gravar no banco de dados a senha digitada e depois, ser reconhecida na entrada do sistema.

Código: Selecionar todos

Function Senha()                                                             
 Local  wSenha      := "",;                                                  
        wTamanho    := 6 ,;                                                   
        VSENHA      := "",;                                                  
        wNroDigitos := 0                                                      
LIN:=18                                                                       
COL:=42                                                                       
SET CURSOR ON                                                                 
    Do While .T.                                                              
        If wNroDigitos=wTamanho                                              
        Exit                                                                 
    EndIf                                                                    
@ Lin,Col Say ""                                                         
    VSENHA=INKEY(0)                                                          
    wDigito=Inkey(0)                                                         
        Do Case                                                               
            CASE VSENHA=13                                                   
            Case wDigito=13                                                  
            Exit                                                             
              CASE VSENHA=27                                                  
            Case wDigito=27                                                  
            Exit                                                              
             CASE VSENHA=8                                                   
            Case wDigito=8                                                  
            wNroDigitos=wNroDigitos-1                                        
                If wNroDigitos<0                                             
                wNroDigitos=0                                                
                Loop                                                         
            EndIf                                                            
            Col=Col-1                                                        
            @ Lin,Col Say " "                                                
            wSenha=Subs(wSenha,1,Len(wSenha)-1)                           
            Loop                                                             
    EndCase                                                                   
                                                                              
    wNroDigitos = wNroDigitos+1                                               
    WSENHA       = WSENHA+CHR(VSENHA)                                      
    wsenha      = wSenha+Chr(wDigito)                                       
   @ Lin,Col Say Chr(42)                                                     
    Col=Col+1                                                                 
     Loop                                                         
     EndIf                                                            
            Col=Col-1                                                        
            @ Lin,Col Say " "                                                
            wSenha=Subs(wwSenha,1,Len(wSenha)-1)                           
            Loop                                                             
    EndCase                                                                   
                                                                             
    wNroDigitos = wNroDigitos+1                                               
    WSENHA       = WSENHA+CHR(VSENHA)                                      
    wsenha      = wSenha+Chr(wDigito)                                       
    @ Lin,Col Say Chr(42)                                                     
    Col=Col+1                                                                 
 EndDo                                                                        
 wSenha=Wsenha+Space(wTamanho)                                              
                                                                              
 wSenha=Wsenha+Space(wTamanho-Len(wSenha))
 Return(Uppe(wSenha))
 //wDigito     := "",; 254

Na minha rotina de cadastro tentei usar esta codificação ACIMA desta forma

Código: Selecionar todos

Do while.t.
Vusuario=space(7) ; wSenha=Space(6)
Read 
Use usuario shared index nmusu
Seek vusuario
If found()
   Identificação já Utilizada
   Loop
Endif
VSenha = Senha(12,35)
@ 18,42 get wSenha pict “@!”
read
@ say confirma os dados !
if confirma= “s”
    APPE BLANK
    REPLACE SENHA WITH WSENHA
ENDIF
ENDDO
O problema que esta acontecendo é, que quando digita a senha ao dar enter, ele retorna ao get da senha.
O que tenho que fazer para a rotina de cadastro de senha ecoe asterisco ao digitar e gravar no banco de dados sem dar erros.
O que tenho que modificar no exemplo da function senha() ou tenho que ter uma rotina diferente do exemplo function senha(). Ajudem-me por favor. Preciso urgente de uma dica. É a primeira vez que utilizo asterisco em senha, não tenho esperiência.
Editado pela última vez por Pablo César em 19 Dez 2012 16:38, em um total de 1 vez.
Razão: Mensagem editada para formatação de texto em letras minúsculas. Evite postar mensagens com texto TOTALMENTE EM LETRAS MAIÚSCULAS.<br>Veja as Regras do Fórum:<br>7 - Mensagens em letras MAIÚSCULAS poderão ser editadas sem aviso prévio.
kenew
Usuário Nível 2
Usuário Nível 2
Mensagens: 97
Registrado em: 08 Set 2004 15:08
Contato:

Mensagem por kenew »

Pq vc não insere um EXIT no final da rotina antes do ENDDO, é por isso q ele retorna no campo GET.
Responder