首页 > 其他分享 >关于Quick.logger的一点点补充

关于Quick.logger的一点点补充

时间:2024-08-22 22:50:43浏览次数:10  
标签:mmLogShow Lines 一点点 aLogItem Quick logger procedure

关于Quick.logger的一点点补充

用 Quick.logger 一直有个需求需要用到对多种Provider更新时,自动更新TMemo 之类TStrings相关的显示见面。

一直想用 Quick.Logger.Provider.StringList,然后指定页面里面的 TMemo.lines 来实现。但可以现象的是一定会因为同步问题导致失败。

好在Quick 的开发者提供了一个解决办法,配置事件的方式。见Quick.Logger.Provider.Events 45行左右。

  {$IFDEF FPC}
  TLoggerEvent = procedure(LogItem : TLogItem) of object;
  {$ELSE}
  TLoggerEvent = reference to procedure(LogItem : TLogItem);
  {$ENDIF}

然后通过事件方式实现TMemo.lines 的数据刷新同步。

procedure TMainForm.OnNewLog(aLogItem :TLogItem);
begin
  ThreadSafeUpdateMemo(format('%s [%s] %s (TreadId: %d)', [DateTimeToStr(aLogItem.EventDate),
    aLogItem.EventTypeName, aLogItem.Msg, aLogItem.ThreadId]));
end;

procedure TMainForm.ThreadSafeUpdateMemo(const aMsg :string);
const
  maxSize :word = 80;
begin
  CS_UI.Enter;
  try
    mmLogShow.Lines.BeginUpdate;
    mmLogShow.Lines.Add(aMsg);
    while mmLogShow.Lines.Count > maxSize do
      mmLogShow.Lines.Delete(0);
    mmLogShow.Lines.EndUpdate;
    mmLogShow.Invalidate;
  finally
    CS_UI.Release;
  end;

end; 

确实起到了效果,但发现并不是每次都有效,总会导致程序莫名挂掉。

之后决定还是用 配置缓冲,然后用Timer 周期性更新界面 ...

标签:mmLogShow,Lines,一点点,aLogItem,Quick,logger,procedure
From: https://www.cnblogs.com/hieroly/p/18374881

相关文章

  • 快速排序QuickSort
    #include<stdio.h>#include<stdbool.h>#include<stdlib.h>/*时间复杂度是O(n*递归层数)O(n*logn)空间复杂度是O(递归层数)*/intPartition(inta[],intlow,inthigh){ intpivot=a[low];//第一个元素作为枢轴 while(low<high){//low和high作为数轴最终位......
  • Qt Quick 消息列表视图组件
    目录开发环境简介预览图代码main.qmlMessageQueueView.qml开发环境Qt版本:6.5.3构建:cmake+minGW64-bit简介这是一个纯QML程序,功能是一个消息列表的功能,可以进行插入,删除,清空等操作预览图![2024-08-2114-28-39_converted](images/2024-08-2114-28-39_converted.gif)......
  • QuickTime Player 在 Mac / iPad / iPhone 上无法播放 .mp4 视频 bug All In One
    QuickTimePlayer在Mac/iPad/iPhone上无法播放.mp4视频bugAllInOneerrors❌从网上下载的.m3u8(有多个.ts格式的视频片段组合成的)MP4视频,使用Mac/iPad/iPhone自带的QuickTimePlayer都无法正常播放视频bug!要么是没有图像,只有声音;要么是只走进度......
  • Binance 如何使用 Quickwit 构建 100PB 日志服务(Quickwit 博客)
    三年前,我们开源了Quickwit,一个面向大规模数据集的分布式搜索引擎。我们的目标很宏大:创建一种全新的全文搜索引擎,其成本效率比Elasticsearch高十倍,配置和管理显著更简单,并且能够扩展到PB级别的数据。https://quickwit.io/blog/quickwit-first-release虽然我们知道Quickw......
  • tensorboard_logger库无法导入的问题解决
    一、问题描述最近在学习深度学习时,从大神们那里copy的代码中有用到tensorboard_logger这个库的东西,所以很自然地就用condainstall或者pip去安装它,但是结果是:python开源库里面没有这东西。这就让我很苦恼,所以只能自己动手,丰衣足食了。 二、解决方法首先找到tensorboard_logge......
  • Python使用PyCharm创建一个简单的Qt Quick应用程序-hello_world_quick.py(读取qml文件
    """CreateaSimpleQuickApplication"""importsysfrompathlibimportPathfromPySide6.QtGuiimportQGuiApplicationfromPySide6.QtQmlimportQQmlApplicationEngine#打开文件,读取文件,并返回文件内容defread_file(file_path):"......
  • Python使用PyCharm创建一个简单的Qt Quick应用程序-hello_world_quick.py
    """CreateaSimpleQuickApplication"""importsysfromPySide6.QtGuiimportQGuiApplicationfromPySide6.QtQmlimportQQmlApplicationEngineQML="""importQtQuickimportQtQuick.ControlsimportQtQuick.Lay......
  • QuickSort之C#实现
    ///<summary>///快速排序中的切分///lIndex已经是基准值,i记录基准值的大小值的边界,j记录目前遍历的边界;///i值必须从lIndex+1开始,因为基准值已经在lIndex位置了,///i位置的值必须大于基准值,因为发现比基准值小的值,需要和i位置的值交换,///交换结束后,i++,变更基准边......
  • 排序算法 快速排序 quickSort -- C语言实现
    快速排序快速排序是由东尼·霍尔所发展的一种排序算法。在平均状况下,排序n个项目要Ο(nlogn)次比较。在最坏状况下则需要Ο(n2)次比较,但这种状况并不常见。事实上,快速排序通常明显比其他Ο(nlogn)算法更快,因为它的内部循环(innerloop)可以在大部分的架构上很有效率地被实......
  • VisionPro二次开发学习笔记1-创建基于QuickBuild的C#应用程序
    创建基于QuickBuild的C#应用程序使用的QuickBuild应用程序位于%VPRO_ROOT%/Samples/Programming/QuickBuild/advancedAppOne.vpp中。在继续之前,可以在QuickBuild中运行该应用程序。QuickBuild应用程序使用PatMax查找支架的“耳朵”之一,使用CogFixture工具设置图像的......