Sorteio de números sem repetir ?
fiz um programinha de perguntas e respostas ta funcionando beleza. So que estou querendo sortear sem repetir as mesma. banco de dado em firebird. desde ja agradecendo.
private
{ Private declarations }
public
{ Public declarations }
end;
var
frmjogo: Tfrmjogo;
numpergunta, contagem, acerto, erro: integer;
hora: ttime;
implementation
{$R *.dfm}
procedure Tfrmjogo.sortearpergunta;
begin
hora:= StrToTime('00:00:00'); // zera o cronômetro a cada novo sorteio
ProgressBar1.Position:=0;// faz a progress bar retornar a posição inicial
Timer1.Enabled:= true;// habilita o tempo
rgppergunta.Enabled:= true;// habilita as caixas para o usuário responder
contagem:=1;// inicia a contagem
randomize; // força um sorteio diferente
numpergunta:=RandomRange(1,10);// sorteia um número de 1 a 10
tblpergunta.Locate('per_cod',numpergunta,[]);// localiza na tabela o código sorteado
rgppergunta.Caption:= tblperguntaPER_QUEST.Value;// adiciona a pergunta no caption
rgppergunta.Items.Add(tblperguntaPER_RESP0.Value);// adiciona as perguntas nos 'itens via código
rgppergunta.Items.Add(tblperguntaPER_RESP1.Value);
rgppergunta.Items.Add(tblperguntaPER_RESP2.Value);
rgppergunta.Items.Add(tblperguntaPER_RESP3.Value);
end;
private
{ Private declarations }
public
{ Public declarations }
end;
var
frmjogo: Tfrmjogo;
numpergunta, contagem, acerto, erro: integer;
hora: ttime;
implementation
{$R *.dfm}
procedure Tfrmjogo.sortearpergunta;
begin
hora:= StrToTime('00:00:00'); // zera o cronômetro a cada novo sorteio
ProgressBar1.Position:=0;// faz a progress bar retornar a posição inicial
Timer1.Enabled:= true;// habilita o tempo
rgppergunta.Enabled:= true;// habilita as caixas para o usuário responder
contagem:=1;// inicia a contagem
randomize; // força um sorteio diferente
numpergunta:=RandomRange(1,10);// sorteia um número de 1 a 10
tblpergunta.Locate('per_cod',numpergunta,[]);// localiza na tabela o código sorteado
rgppergunta.Caption:= tblperguntaPER_QUEST.Value;// adiciona a pergunta no caption
rgppergunta.Items.Add(tblperguntaPER_RESP0.Value);// adiciona as perguntas nos 'itens via código
rgppergunta.Items.Add(tblperguntaPER_RESP1.Value);
rgppergunta.Items.Add(tblperguntaPER_RESP2.Value);
rgppergunta.Items.Add(tblperguntaPER_RESP3.Value);
end;
Solano Filho
Curtidas 0
Respostas
Marcos Gandin
31/03/2014
Crie uma coluna na sua tabela que seja um Flag.
E a cada pergunta que você sortear você marca esta Flag com o valor True.
Aí na hora de sortear a pergunta você verifica se o Flag for True, caso seja, sorteia outra.
E a cada pergunta que você sortear você marca esta Flag com o valor True.
Aí na hora de sortear a pergunta você verifica se o Flag for True, caso seja, sorteia outra.
GOSTEI 0
Solano Filho
31/03/2014
o problema e que sou iniciante e to aprendendo. se possivel inserisse o codigo e uma leve introdução sobre os codigos pra eu entender. gratos
GOSTEI 0