Senha: Caracteres identicos
Boa tarde!!!
Tenho um form de alteracao de senha, onde é solicitado a senha atual, nova senha e confirmação da nova senha.
Como faço para verificar no edit onde o usuario ira informar a nova senha que nao foi informado somente caracteres identicos, exemplo, caso o usuario informe 99999999 ou aaaaaaa, retorne uma mensagem de erro.
Como faço tb para verificar se a nova senha em alguma posicao o usuario nao informou o nome do usuario como senha, exemplo, usuario de acesso "adm1234" e informa na nova senha "7adm1234a", veja que existe na posicao a mesma informacao do usuario de acesso, impedir que isso ocorre e retornar uma mensagem de erro.
Fico no aguardo
Tenho um form de alteracao de senha, onde é solicitado a senha atual, nova senha e confirmação da nova senha.
Como faço para verificar no edit onde o usuario ira informar a nova senha que nao foi informado somente caracteres identicos, exemplo, caso o usuario informe 99999999 ou aaaaaaa, retorne uma mensagem de erro.
Como faço tb para verificar se a nova senha em alguma posicao o usuario nao informou o nome do usuario como senha, exemplo, usuario de acesso "adm1234" e informa na nova senha "7adm1234a", veja que existe na posicao a mesma informacao do usuario de acesso, impedir que isso ocorre e retornar uma mensagem de erro.
Fico no aguardo
Iramar Junior
Curtidas 0
Respostas
Marco Salles
01/02/2011
Para descobrir se é a mesma sequencia vc pode utilizar a function abaixo
Para descobrir se tem o nome do usario na String basta usar a function Nativa do Delphi pos
if if pos(NomeDoUSaior,edtSenha.Text) > 0 then
se for > Zero é porque tem
function SequenciaIdentica(const Senha:String;inicio:integer=1):boolean; var i:integer; begin try for I := inicio to length(Senha)-1 do if Senha[i] = Senha[i+1] then result:=SequenciaIdentica(senha,i+1) else abort; except result:=false; end; end;
GOSTEI 0
Iramar Junior
01/02/2011
Marco, nao consegui fazer funcionar a funcao sequenciaidentica, mesmo tento caracter diferente no edit da senha esta retornando a mensagem de erro.
Qual seria a sintexa?
Qual seria a sintexa?
GOSTEI 0
Marco Salles
01/02/2011
procedure TForm6.Button6Click(Sender: TObject);
begin
if SequenciaIdentica(Edit1.Text) then
ShowMessage('identica')
else
showmessage('Diferentes');
end;
GOSTEI 0
Iramar Junior
01/02/2011
Marco, ainda não obteve o resultado correto da funcao
nao acontece nada, se digitar aaaaaaaa a senha é gravada normalmente
if SequenciaIdentica(EditNovaSenha.Text) then
begin
ShowMessage('A senha não deve conter caracteres idênticos consecutivos!!!');
EditNovaSenha.Text := '';
EditNovaSenha.SetFocus;
exit;
end;
nao acontece nada, se digitar aaaaaaaa a senha é gravada normalmente
GOSTEI 0
Marco Salles
01/02/2011
Bem , eu não sei como vc esta a aplicando a função
Ela retorna True qnd for identico e false qnd não for
eu aqui digito para o edit aaaaaaaa e qnd eu faço
if SequenciaIdentica(edit1.text) then
Showmessage('iguais')
esle
Showmessage('diferente');
Agora se o que vc tiver colocando dentro do Seu
if SequenciaIdentica(edit1.text) then
logica Para não gravar a senha ?????
não tiver obtendo o resultado que vc necessita , vc deve rever estes métodos
function SequenciaIdentica(const Senha:String;inicio:integer=1):boolean; var i:integer; begin try for I := inicio to length(Senha)-1 do if Senha[i] = Senha[i+1] then result:=SequenciaIdentica(senha,i+1) else abort; except result:=false; end; end;
GOSTEI 0