Página 2 de 4
Enviado: 11 Out 2007 00:35
por Maligno
Quem é vivo sempre aparece.
rrfsistemas escreveu:Ja que vcs stão precisando de uma função de senha
Essa função é +/- equivalente ao exemplo postado pelo Leonardo. Se bem que a sua (não testei) é bem mais enxuta.
Mas, como eu tinha dito, a modificação do GETSYS traz mais benefícios. Por exemplo: o sujeito vai se cadastrar e você quer que ele digite a senha duas vezes, pra confirmação. Num GET de verdade ficaria muito mais fácil. Mas toda dica é válida, claro. Alguém sempre pode aproveitar.

Enviado: 11 Out 2007 20:26
por rrfsistemas
Pois é Maligno estou vivo !!
Mas sempre estou olhando os posts, só não escrevo mais pq agora uso java e o.Net.
Deixei de programar na area comercial e estou com o setor de Call Center.
A burrocracia do governo me espantou de uma ve$ por toda$.
Enviado: 11 Out 2007 21:06
por Maligno
só não escrevo mais pq agora uso java e o.Net.
Boa opção. Melhor que o VFP, a meu ver.
A burrocracia do governo me espantou de uma ve$ por toda$.
Felizmente há outras alternativas em sistemas de administração que não dependem do governo em nada.

Enviado: 12 Out 2007 22:26
por clodoaldomonteiro
Malígno!
Como eu poderia alterar o Getsys, qual função eu devo alterar?
Enviado: 12 Out 2007 22:33
por Maligno
Mas o Stanis postou um exemplo já prontinho. Note que a função si, é um leitor especialista. No código exemplo ele modificou a variável que contém o bloco de código que faz a leitura do campo (o último da lista GET, daí o ATail()), usando esse leitor especialista. Simples de tudo. Eu não testei, nem li o código direito, mas tá com pinta de que vai funcionar bem.

Enviado: 12 Out 2007 22:56
por Stanis Luksys
Opa,
A função que postei não fui eu que desenvolvi.
Foi uma época que precisei desta rotina e não tinha tempo para desenvolver nada, eu até poderia ter aproveitado uma função que eu usava para pesquisa incremental, que utiliza este mesmo método das outras postadas. No entanto esta me pareceu mais completa por trabalhar, ainda que não perfeitamente, com lista de gets.
É como eu disse, da pra aprimorar.
Enviado: 12 Out 2007 23:17
por clodoaldomonteiro
Malígno ou Stanis!
É que a rotina postada trava no último get e não dá prá usar a seta para cima, ai os operadores ficam enchendo.
Enviado: 12 Out 2007 23:22
por Stanis Luksys
É extamante isso que falei que da pra aprimorar.
Todas as rotinas postadas apresentam este problema.
Poderia alterar o GET pelo std.ch adicionando uma cláusula PASSWORD e colocando uma rotina lá. Não é tão complicado.
Falou...
Enviado: 12 Out 2007 23:47
por clodoaldomonteiro
Seguindo a dica de vocês incluí as seguintes linhas:
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
....
....
... e ficou tudo certinho.
Valeu a força.[/code]
Enviado: 12 Out 2007 23:49
por Stanis Luksys
Muito bom mesmo, era disso que eu tava falando! rs
Aproveite a segunda dica e coloque a cláusula password no std.ch, vai ficar excelente!!!
Falou!
Enviado: 13 Out 2007 00:13
por clodoaldomonteiro
Quanto a alterar a STD.ch acho que não vai dar, nunca alterei esses arquivos, se não me enganno ele serve para criar vários comandos e definir com eles vão agir no clipper.
Poderia também colocar mais uma máscara no picture, no getsys?
Enviado: 13 Out 2007 01:02
por Maligno
É que a rotina postada trava no último get e não dá prá usar a seta para cima, ai os operadores ficam enchendo.
Como eu disse, não li o código. Mas pelo jeito você conseguiu se virar muito bem. Parabéns.

Enviado: 13 Out 2007 01:03
por Maligno
Quanto a alterar a STD.ch acho que não vai dar, nunca alterei esses arquivos, se não me enganno ele serve para criar vários comandos e definir com eles vão agir no clipper.
É muito mais fácil do que você imagina. É só seguir os exemplos que já existem no próprio STD.CH.
Poderia também colocar mais uma máscara no picture, no getsys?
Aí a coisa já complica um pouco, já que você teria de fazer o GETSYS entender como a máscara deverá ser interpretada.
Enviado: 13 Out 2007 14:12
por Eolo
Que me desculpem quem sabe fazer coisa melhor, mas pra que complicar se pode facilitar? STD, Getsys, Cargo...? Complicou, falou aramaico antigo...
Que tal usar só o INKEY() numa função caseira? A seguir, uma idéia.
Código: Selecionar todos
...
publ senha:="Eolo0703" // senha c/ 8 digitos, guardada em qq lugar (DBF, EXE etc)
...
if senha()=.t.
relat_venda()
endi
function senha
priv lk,tc,ret
do whil .t.
inkey(0) // espera entradas...
lk=lastkey()
if lk=27 // se teclar ESC, sai fora...
ret=.f.
exit
endi
if !((lk>47 .and. lk<58) .or. (lk>64 .and. lk<91) .or. (lk>96 .and. lk<123))
* se não digitou A/Z ou 0/9, volta pro loop
loop
endi
tc=tc+chr(lk)
@10,10 say repl("*",len(tc)) // mostra N asteriscos em algum lugar da tela
if len(tc)=8 // se atingiu 8 dígitos, sai
if tc==senha
ret=.t.
else
ret=.f.
endi
exit
endi
endd
retu ret
Enviado: 13 Out 2007 14:46
por Maligno
Sim, Eolo. É o que tínhamos conversado antes. Há uma utilidade pra isso. Em alguns casos até resolve, mas é simples demais e não interage com o GETSYS. E há situações em que é necessário manter um campo (ou dois) de senha numa lista GET. Aí essa função já não resolve.