Função para Getar senha
Moderador: Moderadores
Uai, 2 campos? É só ter 2 inkey(0), dentro de 2 DO WHILEs etc etc.
Cara, o GETSYS tem o que dentro dele? INKEY(0)! E o Tbrowse()?? INKEY(0)! Po, se os dois usam, porque eu não posso usar também?
Eu, particularmente, tenho "n" usuários com "y" senhas em "p" sistemas, sem mexer uma vírgula no GETSYS nem no STD nem no Cargo nem em mais nada. Só que essa funçãozinha chulé que eu postei antes. E que funciona.
Cara, o GETSYS tem o que dentro dele? INKEY(0)! E o Tbrowse()?? INKEY(0)! Po, se os dois usam, porque eu não posso usar também?
Eu, particularmente, tenho "n" usuários com "y" senhas em "p" sistemas, sem mexer uma vírgula no GETSYS nem no STD nem no Cargo nem em mais nada. Só que essa funçãozinha chulé que eu postei antes. E que funciona.
A idéia, Eolo, é proporcionar todos os controles que se encontra no GETSYS, mas sem gambiarra. Uma coisa mais natural. E havendo um nome e duas senhas a coisa já precisaria ficar gambiarra demais. Minha opinião. 
Eu alterei o GETSYS e consegui deixar super simples: @... GET ... PIC "@R!P 10". Senha em maiúscula com 10 caracteres. É dessa naturalidade que estou falando.
Mas a função (de autor desconhecido) que o Stanis postou já fica bem legal. Não altera, mas apenas acrescenta uma função no GETSYS. Depois é só configurar o reader especial no objeto do campo. Não é uma maravilha, mas pra quem não tem nada, resolve muitíssimo bem.
Eu alterei o GETSYS e consegui deixar super simples: @... GET ... PIC "@R!P 10". Senha em maiúscula com 10 caracteres. É dessa naturalidade que estou falando.
Mas a função (de autor desconhecido) que o Stanis postou já fica bem legal. Não altera, mas apenas acrescenta uma função no GETSYS. Depois é só configurar o reader especial no objeto do campo. Não é uma maravilha, mas pra quem não tem nada, resolve muitíssimo bem.
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.
---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.
---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
-
Stanis Luksys
- Colaborador

- Mensagens: 1329
- Registrado em: 18 Jun 2005 03:04
- Localização: São Paulo
- Contato:
Isso varia de sistema para sistema, e de programador para programador. Evidente que o Clipper por si só oferece quase que todos os recursos em sua forma padrão.Eolo escreveu:Eu, particularmente, tenho "n" usuários com "y" senhas em "p" sistemas, sem mexer uma vírgula no GETSYS nem no STD nem no Cargo nem em mais nada.
Mas acredito sinceramente que não seja possível desenvolver um sistema muito versátil sem realizar nenhuma alteração nos processos do Clipper. Um grande exemplo disso foi de o dbEdit ter sido obsoletado pela própria CA, em favor do TBrowse. O pessoal já andava tentando fazer milagre com o coitado do dbEdit. Já vi rotina que muda cor de coluna do dbEdit, coisa de louco!
Alterar o GETSYS propriamente eu não digo, mas trabalhar com a GetList é fundamental em vários aspectos (este da senha é um exemplo).
Outra coisa: o ERRORSYS do Clipper é também muito pobre, impossível ter um sistema grande baseado nele. O próprio manual do Clipper se refere a ele como um EXEMPLO, para servir de base a controle de erros e excessões mais complexas.
Se assim não fosse, nenhum deles viria com fontes, estariam em LIBs.
Acredito que o verdadeiro potencial do Clipper COMEÇA quando se chega nas limitações de seus padrões. É quando vem a necessidade de se alterar este tipo de rotina "interna".
Mas é só uma opinião.
Stanis Luksys
sites.google.com/hblibs
Apoiar e se utilizar de projetos opensource não é uma questão de boicote, mas sim de liberdade.
Utilize, aprimore e distribua.
sites.google.com/hblibs
Apoiar e se utilizar de projetos opensource não é uma questão de boicote, mas sim de liberdade.
Utilize, aprimore e distribua.
Da qual partilho totalmente. E acrescento: todo o sistema básico do Clipper é pobre. E não ocorre isso apenas com o Clipper. Em praticamente qualquer linguagem. Daí a necessidade de expansão. Quem se dispõe a isso só tem a ganhar.Mas é só uma opinião.
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.
---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.
---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
- clodoaldomonteiro
- Usuário Nível 4

