德尔福。备忘录模拟/ RichEdit

时间:2011-06-08 20:10:29

标签: delphi richedit tmemo

有人知道是否有Memo / RichEdit的模拟?需求:编号行,从流中加载大文件(超过5 MB)。

6 个答案:

答案 0 :(得分:2)

Developer Express有一套广泛的VCL组件,其中包括Memo替换(TcxMemo)和RTF编辑(不过我不知道这些功能集)。

答案 1 :(得分:2)

TMS Software有一个很好的TAdvMemo,有很多语法高亮显示器。并且还有一个TRichEdit“替代品”。除了语法突出显示他们的备忘录支持行号。不知道大文件,但5MB听起来不像他们可能有的任何限制。

TRichView是另一个强烈推荐的TRichEdit替代品,具有大型功能集。

答案 2 :(得分:1)

我们的SynMemoEx component设计得轻巧快捷。它加载和处理50 MB文本内容没有问题,包括自动换行。

但它仅适用于2007年之前的Delphi 6(不是unicode)。但它是免费的开源。

我们在SynProject tool中使用此组件,用于文件版本控制显示和文档编辑。你有highlighting for .pas .c .cs .h .xml .html .dfm files(以及更多)。

它有行号和其他不错的功能。查看一些screenshots from here

答案 3 :(得分:0)

TRichView是一个受欢迎的组件,专门用于显示,编辑和打印超文本文档。还有一个TRichView插件提供WYSIWYG编辑。它具有Unicode,RTF导入和导出,HTML导出,数据感知版本等。

我在家谱程序中使用它作为主要组件,并用它来加载非常大的文件(例如100 MB或更多)。它可以直接读取或写入流。

答案 4 :(得分:0)

答案 5 :(得分:0)

是否存在任何可以链接内容的组件看起来像TMemo?

需要(我必须能够做到这一点):

  • 将其中两个放在他们之间的TSplitter
  • 仅加载一次内容,但同时显示两者(可以同时看到两个部分),而不是像你必须在ram上复制所有内容的TMemo
  • 在不到一秒的时间内加载100MiB TXT纯文本文件的时间(排除读取介质的I / O时间),换句话说,如果你有RAM上的数据并希望在不到一秒的时间内显示它们
  • 应用程序必须是RunAble(因此没有组件需要一个单独的dll,我知道如何将exe文件包含在exe中并在运行时提取它们)并且必须以取证方式运行形式的只读媒体(不在任何地方写入)。

通缉:

  • 不限于32Bits系统上的3GiB(不是像丑陋的ram需求TMemo一样加载整个文件,只显示部分)
  • 带有/不带BOM表头等的Unicode和UTF-8 / UTF-16
  • 选择字体以显示文字,如果可以为所有字体选择单声道间距或正常的布尔值
  • ,则效果更佳
  • 线路长度没有限制(TMemo限制为每行4KiB-1),如果您的线路超过一百万个字符,请在一行中看到正确的滚动条滚动等。

不需要:

  • Sintax,颜色等......仅适用于纯文本
  • WordWrap(每行是一行)

好的,我假装的是什么?简短回答:同时链接纯文本文件的视图。

再解释一下:

  • 想象一下,您有一个用户可以添加“分隔符”的GUI
  • 每个分隔符将视图(不是文件)分为两部分......所以如果你有N个分隔符,你可以同时看到文件的N + 1个部分
  • 每个视图都有自己的垂直滚动条,但是只有一个水平滚动条(滚动时所有视图都是水平同步的)
  • 因此,用户可以在一个视图上看到第一行,而其他部分可以同时看到,而无需每次都向上和向下滚动

为什么呢?简单回答:想象一下这个文件是一个日志,并且有超过一百万行...再次想象它就像一个历史日志...并且用户希望看到第X天和第Y天和第一天的某些行#...等等(比较或任何原因)。

如果使用TMemo进行,则需要复制所有数据...而32位应用程序仅限于32位处理器上的2GiB内存和64位处理器上的3GiB内存(编译后)特别指令)。

请记住,应用程序必须在32位和64位处理器上运行,而无需编译不同的版本......并且必须是RunAble,并且在运行时不需要任何写入(任何地方)(取证样式)。

我想了一个可能的方法来创建它......基于TStringList,但我又是如此有限......而且从头开始这么多工作。

也许有一个组件,因为我看到一些应用程序可以显示你没有加载它的大文件,他们都有自己的实现从头开始?或者他们使用我不知道的组件?,其中大部分用于十六进制编辑一个大的二进制文件,有些可以编辑很多GiB的文件,只有少数几个可以快速插入和删除直到它们保存(在执行挂起的插入/删除操作时复制整个文件的I / O可能需要很长时间,超过一个小时,但在屏幕上执行插入/删除操作非常快,不到十分之一秒。

如果我发现了一个组件:

,我可以做我想要的任何事情
  • 看起来像TMemo
  • 通过代码可以模拟垂直和水平滚动而不触摸选定的文本选择(我可以使用较小的TPanel容器隐藏滚动条,因此不需要控件让隐藏滚动条)
  • 非常重要:不要加载整个文件(只读取显示的部分)
  • 拥有LoadFromFile(但不是真正加载整个文件,只是内部存储文件引用)
  • 不需要但需要:用户可以像在TMemo上一样进行编辑
  • 不需要但需要:使用SaveToFile保存用户更改

有没有人?

补充:免费(任何用途)和OpenSource是必须的。