Array of String

Delphi

21/12/2004

Olá amigos, eu estrou tentando randomizar um array de strings, exemplo:

Edit1.Text := RandomFrom([´0´,´1´,´2´,´3´,´4´,´5´,´6´,´7´,´8´,´9´]);

O caso é que também quero randomizar letras (strings) mas o código ficaria extenso. Para isso pensei em usar variáveis que deveriam conter array of string. Meu código:

procedure TForm1.Button1Click(Sender: TObject);
var
cArray: array of string;
begin
Edit1.Clear;
cArray := [´0´,´1´,´2´,´3´,´4´,´5´,´6´,´7´,´8´,´9´];
Edit1.Text := Edit1.Text + RandomFrom(cArray);
end;

O delphi me dá uma mensagem: ´Incopatible types: ´set´ and ´dynamic array´´

Onde está o meu erro??? Sou novo em programação avancada e preciso de ajuda!!!


Marcosrocha

Marcosrocha

Curtidas 0

Respostas

Jc_analista

Jc_analista

21/12/2004

Não sei se é isso q vc quer mas tente assim:


var
vetor: array  [0..2] of string = (´A´,´B´,´C´);
cont,i:integer;

begin

  edit1.text:=vetor[random(2)];  // vai trazer só uma letra

  cont:=random(100);

  for i:=0 to cont do
      edit1.text:=vetor[random(2)];  // vai trazer várias letras

end;






GOSTEI 0
Marcosrocha

Marcosrocha

21/12/2004

Mensagem de erro:

[Error] UMain.pas(39): Cannot initialize local variables


GOSTEI 0
Jc_analista

Jc_analista

21/12/2004

coloque o vetor como uma variavel global;


var
form1: Tform1;

// abaixo da linha que e declarado o formulario

vetor: array [0..2] of string = (´A´,´B´,´C´);


GOSTEI 0
Massuda

Massuda

21/12/2004

[Error] UMain.pas(39): Cannot initialize local variables

Imaginando que você não precise alterar o conteúdo do array, você pode criar uma constante:
const
  vetor: array  [0..2] of string = (´A´,´B´,´C´); 
var
cont,i:integer;



GOSTEI 0
Marcosrocha

Marcosrocha

21/12/2004

E se eu tivesse duas variáveis que eu queira usar???
Uma ´vetor´ que me traz números (strings) e outra ´letras´ (strings) que me traz letas minúsculas para randomizar e gerar uma senha, por exemplo: 64a8sd3e


GOSTEI 0
Marcosrocha

Marcosrocha

21/12/2004

A variável como constante funcionou mas eu gostaria de separar as variáveis que guardam números das que guardam letras!!! Eu acho que fica mais organizado!!! Isso é viável???


GOSTEI 0
Massuda

Massuda

21/12/2004

E se eu tivesse duas variáveis que eu queira usar??? Uma ´vetor´ que me traz números (strings) e outra ´letras´ (strings) [...]

Não sei se entendi, mas você pode fazer...
const 
  letras: array  [0..2] of string = (´A´,´B´,´C´);
  numeros: array  [0..4] of string = (´5´,´9´,´0´, ´3´, ´7´);



GOSTEI 0
Marcosrocha

Marcosrocha

21/12/2004

Não sei se entendi, mas você pode fazer...
const 
  letras: array  [0..2] of string = (´A´,´B´,´C´);
  numeros: array  [0..4] of string = (´5´,´9´,´0´, ´3´, ´7´);


É assim mesmo mas e para Randomizar essas duas variáveis???
Exemplo com uma: Edit1.Text := letras[Random(2)];

Eu queria fazer um jeito de a aplicação pegar uma letra ou um número aleatóriamente. não sendo necessário ser em ordem! Pode ser duas letras e um número ou dois números e uma letra ou três letras ou três números... Queria fazer randomizar as 2 variáveis!!!


GOSTEI 0
Jc_analista

Jc_analista

21/12/2004

cont:=random(100);

for i:=0 to cont do
begin
if random(1) = 0 then
edit1.text:=edit1.text+letras[random(2)]
else
edit1.text:=edit1.text+numeros[random(2)];


/// Vc vai ter um random que vai dar 0 ou 1 se der 0 vc pega letras ou se der 1 vc pega numeros.

Entendeu.


GOSTEI 0
Marcosrocha

Marcosrocha

21/12/2004

Aham, entendi jc_analista. Eu vou fazer uns testes e qualquer coisa eu posto de novo!!!


GOSTEI 0
Marcosrocha

Marcosrocha

21/12/2004

Aham, entendi jc_analista. Eu vou fazer uns testes e qualquer coisa eu posto de novo!!!


Funcionou Gente, era isso mesmo que eu queria fazer... Obrigado!!!


GOSTEI 0
POSTAR