需求:用delphi做一个小程序,从txt读取若干人名字【txt是事先写好,数量足够】,
随机选取若干个人名[可以定义,也可以写定]
由键盘 空格键或者回车键控制停止和开始把人名在屏幕上动态显示【随便用什么方法,可以用label放好了写】望各位不要见笑
谢谢啦

解决方案 »

  1.   

    怎么看起来象在进行项目洽谈或者招商....给你提供一个思路:
    读TXT文件到StringList-->生成一组随机数--->循环StringList并滚动显示,凡下标值在生成的随机数中的,筛选出。
      

  2.   

    半路出来的,也要好好学,拿去学学吧.
    自己准备一个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.
      

  3.   

    哦,没注意楼主还要动态滚动名字和控制开始/暂停.
    这次改了下,需要拖一个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.
      

  4.   


    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;