| Exibir mensagem anterior :: Exibir próxima mensagem |
| Autor |
Mensagem |
williamkath Novato

Registrado: Quinta-Feira, 26 de Setembro de 2013 Mensagens: 3
|
Enviada: Qui Set 26, 2013 4:14 pm Assunto: sorteador |
|
|
olá estou fazendo um sorteador usando um listbox funciona, mais ele repete os nomes, eu queria fazer um usando um banco de dados e que não repita os sorteados se alguém poder me ajudar.....  |
|
| Voltar ao Topo |
|
 |
CesarRocha Mestre

Registrado: Segunda-Feira, 30 de Mai de 2011 Mensagens: 794 Localização: São Paulo - SP
|
Enviada: Qui Set 26, 2013 4:23 pm Assunto: |
|
|
Boa tarde,
Existem diversas maneiras de fazer isso. A mais simples seria remover da lista de participantes aqueles que já foram sorteados.
~bye |
|
| Voltar ao Topo |
|
 |
williamkath Novato

Registrado: Quinta-Feira, 26 de Setembro de 2013 Mensagens: 3
|
Enviada: Qui Set 26, 2013 5:01 pm Assunto: |
|
|
| CesarRocha escreveu: | Boa tarde,
Existem diversas maneiras de fazer isso. A mais simples seria remover da lista de participantes aqueles que já foram sorteados.
~bye |
sim na verdade eu estou um tempo sem programar, dai muita coisa eu esqueci mais to tentando voltar....
mais na verdade o que preciso ...
uso essa linha de comando para sortear eu preciso que ele delete o ultimo sorteado.....
e se for possível aplicar isso usando um banco de dados simples em access mesmo..
procedure TForm1.BtnSortearClick(Sender: TObject);
var i: integer;
begin
Randomize;
for I := 0 to listBox1.Count - 1 do
EdSorteado.Text := ListBox1.Items[Random(ListBox1.Items.Count)];
end; |
|
| Voltar ao Topo |
|
 |
CesarRocha Mestre

Registrado: Segunda-Feira, 30 de Mai de 2011 Mensagens: 794 Localização: São Paulo - SP
|
Enviada: Qui Set 26, 2013 5:11 pm Assunto: |
|
|
Hmm, você poderia salvar o índice sorteado em uma variável e usar a mesma para remover, apos mostrar o sorteado.
Ex: | Código: |
procedure TForm9.Button3Click(Sender: TObject);
var
indiceSorteado: integer;
nomeSorteado: string;
begin
Randomize;
if (ListBox1.Items.Count > 0) then
begin
// pega o indice
indiceSorteado := Random(ListBox1.Items.Count);
// acessa o item pelo indice
nomeSorteado := ListBox1.Items[indiceSorteado];
edtSorteado.Text := nomeSorteado;
// remove
ListBox1.Items.Delete(indiceSorteado);
end
else
begin
ShowMessage('Não existem mais dados para sortear...');
end;
end; |
~bye |
|
| Voltar ao Topo |
|
 |
Diegohilario3 Aprendiz

Registrado: Sábado, 17 de Novembro de 2007 Mensagens: 143
|
Enviada: Qui Set 26, 2013 5:11 pm Assunto: |
|
|
Gera 10 números aleatórios,sem repetições, entre 1 á 60
| Código: | for i:= 0 to 9 do
begin
flag := 1;
while flag=1 do
begin
Randomize;
aux := random(61);
for j:= 0 to 9 do //vendo se ja apareceu
if (aux = vet[j]) or (aux = 0) then
break;
if j = 10 then
begin
flag := 0;
vet[i] := aux;
end; |
|
|
| Voltar ao Topo |
|
 |
williamkath Novato

Registrado: Quinta-Feira, 26 de Setembro de 2013 Mensagens: 3
|
Enviada: Qui Set 26, 2013 6:00 pm Assunto: |
|
|
| CesarRocha escreveu: | Hmm, você poderia salvar o índice sorteado em uma variável e usar a mesma para remover, apos mostrar o sorteado.
Ex: | Código: |
procedure TForm9.Button3Click(Sender: TObject);
var
indiceSorteado: integer;
nomeSorteado: string;
begin
Randomize;
if (ListBox1.Items.Count > 0) then
begin
// pega o indice
indiceSorteado := Random(ListBox1.Items.Count);
// acessa o item pelo indice
nomeSorteado := ListBox1.Items[indiceSorteado];
edtSorteado.Text := nomeSorteado;
// remove
ListBox1.Items.Delete(indiceSorteado);
end
else
begin
ShowMessage('Não existem mais dados para sortear...');
end;
end; |
~bye |
Cara era bem isso, agora eu te pergunto se eu querer fazer isso com um banco de dados, podendo abrir e fechar a aplicação e os nomes que já foram sorteado não sejam novamente sorteados...
pelo listbox ele trabalho como uma cache certo??? |
|
| Voltar ao Topo |
|
 |
|