/======================Timer======================================
procedure TForm1.Timer1Timer(Sender: TObject);
var
  afile:   TFileStream;
  str,da,StrToWrite : string;begin
  //=============写入txt=====================
  if Txt_Flag = true  then
  begin
    StrToWrite:='';
    StrToWrite:=StrToWrite+output_X.Text+',  '+output_Ang.Text+',  '+output_l.Text;
    str := TimeToStr(Time);
    da  := DateToStr(Date);
    StrToWrite:= da+',  '+str+',  '+StrToWrite+#13#10;
    if not FileExists( SaveDialog1.FileName+'.txt')   then   //如果文件不存在,创建再写
    begin
        try
            afile   :=   TFileStream.Create( SaveDialog1.FileName+'.txt',fmCreate);
            afile.WriteBuffer(PChar(StrToWrite)^,Length(StrToWrite));
         finally
            afile.free;
        end;
    end
    else begin     //
        try
            afile   :=   TFileStream.Create( SaveDialog1.FileName+'.txt',fmOpenWrite);
            afile.Seek(0,soEnd);
            afile.WriteBuffer(PChar(StrToWrite)^,Length(StrToWrite));
        finally
            afile.Free;
        end;
    end;
  end;end;
//==================保存==============================
procedure TForm1.SaveClick(Sender: TObject);
begin
if SaveDialog1.Execute then //SaveDialog1 是一个TSaveDialog 组件
   begin
   Txt_Flag:=True;
   end;
end;
实验中遇到的编程问题,主要对这部分程序看不太懂,希望大侠能详细解释下。
主要是采集数据以后  激发定时器定时写入,可具体这写代码什么意思?

解决方案 »

  1.   


    //  定时保存文本文件
    procedure TForm1.Timer1Timer(Sender: TObject);
    var
      afile:   TFileStream;               // 文件流
      str,da,StrToWrite : string;         // 字符串类型 
    begin
      //  写入txt
      if Txt_Flag = true  then            // 文件名 设置完成
      begin
        StrToWrite:='';
        StrToWrite:=StrToWrite+output_X.Text+',  '+output_Ang.Text+',  '+output_l.Text;  // 3个Edit或Combobox控件
        str := TimeToStr(Time);                                 // Time时间值,转换为字符类型
        da  := DateToStr(Date);                                 // Date日期值,转换为字符类型  
        StrToWrite:= da+',  '+str+',  '+StrToWrite+#13#10;      // 生成一行字符串,包含时间、日期等 + 换行符
        if not FileExists( SaveDialog1.FileName+'.txt')   then  // 如果文件不存在,创建再写
        begin
          try                              
            afile   :=   TFileStream.Create( SaveDialog1.FileName+'.txt',fmCreate); // 使用文件流创建
            afile.WriteBuffer(PChar(StrToWrite)^,Length(StrToWrite));               // 写入文件一行
          finally
            afile.free;                                                             // 释放文件流
          end;
        end
        else begin                        // 文件名 未设置
          try
            afile   :=   TFileStream.Create( SaveDialog1.FileName+'.txt',fmOpenWrite); // 打开SaveDialog1指定文件名。并通过文件流创建文件
            afile.Seek(0,soEnd);                                                       // 设置文件的长度
            afile.WriteBuffer(PChar(StrToWrite)^,Length(StrToWrite));                  // 写入文件 
          finally
            afile.Free;                                                                // 释放文件流
          end;
        end;
      end;
    end;//  设置文件名
    procedure TForm1.SaveClick(Sender: TObject);
    begin
      if SaveDialog1.Execute then                 // SaveDialog1 是一个TSaveDialog 组件
      begin
         Txt_Flag:=True;                          // 完成文件名设置 Txt_Flag为真      
      end;
    end;
    说明清楚了吗?应该理解了。
      

  2.   

    能用就行了如果以后加入公司,你也弄懂别人的代码的话,那不用干活了除非是领导叫你找BUG,或者是前辈特意安排,不然不用管那么多个人意见而已人各有志,如果肯钻研,那自然更好
      

  3.   

    一楼,哪都有你,被你说完了,
    我稍补点儿啥吧,
    Txt_Flag:=True;    是将标志置为真,即开启定时器效果,不知道你的定时器多长时间执行一次啊,但我觉得开启定时器效果后其执行一次,要么把定时器开启标志关掉Txt_Flag:=false,要么把写入流(三个output的东东)清空,要不然那不循环保存去了。