Senha: Caracteres identicos

Delphi

01/02/2011

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



Iramar Junior

Iramar Junior

Curtidas 0

Respostas

Marco Salles

Marco Salles

01/02/2011

Para descobrir se é a mesma sequencia vc pode utilizar a function abaixo  
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;
  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
GOSTEI 0
Iramar Junior

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?


GOSTEI 0
Marco Salles

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

Iramar Junior

01/02/2011

Marco, ainda não obteve o resultado correto da funcao

  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

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  
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;
    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    
GOSTEI 0
POSTAR