3

我目前在我的一个软件(在 Delphi 7 中)中使用 TRichEdit 作为“实时”事件日志查看器,我最近对我的软件进行了分析,TRichEdit 消耗了超过 40% 的软件 cpu 时间。

我只想测试其他组件以比较性能,该组件必须具有:

  • 线条着色(可能是 LINE 语法颜色,因为不同颜色的线条有不同的前缀或 HTML 着色等)。
  • 轻松保存到文件功能(到 RTF 或 HTML)。
  • 免费或开源。
  • 性能好。即使是“大文件”(可能是 200 Mo)作为查看器。

信息:我还看过这篇文章,但对我来说没有很好的答案。

4

3 回答 3

3

查看大约 1996 年的 TConsole / TColorConsole: http ://www.torry.net/authorsmore.php?id=604

它不支持 HTML,也不支持 RTF,但它确实可以非常快地滚动彩色文本。;>

于 2011-11-15T22:51:23.993 回答
2

对于“实时”事件日志查看器,我建议使用VirtualTreeView。它能够处理几乎无限数量的行,具有大量的自定义功能(如自定义着色和自定义绘制任何东西),支持 unicode 并且即使列表中已有数百万个项目也能以极快的速度运行。理解一切是如何运作的确实需要一些时间,但一旦你弄清楚了,你就永远不会回头。它甚至支持就地编辑(包括对每一列的自定义控件的支持)。每个项目都是一个记录,可以保存您需要的任何数据(不仅仅是您要显示的数据)。还支持增量搜索,以及从代码中极速搜索,即使您拥有数百万个项目也没关系。

由于操作系统或组件本身施加的许多限制,我会避免使用任何类型的“标准”文本编辑组件。我所知道的唯一可以支持大多数(如果不是全部)需求的组件已经提到 - TRichView。我试过TSynEdit了,我可以说它有很多功能,但严重缺乏性能。

试试 VirtualTreeView,你不会后悔的。

于 2011-11-15T23:52:55.590 回答
1

也许您可以登录到客户端数据集。DBGrid 允许您指定各种绘图选项,因此您可以根据可见线条指定背景颜色。ClientDataset 可以轻松管理相当多的数据,并且网格只会绘制那些可见的行。

无论如何,如果你记录很多,不断重绘记录组件会减慢应用程序的速度。也许您应该通过在临时日志中缓存行并每隔几秒将它们批量添加到可见日志中来降低日志的实时性。

于 2011-11-15T22:47:02.760 回答