/======================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;
實驗中遇到的編程問題,主要對這部分程式看不太懂,希望大俠能詳細解釋下。
主要是采集資料以后 激發定時器定時寫入,可具體這寫代碼什么意思?
uj5u.com熱心網友回復:
// 定時保存文本檔案
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;
說明清楚了嗎?應該理解了。
uj5u.com熱心網友回復:
能用就行了如果以后加入公司,你也弄懂別人的代碼的話,那不用干活了
除非是領導叫你找BUG,或者是前輩特意安排,不然不用管那么多
個人意見而已
人各有志,如果肯鉆研,那自然更好
uj5u.com熱心網友回復:
看代碼總比寫代碼要簡單些,樓主要來是要多多努力了,uj5u.com熱心網友回復:
一樓,哪都有你,被你說完了,我稍補點兒啥吧,
Txt_Flag:=True; 是將標志置為真,即開啟定時器效果,不知道你的定時器多長時間執行一次啊,但我覺得開啟定時器效果后其執行一次,要么把定時器開啟標志關掉Txt_Flag:=false,要么把寫入流(三個output的東東)清空,要不然那不回圈保存去了。
uj5u.com熱心網友回復:
就是要實作定時回圈保存資料呀uj5u.com熱心網友回復:
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/71371.html
標籤:語言基礎/算法/系統設計
上一篇:[待解決] 請問 Delphi 怎么清理記憶體?有可用的 dll 嗎??
下一篇:idtcpserver 的問題