- Mensagens: 821
- Registrado em: 30 Dez 2006 13:17
- Localização: Teresina-PI
- Contato:
Tô com o Malígno e o Stanis
O que eu queria fazer, e já fiz, era enviar e-mail pelo sistema, usando o smtpsend.exe, com os seguintes campos:
... daí porque eu queria um campo de senha mais dinâmico.
O meu sistema já tem um box de ajuda a cada campo, como o hint do delphi, tem um gerenciador do ERROS, que grava todos os erros em um DBF e manda para mim via e-mail (dica de vocês aqui do forum), envia e-mail de um backup da base de dados, e sempre tô querendo colocar novidades nele, com a ajuda de TODOS VOCÊS.
O que eu queria fazer, e já fiz, era enviar e-mail pelo sistema, usando o smtpsend.exe, com os seguintes campos:
Código: Selecionar todos
Host SMTP.........:
Email remetente...:
Email destinatário:
Título do email...:
Senha do remetente:
O meu sistema já tem um box de ajuda a cada campo, como o hint do delphi, tem um gerenciador do ERROS, que grava todos os erros em um DBF e manda para mim via e-mail (dica de vocês aqui do forum), envia e-mail de um backup da base de dados, e sempre tô querendo colocar novidades nele, com a ajuda de TODOS VOCÊS.
Malígno, onde devo alterar o getsys para colocar uma mascara nova?Maligno escreveu: Eu alterei o GETSYS e consegui deixar super simples: @... GET ... PIC "@R!P 10". Senha em maiúscula com 10 caracteres. É dessa naturalidade que estou falando.
At. Clodoaldo Monteiro
Linguagens: Clipper / Harbour
Área de Atuação: Sistemas de gestão para Prefeituras Municipais
Fones: (86)3223-0653, 98859-0236
www.simplesinformatica.com.br
Linguagens: Clipper / Harbour
Área de Atuação: Sistemas de gestão para Prefeituras Municipais
Fones: (86)3223-0653, 98859-0236
www.simplesinformatica.com.br
Poxa, faz uma pergunta mais fácil.Malígno, onde devo alterar o getsys para colocar uma mascara nova?
São em vários lugares: onde se faz a impressão, no aplicador de teclas, etc. Pra te dar o caminho das pedras certinho vou ter que estudar o GETSYS de novo. Vai ficar difícil.
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.
---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.
---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
- clodoaldomonteiro
- Usuário Nível 4

- Mensagens: 821
- Registrado em: 30 Dez 2006 13:17
- Localização: Teresina-PI
- Contato:
Vou tentar por aqui, pois a GAS alterou o getsys e pode num ter muita coisa a ver com o seu getsys.
Valeu.
Valeu.
At. Clodoaldo Monteiro
Linguagens: Clipper / Harbour
Área de Atuação: Sistemas de gestão para Prefeituras Municipais
Fones: (86)3223-0653, 98859-0236
www.simplesinformatica.com.br
Linguagens: Clipper / Harbour
Área de Atuação: Sistemas de gestão para Prefeituras Municipais
Fones: (86)3223-0653, 98859-0236
www.simplesinformatica.com.br
Pode ter certeza de que não tem nada a ver com o meu GETSYS.pode num ter muita coisa a ver com o seu getsys
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.
---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.
---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
-
Stanis Luksys
- Colaborador

