江湖告急!!!!!!!兄弟们帮忙啊!!!!!!!! ( 积分: 100 )

  • 主题发起人 主题发起人 glacier_gxf
  • 开始时间 开始时间
G

glacier_gxf

Unregistered / Unconfirmed
GUEST, unregistred user!
我是一个初学者,我想在一个按钮的Click事件中实现从一个已有了N条Item的ProIDListBox中随机抽取没有重复的M条Items放入RandomListBox中,当然0<M<N,但是老是出现重复的。用Exit跳出循环又不对,请各位大侠帮我分析分析,代码如下:
procedure TMainForm.RzRapidFireButton13Click(Sender: TObject);
Var i:integer;
Str:string;
BStr:string;
T:boolean;
begin
While RandomListBox.Items.Count<M Do
begin
if RandomListBox.Items.Count=0 then
RandomListBox.items.Add(ProIDListBox.Items.Strings[random(ProNum)]);
For i:=0 To RandomListBox.Items.Count-1 Do
begin
T:=False;
Str:=ProIDListBox.Items.Strings[random(ProNum)];
BStr:=RandomListBox.Items.Strings;
if Str=BStr then
begin
T:=True;
exit;
end;
RandomListBox.items.Add(Str);
end;
end;
end;
 
我是一个初学者,我想在一个按钮的Click事件中实现从一个已有了N条Item的ProIDListBox中随机抽取没有重复的M条Items放入RandomListBox中,当然0<M<N,但是老是出现重复的。用Exit跳出循环又不对,请各位大侠帮我分析分析,代码如下:
procedure TMainForm.RzRapidFireButton13Click(Sender: TObject);
Var i:integer;
Str:string;
BStr:string;
T:boolean;
begin
While RandomListBox.Items.Count<M Do
begin
if RandomListBox.Items.Count=0 then
RandomListBox.items.Add(ProIDListBox.Items.Strings[random(ProNum)]);
For i:=0 To RandomListBox.Items.Count-1 Do
begin
T:=False;
Str:=ProIDListBox.Items.Strings[random(ProNum)];
BStr:=RandomListBox.Items.Strings;
if Str=BStr then
begin
T:=True;
exit;
end;
RandomListBox.items.Add(Str);
end;
end;
end;
 
你可以用indexof(xxx)看看是否存在重复的记录。
用continue继续执行下一次循环。
 
不行啊,我在机器上试过了,还是有重复的,谁能帮我写这段,本人非常感谢
 
你这循环本身就有问题.
你可以用一个数组来记录ProIDListBox中的Item是否已经被抽取.
 
ProIDListBox.Items.Strings做什么用的?

While RandomListBox.Items.Count<M Do
begin
if RandomListBox.Items.Count=0 then
RandomListBox.items.Add(random(ProNum));
Str:=inttosstr(random(ProNum));
if RandomListBox.Items.indexof(Str) > 0 then
begin
[red]continue;[/red]
end;
RandomListBox.items.Add(Str);
end;
直接在论坛上改的,没试,
可能编译通不过。
你看看吧。
 
ProIDListBox的Items用个标志,表示被选取没选取,下次取时判断下标志位就可以了。
 
ProIDListBox.放的是商品编码信息,因为Product表里的关键字Pro_ID是有加密算法的,所以无法直接从表中随机取出N条记录
 
多人接受答案了。
 

Similar threads

I
回复
0
查看
763
import
I
I
回复
0
查看
630
import
I
I
回复
0
查看
687
import
I
I
回复
0
查看
806
import
I
后退
顶部