白日依山尽,
黄河入海流。
欲穷千里目,
更上一层楼。我想安顺序每一秒读取一句,这个怎么实现(最好能给出详细的代码)

解决方案 »

  1.   

    “读取一句”何谓“读取”?
    或者说,这四句诗放在什么地方,在文件中,还是在变量中?
    我假设这四句诗是保存在一个叫 c:\1.txt 的文件中。
    你在c盘根目录下创建一个1.txt文件,把这四句诗保存到里面。先拖一个button控件和一个timer控件到窗体上,
    button 控件起名btn1,timer控件起名tmr1
    timer的属性面板中,把 inteval属性设置为1000毫秒(即1秒),
    把它的enabled属性设为false// 定义一个TStringList 和 integer 全局变量
    var
      sli:TStringList; // 用来保存诗句字符串
      count:integer; // 用来计数
      // 在窗体的Create事件中初始化 sli、count
    procedure TForm1.FormCreate(Sender: TObject);
    begin
      count:=0;
      sli:=TStringList.Create;
    end;// 双击button进入Click事件代码中
    procedure TForm1.btn1Click(Sender: TObject);
    begin
      // 在这里先从文件中读取这四句诗到 sli 中
      sli.LoadFromFile('c:\1.txt');
      // 启动计时器
      tmr1.Enabled:= true;
    end;// 在窗体的Destroy事件中销毁 sli
    procedure TForm1.FormDestroy(Sender: TObject);
    begin
      sli.free;
    end;// 双击timer控件进入它的Timer事件代码中
    procedure TForm1.tmr1Timer(Sender: TObject);
    begin
      if i = sli.count-1 then  // 如果已经读到了最后一句
         tmr1.Enabled:= false; // 则停止计时器  Caption:= sli[i]; // 把该句显示到窗体标题栏
      Inc(i); // 计数+1
    end;
      

  2.   

    一次性读入内存(如Tmemo)
    定时取第i行
      

  3.   

    写错了,i 改 count
    // 双击timer控件进入它的Timer事件代码中
    procedure TForm1.tmr1Timer(Sender: TObject);
    begin
      if count = sli.count-1 then  // 如果已经读到了最后一句
         tmr1.Enabled:= false; // 则停止计时器
     
      Caption:= sli[count]; // 把该句显示到窗体标题栏
      Inc(count); // 计数+1
    end;
      

  4.   

    多谢 sololie  我按着做了提示[Hint] Unit1.pas(42): Value assigned to 'sli' never used
    [Hint] Unit1.pas(41): Value assigned to 'count' never used
    [Error] Unit1.pas(48): Undeclared identifier: 'sli'
    [Error] Unit1.pas(55): Undeclared identifier: 'count'
    [Warning] Unit1.pas(55): Comparing signed and unsigned types - widened both operands
    [Error] Unit1.pas(64): Statement expected but end of file found
    [Fatal Error] Project1.dpr(5): Could not compile used unit 'Unit1.pas'