- Mensagens: 1329
- Registrado em: 18 Jun 2005 03:04
- Localização: São Paulo
- Contato:
Opa,
No Volume 2 do Ramalho também tem uma alteração bacana no getsys para fazer os "reads temporizados", isso é legal pro sujeito não esquecer uma tela de alteração aberta e ir almoçar, enquanto outra pessoa pode estar alterando o mesmo registro...
Isso aí...
No Volume 2 do Ramalho também tem uma alteração bacana no getsys para fazer os "reads temporizados", isso é legal pro sujeito não esquecer uma tela de alteração aberta e ir almoçar, enquanto outra pessoa pode estar alterando o mesmo registro...
Isso aí...
Stanis Luksys
sites.google.com/hblibs
Apoiar e se utilizar de projetos opensource não é uma questão de boicote, mas sim de liberdade.
Utilize, aprimore e distribua.
sites.google.com/hblibs
Apoiar e se utilizar de projetos opensource não é uma questão de boicote, mas sim de liberdade.
Utilize, aprimore e distribua.
- Pablo César
- Usuário Nível 7

- Mensagens: 5312
- Registrado em: 31 Mai 2006 10:22
- Localização: Curitiba - Paraná
Ja pensou alterar o GETSYS para aceitar nos GETs somente minúsculas ?clodoaldomonteiro escreveu:O que eu queria fazer, e já fiz, era enviar e-mail pelo sistema
Isso aí, aconteceu comigo também. E a alteração do GETSYS nesse caso a considero essencial. Claro que quando falamos GETSYS não necessáriamente tem que manter o mesmo nome de arquivo. Isto é, eu tenho GETSYS1.PRG, GETSYS2.PRG dependendo cada caso. Principalmente no meu caso que o meu sistema é modular, onde tenho dezenas de executáveis que compõem o sistema.clodoaldomonteiro escreveu:... daí porque eu queria um campo de senha mais dinâmico.
Isso aí, isso que é usar a cabeça ! Parabéns Clodoaldo. Eu também tenho isso funcionando, só que não exatamente por email (mas também recebo em forma de mensagem em casa). Inclusive, permita-me aconselhar-lhe que na hora que o sistema dá um erro, que esse erro somente seja enviado uma única vez por email. Senão acaba te enchendo de erros que ás vezes são corrigidos e o que falta é atualizar o sistema. Apenas, comento isto para lembrete.clodoaldomonteiro escreveu:grava todos os erros em um DBF e manda para mim via e-mail (dica de vocês aqui do forum)
Ahhhh, somente eles mercem crédito ?. Buahhhh.... Tá vendo, isso porque eu não me manifestei mais... Muitas vezes não me manifesto, porque acabo concordando com o que os colegas dizem. Brincadeira, o crédito não interessa e sim o objetivo cumprido. Sempre é bom comentar coisas que até parecem óbvias mas que no fundo podem serem aperfeiçoadas sempre.clodoaldomonteiro escreveu:Tô com o Malígno e o Stanis
Um clip-abraço !
Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
- clodoaldomonteiro
- Usuário Nível 4

- Mensagens: 821
- Registrado em: 30 Dez 2006 13:17
- Localização: Teresina-PI
- Contato:
Pablo!
Desculpe não ter mencionado vc nos agradecimentos, mas fique sabendo que vc já me ajudou muito com as suas dicas, inclusive nesse tópico, e gostaria sempre a ajuda de todos vocês, senhores da programação em clipper. hehe.
Realmente esse é o melhor forum da internet. Fico feliz de participar dele, ainda que, não ajudando muito e sim usufruindo das dicas, mais prometo melhorar e ajudar mais do que ser ajudado.
Grato pela atenção de todos.
Desculpe não ter mencionado vc nos agradecimentos, mas fique sabendo que vc já me ajudou muito com as suas dicas, inclusive nesse tópico, e gostaria sempre a ajuda de todos vocês, senhores da programação em clipper. hehe.
Realmente esse é o melhor forum da internet. Fico feliz de participar dele, ainda que, não ajudando muito e sim usufruindo das dicas, mais prometo melhorar e ajudar mais do que ser ajudado.
Grato pela atenção de todos.
At. Clodoaldo Monteiro
Linguagens: Clipper / Harbour
Área de Atuação: Sistemas de gestão para Prefeituras Municipais
Fones: (86)3223-0653, 98859-0236
www.simplesinformatica.com.br
Linguagens: Clipper / Harbour
Área de Atuação: Sistemas de gestão para Prefeituras Municipais
Fones: (86)3223-0653, 98859-0236
www.simplesinformatica.com.br
- Pablo César
- Usuário Nível 7

