半路出来的,也要好好学,拿去学学吧. 自己准备一个Names.txt文件(跟程序放在一起)存放姓名,一行一行的存. unit Unit1;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs;type TForm1 = class(TForm) procedure FormCreate(Sender: TObject); procedure FormKeyPress(Sender: TObject; var Key: Char); private FNames: TStrings; FCount: Integer; end;var Form1: TForm1;implementation{$R *.dfm}procedure TForm1.FormCreate(Sender: TObject); begin Self.KeyPreview := True; Self.FCount := 3; {在这里设定想要选出多少个名字} end;procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char); var i: Integer; x: Integer; s: string; Names: string; begin if Key = #32 then begin Self.FNames := TStringList.Create; if Assigned(Self.FNames) then begin try try Self.FNames.LoadFromFile('Names.txt'); i := 0; while i < Self.FCount do begin Randomize; x := Random(Self.FNames.Count - 1); s := Self.FNames[x]; if s <> '' then {避免重复} begin Names := Names + s + #13; Self.FNames[x] := ''; Inc(i); end; end; except // do nothing... end; finally Self.FNames.Free; end; end; ShowMessage(Names); end; end;end.
哦,没注意楼主还要动态滚动名字和控制开始/暂停. 这次改了下,需要拖一个TTimer控件到窗口中并命名为Timer1. unit Unit1;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls;type TForm1 = class(TForm) Timer1: TTimer; procedure FormCreate(Sender: TObject); procedure FormDestroy(Sender: TObject); procedure FormKeyPress(Sender: TObject; var Key: Char); procedure Timer1Timer(Sender: TObject); private FNames: TStrings; FIndex: Integer; end;var Form1: TForm1;implementation{$R *.dfm}procedure TForm1.FormCreate(Sender: TObject); begin Self.KeyPreview := True; Self.Timer1.Enabled := False; Self.Caption := '按空格键开始/暂停'; Self.FNames := TStringList.Create; Self.FNames.LoadFromFile('Names.txt'); end;procedure TForm1.FormDestroy(Sender: TObject); begin Self.FNames.Free; end;procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char); begin Self.Timer1.Enabled := not Self.Timer1.Enabled; {开始/暂停} if not Self.Timer1.Enabled then begin Self.FNames[Self.FIndex] := ''; {清空已选出来的以避免重复} end; end;procedure TForm1.Timer1Timer(Sender: TObject); begin if Assigned(Self.FNames) then begin while True do begin Randomize; Self.FIndex := Random(Self.FNames.Count - 1); if Self.FNames[Self.FIndex] <> '' then {避免重复} begin Self.Caption := Self.FNames[Self.FIndex]; Break; end; Application.ProcessMessages; end; end; end;end.
var sl : TStringlist; i : Integer; sUserName : string; begin sl := TStringList.Create; try sl.LoadFormFile('test.txt'); for i := 0 to sl.Count - 1 do begin sUserName := sl.strings[i]; showMessage(sUserName); end;
读TXT文件到StringList-->生成一组随机数--->循环StringList并滚动显示,凡下标值在生成的随机数中的,筛选出。
自己准备一个Names.txt文件(跟程序放在一起)存放姓名,一行一行的存.
unit Unit1;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs;type
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
procedure FormKeyPress(Sender: TObject; var Key: Char);
private
FNames: TStrings;
FCount: Integer;
end;var
Form1: TForm1;implementation{$R *.dfm}procedure TForm1.FormCreate(Sender: TObject);
begin
Self.KeyPreview := True;
Self.FCount := 3; {在这里设定想要选出多少个名字}
end;procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
var
i: Integer;
x: Integer;
s: string;
Names: string;
begin
if Key = #32 then
begin
Self.FNames := TStringList.Create;
if Assigned(Self.FNames) then
begin
try
try
Self.FNames.LoadFromFile('Names.txt');
i := 0;
while i < Self.FCount do
begin
Randomize;
x := Random(Self.FNames.Count - 1);
s := Self.FNames[x];
if s <> '' then {避免重复}
begin
Names := Names + s + #13;
Self.FNames[x] := '';
Inc(i);
end;
end;
except
// do nothing...
end;
finally
Self.FNames.Free;
end;
end;
ShowMessage(Names);
end;
end;end.
这次改了下,需要拖一个TTimer控件到窗口中并命名为Timer1.
unit Unit1;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls;type
TForm1 = class(TForm)
Timer1: TTimer;
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure FormKeyPress(Sender: TObject; var Key: Char);
procedure Timer1Timer(Sender: TObject);
private
FNames: TStrings;
FIndex: Integer;
end;var
Form1: TForm1;implementation{$R *.dfm}procedure TForm1.FormCreate(Sender: TObject);
begin
Self.KeyPreview := True;
Self.Timer1.Enabled := False;
Self.Caption := '按空格键开始/暂停';
Self.FNames := TStringList.Create;
Self.FNames.LoadFromFile('Names.txt');
end;procedure TForm1.FormDestroy(Sender: TObject);
begin
Self.FNames.Free;
end;procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
begin
Self.Timer1.Enabled := not Self.Timer1.Enabled; {开始/暂停}
if not Self.Timer1.Enabled then
begin
Self.FNames[Self.FIndex] := ''; {清空已选出来的以避免重复}
end;
end;procedure TForm1.Timer1Timer(Sender: TObject);
begin
if Assigned(Self.FNames) then
begin
while True do
begin
Randomize;
Self.FIndex := Random(Self.FNames.Count - 1);
if Self.FNames[Self.FIndex] <> '' then {避免重复}
begin
Self.Caption := Self.FNames[Self.FIndex];
Break;
end;
Application.ProcessMessages;
end;
end;
end;end.
var
sl : TStringlist;
i : Integer;
sUserName : string;
begin
sl := TStringList.Create;
try
sl.LoadFormFile('test.txt');
for i := 0 to sl.Count - 1 do
begin
sUserName := sl.strings[i];
showMessage(sUserName);
end;
finally
sl.free;
end;
end;