Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Alexandre Copco Filho

Passar Random em TStrings de um LISTBOX !

Recommended Posts

Ola Pessoal !!


Estou tentando fazer um random com numeros que estão em uma listbox


mais como o Listbox armazenam TStrings não estou conseguindo alguem pode me ajudar !!



Var

Sort: array[0..5] of integer;

I , A, numSort, Z : integer;

List : TStrings;

begin

numSort := 7;

Randomize;

While numSort > 6 do

Begin

numSort := 0;

for I := 0 to 5 do

list:= (ListBox1.Items);

Sort:= Random (List); // DA ERRO NESTA LINHA [Error] Unit1.pas(45): Incompatible types


for I := 0 to 5 do

Begin

A := Sort;

if A = 0 then

numSort := numSort + 1;

for Z := 0 to 5 do

if A = Sort[Z] then

numSort := numSort +1;

end;


end; // end WHILE


for Z := 0 to 4 do

Begin

for I := 0 to 4 do

if Sort > Sort[i+1] then

Begin

A := Sort[i+1];

Sort[i+1] := Sort;

Sort := A;

end;

end;


showmessage('Os seus números da sorte são: ' + inttostr(Sort[0]) + ' - ' +

inttostr(Sort[1]) + ' - ' +

inttostr(Sort[2]) + ' - ' +

inttostr(Sort[3]) + ' - ' +

inttostr(Sort[4]) + ' - ' +

inttostr(Sort[5]));

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você gravou um número em cada posição de um listbox, é isso? Ou pra cada entrada do listbox tem um conjunto de números? Explica um pouco melhor, põe um exemplo de como estão os dados na listbox e de como seria a execução esperada. Tá um pouco confuso entender o que quer da forma que postou...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Chrnos esta sendo usado um numero em cada listbox1.items.add

 

e depois passei para variavel LIST então fica sendo TStrings por isso não estou conseguindo....

 

estava pensando em criar uma variavel array e depois fazer um radom da variaveis.....

 

 

desde ja agradeço sua ajuda abraço ....

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então Alexandre... o problema é como está tentando usar o comando random.... você quer pegar aleatoriamente os valores entre os listados no seu listbox pelo que entendi certo? Se sim, você teria que por no random o total de itens que tem no seu listbox-1 e com o valor gerado capturar o número... Se olhar o link http://www.delphibasics.co.uk/RTL.asp?Name=Random, verá que o comando ramdom deve ter um limite numérico informado, não uma lista. Você poderia jogar numa variável auxiliar o random de 0 até o número de itens do listbox -1 e dai pegar da listbox o número da posição gerada pra jogar no seu array de saída. Algo assim:

 

 

var iPosicao: integer;
 
<...>
  While numSort > 6 do
     Begin
          numSort := 0;
          for I := 0 to 5 do
            list:=  (ListBox1.Items[I]);
            iPosicao := Random(List.Count-1);
            Sort[I]:= List[iPosicao];
<...>

 

Ps.: fiz de cabeça, pode precisar de ajustes... mas a idéia é pegar a posição randômica dentro do espaço de 0 ao número de itens do seu listbox - 1 e depois ler do listbox o valor indicado na posição gerada randomicamente saca?

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.