📄 unit1.~pas
字号:
unit Unit1;
interface
uses
Windows,Messages,SysUtils,Classes,Graphics,Controls,Forms,Dialogs,
StdCtrls;
type
TForm1=class(TForm)
Button1: TButton;
ListBox1: TListBox;
Edit1: TEdit;
procedure Button1Click(Sender:TObject);
procedure FormCreate(Sender:TObject);
procedure FormClose(Sender:TObject;var Action:TCloseAction);
private
{ Private declarations }
public
{ Public declarations }
procedure GetNum(var h:integer);
end;
var
Form1:TForm1;
Numlist:TStrings;
const
n = 40;
var
num:array[0..n-1] of string;//=('1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12', '13');
implementation
{$R *.DFM}
procedure TForm1.Button1Click(Sender: TObject);
var
i,m:integer;
rnd:integer;
begin
m:=strtoint(edit1.text);
if m>n then
begin
showmessage('m>n... will exit');
exit;
end;
numlist.Clear;
numlist.Add(''); //必不可少
randomize;
for i:=1 to m do
begin
rnd:=Random(n);
getnum(rnd);
numlist.Add(num[rnd]);
end;
numlist.Delete(0);
ListBox1.Items.Assign(numlist);
end;
procedure TForm1.GetNum(var h:integer); //调用递归过程
begin
if numList.IndexOf(num[h])>0 then //判断是否重复
begin
h:=random(n); //如果重复,则重新获取随机数
GetNum(h);
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
var
i:integer;
begin
for i :=0 to n-1 do
num[i]:=inttostr(i+1); //初始化数组
numList:=TstringList.Create;
end;
procedure TForm1.FormClose(Sender:TObject;var Action:TCloseAction);
begin
numlist.free;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -