Random com varios TEdit...
Boa noite pessoal.
Estou querendo fazer um random de uma constante dentro do Delphi
No exemplo abaixo estou conseguindo fazer
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
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 .
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
Curtidas 0
Melhor post
Emerson Nascimento
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;
GOSTEI 1
Mais Respostas
Arthur Heinrich
11/01/2023
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)];
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)];
GOSTEI 1
Rubens Pena
11/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;
Obrigado mestre Emerson Nascimento, funcionou.
GOSTEI 0
Rubens Pena
11/01/2023
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)];
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.
GOSTEI 0