/======================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;
实验中遇到的编程问题,主要对这部分程序看不太懂,希望大侠能详细解释下。
主要是采集数据以后 激发定时器定时写入,可具体这写代码什么意思?
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;
实验中遇到的编程问题,主要对这部分程序看不太懂,希望大侠能详细解释下。
主要是采集数据以后 激发定时器定时写入,可具体这写代码什么意思?
解决方案 »
- delphi连接sql2000数据库提示“[Microsoft][ODBC SQL Server Driver]没有执行可选择性”,如何处理
- 如何在服务中运行其它程序?
- DBNavigator 编辑数据,无法保存到数据库
- ODAC 中如何实现绑定参数查询
- 如何捕捉正在编辑中的DBGrid中的值
- 菜鳥問題﹐請速幫幫忙﹗
- 怎样制作像delphi一样的启动欢迎画面?
- 资源文件问题
- 在delphi+word编程中,wordApplication有onQuit事件,但对于Excel和PPT却没有,请大虾指教如何捕捉到Excel和PPT当中的onQuit事件。
- ADO操纵ACCESS,两种驱动接口有何区别?哪个更好些?发布更简单些?
- TChromium使用问题
- delphi设计模式问题
// 定时保存文本文件
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;
说明清楚了吗?应该理解了。
我稍补点儿啥吧,
Txt_Flag:=True; 是将标志置为真,即开启定时器效果,不知道你的定时器多长时间执行一次啊,但我觉得开启定时器效果后其执行一次,要么把定时器开启标志关掉Txt_Flag:=false,要么把写入流(三个output的东东)清空,要不然那不循环保存去了。