Fonte: www.activedelphi.com.br
Veja nesta dica um código simples mas bastante útil, que gera senhas aleatórias podendo conter somente numeros, somente letras ou letras e números. O autor também aborda um pouco do comando try..except. Confira!
Primeiramente, vamos ao tutorial: insira em um form um Edit, abaixo dele um RadioGroup e depois outro Edit. Nesse RadioGroup, procure pela propriedade Items no Object Inspector e adicione o seguinte:
Somente números Somente letras Letras e números
Após isso, adicione dois Buttons. No primeiro mude a propriedade Caption para "Gerar" e o segundo "Limpar". No OnClick do botao "Gerar" coloque o seguinte código:
procedure TForm1.Button1Click(Sender: TObject);
const
letras = 'abcdefghijklmnopqrstuvxwyzABCDEFGHIJKLMNOPQRSTUVXWYZ';
numeros = '1234567890';
letrasnumeros = letras + numeros;
var
i: integer;
begin
try
Edit2.Clear;
for i := 1 to StrToInt(Edit1.Text) do
begin
if RadioGroup1.ItemIndex = 0 then
Edit2.Text := Edit2.Text + numeros[random(length(numeros)) + 1]
else if RadioGroup1.ItemIndex = 1 then
Edit2.Text := Edit2.Text + letras[random(length(letras)) + 1]
else if RadioGroup1.ItemIndex = 2 then
Edit2.Text := Edit2.Text + letrasnumeros[random(length(letrasnumeros)) + 1];
end;
except
showmessage('Insira somente números no primeiro Edit');
end;
end;
Explicando
Criamos uma variavel i, do tipo inteira, que irá receber a quantidade de caracteres que o usuário quiser para a sua senha. Por isso convertemos o valor do Edit1.Text de String para Inteiro (StrToInt) dentro do for. Criamos também três constantes, adicionando a cada uma respectivamente as letras, números ou as duas juntas.
O comando "Try" funciona da seguinte maneira: falamos para o Delphi tentar executar esse código e, caso ele não conseguir, podemos utilizar o Except para apresentar, por exemplo, algumas mensagens de erro do que pôde acontecer. No exemplo, deve ser informado no Edit1 a quantidade de caracteres da senha e, caso a pessoa coloque letras ao invés de números, a função StrToInt não conseguirá ser executada. Com o Except, conseguimos informar ao usuário este problema e tiramos a mensagem de erro que o delphi emitiria, em inglês.
No segundo botão, coloque apenas:
procedure TForm1.Button2Click(Sender: TObject);
begin
Edit2.Clear;
end;
Após isso efetue a seguinte alteração no seu Delphi : em Tool>Options, procure por Language Execeptions e desmarque "Notify on Language Execeptions". Isto fará com que o compilador do Delphi não interrompa o programa com as mensagens do depurador e deixe a mensagem ir diretamente ao programa.
Nesse momento, compile e rode sua aplicação, informe um número no primeiro edit, selecione um método de geração e veja a senha gerada no segundo edit. É o nosso código em funcionamento!
Primeiramente, vamos ao tutorial: insira em um form um Edit, abaixo dele um RadioGroup e depois outro Edit. Nesse RadioGroup, procure pela propriedade Items no Object Inspector e adicione o seguinte:
Somente números Somente letras Letras e números
Após isso, adicione dois Buttons. No primeiro mude a propriedade Caption para "Gerar" e o segundo "Limpar". No OnClick do botao "Gerar" coloque o seguinte código:
procedure TForm1.Button1Click(Sender: TObject);
const
letras = 'abcdefghijklmnopqrstuvxwyzABCDEFGHIJKLMNOPQRSTUVXWYZ';
numeros = '1234567890';
letrasnumeros = letras + numeros;
var
i: integer;
begin
try
Edit2.Clear;
for i := 1 to StrToInt(Edit1.Text) do
begin
if RadioGroup1.ItemIndex = 0 then
Edit2.Text := Edit2.Text + numeros[random(length(numeros)) + 1]
else if RadioGroup1.ItemIndex = 1 then
Edit2.Text := Edit2.Text + letras[random(length(letras)) + 1]
else if RadioGroup1.ItemIndex = 2 then
Edit2.Text := Edit2.Text + letrasnumeros[random(length(letrasnumeros)) + 1];
end;
except
showmessage('Insira somente números no primeiro Edit');
end;
end;
Explicando
Criamos uma variavel i, do tipo inteira, que irá receber a quantidade de caracteres que o usuário quiser para a sua senha. Por isso convertemos o valor do Edit1.Text de String para Inteiro (StrToInt) dentro do for. Criamos também três constantes, adicionando a cada uma respectivamente as letras, números ou as duas juntas.
O comando "Try" funciona da seguinte maneira: falamos para o Delphi tentar executar esse código e, caso ele não conseguir, podemos utilizar o Except para apresentar, por exemplo, algumas mensagens de erro do que pôde acontecer. No exemplo, deve ser informado no Edit1 a quantidade de caracteres da senha e, caso a pessoa coloque letras ao invés de números, a função StrToInt não conseguirá ser executada. Com o Except, conseguimos informar ao usuário este problema e tiramos a mensagem de erro que o delphi emitiria, em inglês.
No segundo botão, coloque apenas:
procedure TForm1.Button2Click(Sender: TObject);
begin
Edit2.Clear;
end;
Após isso efetue a seguinte alteração no seu Delphi : em Tool>Options, procure por Language Execeptions e desmarque "Notify on Language Execeptions". Isto fará com que o compilador do Delphi não interrompa o programa com as mensagens do depurador e deixe a mensagem ir diretamente ao programa.
Nesse momento, compile e rode sua aplicação, informe um número no primeiro edit, selecione um método de geração e veja a senha gerada no segundo edit. É o nosso código em funcionamento!