ActiveDelphi - Índice do Fórum ActiveDelphi
.: O site do programador Delphi! :.
 
 FAQFAQ   PesquisarPesquisar   MembrosMembros   GruposGrupos   RegistrarRegistrar 
 PerfilPerfil   Entrar e ver Mensagens ParticularesEntrar e ver Mensagens Particulares   EntrarEntrar 

sorteador

 
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi
Exibir mensagem anterior :: Exibir próxima mensagem  
Autor Mensagem
williamkath
Novato
Novato


Registrado: Quinta-Feira, 26 de Setembro de 2013
Mensagens: 3

MensagemEnviada: Qui Set 26, 2013 4:14 pm    Assunto: sorteador Responder com Citação

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..... Very Happy
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
CesarRocha
Mestre
Mestre


Registrado: Segunda-Feira, 30 de Mai de 2011
Mensagens: 794
Localização: São Paulo - SP

MensagemEnviada: Qui Set 26, 2013 4:23 pm    Assunto: Responder com Citação

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
Ver o perfil de Usuários Enviar Mensagem Particular
williamkath
Novato
Novato


Registrado: Quinta-Feira, 26 de Setembro de 2013
Mensagens: 3

MensagemEnviada: Qui Set 26, 2013 5:01 pm    Assunto: Responder com Citação

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
Ver o perfil de Usuários Enviar Mensagem Particular
CesarRocha
Mestre
Mestre


Registrado: Segunda-Feira, 30 de Mai de 2011
Mensagens: 794
Localização: São Paulo - SP

MensagemEnviada: Qui Set 26, 2013 5:11 pm    Assunto: Responder com Citação

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
Ver o perfil de Usuários Enviar Mensagem Particular
Diegohilario3
Aprendiz
Aprendiz


Registrado: Sábado, 17 de Novembro de 2007
Mensagens: 143

MensagemEnviada: Qui Set 26, 2013 5:11 pm    Assunto: Responder com Citação

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
Ver o perfil de Usuários Enviar Mensagem Particular
williamkath
Novato
Novato


Registrado: Quinta-Feira, 26 de Setembro de 2013
Mensagens: 3

MensagemEnviada: Qui Set 26, 2013 6:00 pm    Assunto: Responder com Citação

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
Ver o perfil de Usuários Enviar Mensagem Particular
Mostrar os tópicos anteriores:   
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi Todos os horários são GMT - 3 Horas
Página 1 de 1

 
Ir para:  
Enviar Mensagens Novas: Proibido.
Responder Tópicos Proibido
Editar Mensagens: Proibido.
Excluir Mensagens: Proibido.
Votar em Enquetes: Proibido.


Powered by phpBB © 2001, 2005 phpBB Group
Traduzido por: Suporte phpBB