Random com varios TEdit...

11/01/2023

0

Boa noite pessoal.

Estou querendo fazer um random de uma constante dentro do Delphi

No exemplo abaixo estou conseguindo fazer

procedure TForm1.Button1Click(Sender: TObject);
CONST
  valores : array [0..6] of string = (''1'', ''2'', ''3'', ''4'', ''5'', ''6'', ''7'');
begin
  Label1.Text := valores[Random(6)];
end;


Até ai tudo bem. Acontece que dessa forma fica os valores fixos.

Gostaria de saber se tem como eu fazer utilizando TEdit. Tentei da forma abaixo mais não tive êxito

procedure TForm1.Button2Click(Sender: TObject);
CONST
  valores : array [0..6] of string = (Edit1.Text, Edit2.Text, Edit3.Text, Edit4.Text, Edit5.Text, Edit6.Text, Edit7.Text);

begin
  Label2.Text := valores[Random(6)];
end;


Dessa forma o valor que eu colocar dento de cada Edit, ao clicar no botão me retornaria o valor digitado. Esta me retornando erro ao compilar >> Constant expression expected .
Rubens Pena

Rubens Pena

Responder

Post mais votado

12/01/2023

procedure TForm1.Button2Click(Sender: TObject);
vat
  valores : array [0..6] of string;
begin
  valores[0] := Edit1.Text;
  valores[1] := Edit2.Text;
  valores[2] := Edit3.Text;
  valores[3] := Edit4.Text;
  valores[4] := Edit5.Text;
  valores[5] := Edit6.Text;
  valores[6] := Edit7.Text;

  Label2.Text := valores[Random(6)];
end;

Emerson Nascimento

Emerson Nascimento
Responder

Mais Posts

12/01/2023

Arthur Heinrich

Sua construção original não funcionou porque a definição de uma constante não pode depender de objetos criados em tempo de execução. Apenas valores literais são aceitos.

Além disso, no seu código o array possui 7 posições, de 0 a 6. Ao utilizar o Random(6), você obterá valores que vão de 0 a 5, nunca selecionando a última opção no array.

Você também pode utilizar um memo, para carregar os valores, um por linha, podendo utilizar:

Label2.Text := Memo.Lines[Random(Memo.Lines.Count)];
Responder

13/01/2023

Rubens Pena

procedure TForm1.Button2Click(Sender: TObject);
vat
  valores : array [0..6] of string;
begin
  valores[0] := Edit1.Text;
  valores[1] := Edit2.Text;
  valores[2] := Edit3.Text;
  valores[3] := Edit4.Text;
  valores[4] := Edit5.Text;
  valores[5] := Edit6.Text;
  valores[6] := Edit7.Text;

  Label2.Text := valores[Random(6)];
end;


Obrigado mestre Emerson Nascimento, funcionou.
Responder

13/01/2023

Rubens Pena

Sua construção original não funcionou porque a definição de uma constante não pode depender de objetos criados em tempo de execução. Apenas valores literais são aceitos.

Além disso, no seu código o array possui 7 posições, de 0 a 6. Ao utilizar o Random(6), você obterá valores que vão de 0 a 5, nunca selecionando a última opção no array.

Você também pode utilizar um memo, para carregar os valores, um por linha, podendo utilizar:

Label2.Text := Memo.Lines[Random(Memo.Lines.Count)];


Obrigado mestre Arthur Henrique, seu exemplo funcionou, acabei de ter uma nova ideia. E obrigado pela explicação.
Responder

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar