Fórum Sorteio #167257
01/07/2003
0
Ola pessoal,
Estou precisando que este codigo nâo sorteie duas vezes o mesmo numero. Estou usando o seguinte codigo:
procedure TFJogo2.sort;
var x,reg,reg1,reg2 : integer;
teste : boolean;
begin
Randomize;
Table1.First;
teste := true;
while teste do
begin
reg := Random(Table1.RecordCount + 1);
teste := false;
if j <> 1 then
begin
for x := 1 to j do
begin
if reg = ma[x] then
teste := true;
end;
end;
end;
ma[j] := reg;
Table1.MoveBy(reg);
label9.caption := Table1.FieldByName(´Nome´).AsString;
Le_Imagem_JPEG(table1picture, Image1);
table1.edit;
table1ativo.value := false;
table1.post;
// sorteio de outro nome
reg1 := reg;
while reg1 = reg do
begin
Randomize;
Table1.First;
reg1 := Random(Table1.RecordCount + 1);
end;
Table1.MoveBy(reg1);
label10.caption := Table1.FieldByName(´Nome´).AsString;
// sorteio de um nome
reg2 := reg;
while (reg2 = reg) or (reg2 = reg1) do
begin
Randomize;
Table1.First;
reg2 := Random(Table1.RecordCount + 1);
end;
Table1.MoveBy(reg2);
label11.caption := Table1.FieldByName(´Nome´).AsString;
end;
:?
Estou precisando que este codigo nâo sorteie duas vezes o mesmo numero. Estou usando o seguinte codigo:
procedure TFJogo2.sort;
var x,reg,reg1,reg2 : integer;
teste : boolean;
begin
Randomize;
Table1.First;
teste := true;
while teste do
begin
reg := Random(Table1.RecordCount + 1);
teste := false;
if j <> 1 then
begin
for x := 1 to j do
begin
if reg = ma[x] then
teste := true;
end;
end;
end;
ma[j] := reg;
Table1.MoveBy(reg);
label9.caption := Table1.FieldByName(´Nome´).AsString;
Le_Imagem_JPEG(table1picture, Image1);
table1.edit;
table1ativo.value := false;
table1.post;
// sorteio de outro nome
reg1 := reg;
while reg1 = reg do
begin
Randomize;
Table1.First;
reg1 := Random(Table1.RecordCount + 1);
end;
Table1.MoveBy(reg1);
label10.caption := Table1.FieldByName(´Nome´).AsString;
// sorteio de um nome
reg2 := reg;
while (reg2 = reg) or (reg2 = reg1) do
begin
Randomize;
Table1.First;
reg2 := Random(Table1.RecordCount + 1);
end;
Table1.MoveBy(reg2);
label11.caption := Table1.FieldByName(´Nome´).AsString;
end;
:?
Emilio
Curtir tópico
+ 0
Responder
Posts
01/07/2003
Leanribas
vc pode criar uma StringList, declare ele na seção var do form principal, e nela vc guarda os nomes já sorteados, ae vc pode pesquisar nesta lista se o nome que vc sorteou já foi sortiado.
Responder
Gostei + 0
02/07/2003
Roger_malk
Para diminuir esta probalidade retire randomize da procedure e execute-o uma unica vez no programa(i.e. OnCreate do form)
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)