- Mensagens: 5312
- Registrado em: 31 Mai 2006 10:22
- Localização: Curitiba - Paraná
Ahhh não precisa pedir desculpas, foi apenas uma coçadinha minha... hihihi.
Eu também sou grato e tenho certeza que você algum dia irá contribuir com os seus conhecimentos ao pessoal que taí e por quê não eu ainda aprenda algo de você também. Todos nós sempre temos algo aprender na vida. Por isso que existe este forum.Fico feliz de participar dele, ainda que, não ajudando muito e sim usufruindo das dicas, mais prometo melhorar e ajudar mais
Um clip-abraço !
Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
- clodoaldomonteiro
- Usuário Nível 4

- Mensagens: 821
- Registrado em: 30 Dez 2006 13:17
- Localização: Teresina-PI
- Contato:
Olá amigos!
Foi questionado a possibilidade de se colocar no getsys campos tipo senha, pois depois de muito trabalho consegui fazer isso.
Para dizer ao getsys que o campo é uma senha é necessário informar o picture '@P'.
Fiz a modificação no getsys postado pelo Daniel, mesclando um exemplo de campo senha que foi postado aqui no forum.
O bom é que ficou tudo junto: campo senha '@R', minusculo '@M', AJUDA a cada campo e números rolando para a direita.
A função do getsys a alterar foi a GETREADER e eu tirei os tratamentos de acentos somente para ficar menor.
Sei que postei essa informação em outro post, mais quis deixar aqui também, pois foi nesse post que pedi ajuda aos amigos.
Foi questionado a possibilidade de se colocar no getsys campos tipo senha, pois depois de muito trabalho consegui fazer isso.
Para dizer ao getsys que o campo é uma senha é necessário informar o picture '@P'.
Fiz a modificação no getsys postado pelo Daniel, mesclando um exemplo de campo senha que foi postado aqui no forum.
O bom é que ficou tudo junto: campo senha '@R', minusculo '@M', AJUDA a cada campo e números rolando para a direita.
A função do getsys a alterar foi a GETREADER e eu tirei os tratamentos de acentos somente para ficar menor.
Código: Selecionar todos
PROCEDURE GetReader( oGet )
LOCAL nKey,cKey,cRet,original
PRIVATE lPrimKey := .T.
// Read the GET if the WHEN condition is satisfied
IF ( GetPreValidate( oGet ) )
// Activate the GET for reading
oGet:setFocus()
oGet:CARGO := "" //senha
WHILE ( oGet:exitState == GE_NOEXIT )
// Check for initial typeout (no editable positions)
IF ( oGet:typeOut )
oGet:exitState := GE_ENTER
ENDIF
// Tratamento para entrada Direita -> Esquerda
IF ( oGet:type == "N" ) .And. ( Len( oGet:buffer ) > oGet:DecPos )
oGet:Pos := Len( oGet:buffer ) + 1
oGet:End()
oGet:ToDecPos()
oGet:Left()
ELSEIF ( oGet:type == "N" )
oGet:Pos := Len( oGet:buffer ) + 1
oGet:End()
ENDIF
cKey := ''
nKey := 0
// Apply keystrokes until exit
original := oGet:buffer
WHILE ( oGet:exitState == GE_NOEXIT )
// Armazena a tecla que foi pressionada anteriormente
cKey := Chr(nKey)
// Le a Pr¢xima tecla
nKey := inkey( 0 )
// Ajusta Caract‚r de Retorno
IF !READINSERT()
cRet := CHR(19)
ELSE
cRet := CHR(08)
ENDIF
//tratamento de campo senha senha
if '@P' $ oget:picture
IF nKey >= 32 .AND. nKey <= 255
oGet:CARGO := oGet:CARGO() + CHR(nKey)
GetApplyKey(oGet, 42, original) // NOME COMPLETO
ELSEIF nKey = 8
oGet:CARGO := SUBSTR(oGet:CARGO(), 1, LEN(oGet:CARGO()) - 1)
GetApplyKey(oGet, nKey, original) // NOME COMPLETO
ELSEIF nKey = 13 // Sai com tecla ENTER e retorna a
// senha digitada
GetApplyKey(oGet, nkey, original) // NOME COMPLETO
ELSEIF nKey = 27 // Sai com Tecla ESC e retorna vazio
GetApplyKey(oGet, nkey, original) // NOME COMPLETO
ELSEIF nKey = 5 // Volta para o get anterior
oGet:CARGO := space(15)//preenche o get com espa‡os
GetApplyKey(oGet, nKey, original) // NOME COMPLETO
ENDIF
endif
// Verifica tecla pressionada
if !('@P' $ oget:picture) //se nÆo for campo senha
GetApplyKey( oGet, nkey, original )
endif
*
lPrimKey := .F.
*
ENDDO
// Disallow exit if the VALID condition is not satisfied
IF ( !GetPostValidate( oGet ) )
oGet:exitState := GE_NOEXIT
ENDIF
ENDDO
// De-activate the GET
oGet:killFocus()
ENDIF
//tratamento de campo senha senha
if '@P' $ oget:picture
IF oGet:EXITSTATE() <> 7
oGet:VARPUT(oGet:CARGO())
ENDIF
endif
RETURN
At. Clodoaldo Monteiro
Linguagens: Clipper / Harbour
Área de Atuação: Sistemas de gestão para Prefeituras Municipais
Fones: (86)3223-0653, 98859-0236
www.simplesinformatica.com.br
Linguagens: Clipper / Harbour
Área de Atuação: Sistemas de gestão para Prefeituras Municipais
Fones: (86)3223-0653, 98859-0236
www.simplesinformatica.com.br
Clodoaldo,
Blz.
Como você faz para validar uma senha usando a modificação feita no getsys.
EX.:
cSenha:=SPACE(6)
Exemplo: @10,00 SAY "Informe a senha: " GET cSenha PICT "@P" VALID VALSEN(cSenha)=.T.
READ
Não consegui validar desta forma o get passa "******" para a função ValSen()
Tem jeito?
Obs.: estou usando o getsys2.prg que você me enviou.
[]´S
Blz.
Como você faz para validar uma senha usando a modificação feita no getsys.
EX.:
cSenha:=SPACE(6)
Exemplo: @10,00 SAY "Informe a senha: " GET cSenha PICT "@P" VALID VALSEN(cSenha)=.T.
READ
Não consegui validar desta forma o get passa "******" para a função ValSen()
Tem jeito?
Obs.: estou usando o getsys2.prg que você me enviou.
[]´S
clodoaldomonteiro escreveu:Seguindo a dica de vocês incluí as seguintes linhas:... e ficou tudo certinho.Código: Selecionar todos
... ... ELSEIF L2 = 5 // Volta para o get anterior P1:CARGO := space(15)//preenche o get com espaços GetApplyKey(P1, L2) // NOME COMPLETO .... ....
Valeu a força.[/code]
- clodoaldomonteiro
- Usuário Nível 4

- Mensagens: 821
- Registrado em: 30 Dez 2006 13:17
- Localização: Teresina-PI
- Contato:
Não tinha testado com o VALID.
Mas me diga o que é que você quer validar, para que eu possa entender melhor, pois eu só valido se a senha é válida depois do READ e se não existir eu LOOP e volto pro início do WHILE, depois se o contador estourar três tentativas sai definitivamente.
Mas se ainda assim você quiser usar o VALID, eu posso tentar concertar o erro.
Mas me diga o que é que você quer validar, para que eu possa entender melhor, pois eu só valido se a senha é válida depois do READ e se não existir eu LOOP e volto pro início do WHILE, depois se o contador estourar três tentativas sai definitivamente.
Mas se ainda assim você quiser usar o VALID, eu posso tentar concertar o erro.
At. Clodoaldo Monteiro
Linguagens: Clipper / Harbour
Área de Atuação: Sistemas de gestão para Prefeituras Municipais
Fones: (86)3223-0653, 98859-0236
www.simplesinformatica.com.br
Linguagens: Clipper / Harbour
Área de Atuação: Sistemas de gestão para Prefeituras Municipais
Fones: (86)3223-0653, 98859-0236
www.simplesinformatica.com.br
