我刚会学写DELPHI,想写随机数抽奖的一个程序,在本地放一个txt文件,存放一串姓名,再用DELPHI读出这个文件,在屏幕上滚动,但按钮时停下来的就是中奖者,第二次抽奖时就不会再出现这个人的名字,请问哪位高手可以帮我完成这个程序的例子,我没有头绪 .在此,谢谢了!

解决方案 »

  1.   

    匆忙之中赶出来一个例子,有不足之处望指出。在C盘建立一个文本文件123.txt,内容如下:
    Tom
    Jerry
    Mike
    Kate
    Sherry
    John
    Frank在form1上加一个Timer,Edit,Button。
    Timer1.Internal:=200;
    具体代码如下:unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls, ExtCtrls;type
      TForm1 = class(TForm)
        Button1: TButton;
        Timer1: TTimer;
        Edit1: TEdit;
        procedure FormCreate(Sender: TObject);
        procedure FormClose(Sender: TObject; var Action: TCloseAction);
        procedure Button1Click(Sender: TObject);
        procedure Timer1Timer(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form1: TForm1;
      s:TStringList;
      Current:Integer;
    implementation{$R *.dfm}procedure TForm1.FormCreate(Sender: TObject);
    begin
    s:=TStringList.Create;
    s.LoadFromFile('c:\123.Txt');
    Current:=0;
    end;procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
    begin
      s.Free;
    end;procedure TForm1.Button1Click(Sender: TObject);
    begin
      if s.Count>1 then
      begin
        if Timer1.Enabled=True then
        begin
          Timer1.Enabled:=False;
          s.Delete(s.IndexOf(Edit1.Text));
        end
        else
        begin
          Timer1.Enabled :=True;
        end;
      end;     
    end;procedure TForm1.Timer1Timer(Sender: TObject);
    begin
      if Current>=s.Count then Current:=0;
      Edit1.Text:=s.Strings[Current];
      inc(Current);  
    end;end.
      

  2.   

    wwwwjjjj1978(风流小太狼)提问提得有理。我可以这样作:(因为手边没有Delphi7,随手写点,错了莫怪)procedure TForm1.FormCreate(Sender: TObject);
    Var
      s,s1:TstringList;    
      i,r:Integer;
    begin
      s:=TStringList.Create;
      s1:=TStringList.Create;
      s.LoadFromFile('c:\123.Txt');  Randomize;
      for i=0 to s.Count-1 do
        begin
          r:=Random(s.Count);
          s1.Add(s.Strings[r]);
          s.Delete(r);
        end;
      s.Free;
    end;然后操作s1就可以了。余下的操作应该与上面的相同。这样作的目的就可以使开始时的StringList是随机得到的。(按照上面这一小段操作出现错误的话不要怪我啊,我只是提供一个思路)