我有一个日志文件,我想保持小。
我有一个TDBListBox。
我通过串口输入数据流。
procedure LogIt(tStr : String);
begin
dm.tblLogs.Edit;
dm.tblLogs.FieldByName(fldCommands).AsString:=
dm.tblLogs.FieldByName(fldCommands).AsString+#10+tStr;
dm.tblLogs.Post;
end;
这是有效的,但是这个名单正在增长,我不需要超过最近十个条目。
我能想到的唯一方法是将字段数据加载到不可见的TMemo中
if Memo1.Lines.Count > 0 then
Memo1.Lines.Delete(0);
在添加下一行之前,然后将Memo.Lines.Text传递给数据库字段。
有更好的方法吗?
答案 0 :(得分:0)
您可以使用TStringList
代替TMemo
。但是,您可以在内存中维护单独的日志消息列表,然后在更新列表时仅将最新的10条消息保存到数据库中。例如:
var
log: TStringList;
...
log := TStringList.Create;
log.Capacity := 10;
...
procedure LogIt(tStr : String);
begin
while log.Count >= 10 then
log.Delete(0);
log.Add(tStr);
dm.tblLogs.Edit;
try
dm.tblLogs.FieldByName(fldCommands).AsString := log.Text;
dm.tblLogs.Post;
except
dm.tblLogs.Cancel;
end;
end;