gpt4 book ai didi

c++ - richTextBox 的字符数限制?

转载 作者:行者123 更新时间:2023-11-28 08:32:44 25 4
gpt4 key购买 nike

我在将大量文本存储在丰富的 TextBox 中时遇到问题。

我正在尝试读取一个相当大的文本文件(从 90mb 到 450mb 不等),并将我读取的内容放入富文本框中。它在一个简单的程序中工作,但是当我在一个复杂的程序中工作时,我得到一个 OutOfMemory 异常。

需要注意的一件事是,当我退出我的简单程序时,我在程序返回 0 之前得到了一个 OutOfMemory 异常。

这是我的简单程序代码:

    array<String^>^ strArray;
StreamReader^ sr;
String^ dummyStr;
int dummyInt;

sr = gcnew StreamReader("C:\\testsize.txt");

while( (dummyStr = sr->ReadLine() )!= nullptr)
{
dummyInt++;
}
sr->Close();

sr = gcnew StreamReader("C:\\testsize.txt");
strArray = gcnew array<String^>( dummyInt );
for(int i=0; i < strArray->Length; i++)
{
strArray[i] = sr->ReadLine();
}
richTextBox1->Lines = strArray;

我的项目中有一段类似的代码,当我执行 richTextBox1->Lines = strArray 行时会弹出异常。

我已经阅读了富文本框的文档,它说最大限制是 64KB 的字符,但是中途这是有道理的,因为我可以加载文本,但我猜程序在之后转储它时有问题.

有什么想法吗?我一直在尝试寻找一些没有限制的自定义控件,但到目前为止没有成功。

最佳答案

至于将大量文本转储到丰富的编辑中,这通常会非常慢,以记事本为例,尝试用它打开一个 2MB 的文件。我认为更高级的文本编辑器处理这些的方式是通过“虚拟控件”,我知道这些通常与列表控件一起使用,我也认为与文本框一起使用。它们的行为/功能基本上与您的日常控件相同,但不会尝试一次渲染大量文本,它们具有“屏幕空间之外”的虚拟空间。

至于你的内存不足问题......我很困惑你说错误发生在你的示例代码的最后一行,当你试图将你的文本转储到它时。你还提到限制是 64KB,所以现在假设你的文件像你说的那样很大......你在尝试将超过 64KB 的文本转储到 64KB 的有限框中时遇到错误是有道理的。我错过了什么吗?

编辑 我重读了一些问题,我明白了你现在在问什么,所以在简单的程序中,当一切加载完成后,当程序退出时,你会得到一个错误。将调试点放入您的析构函数中,并准确查看此错误发生的位置。

Edit 2 现在我知道你在什么系统上了,我去看了看,文档比 64K 限制要复杂一点。这首先不是指 64 KB,而是指 64000 个字符。另请注意,您可以根据需要更改此限制。其次,如果您使用 SF_TEXT 而不是 SF_RTF 进行流式传输,则此限制无效,我想这就是 .NET 界面所见背后发生的事情。

关于c++ - richTextBox 的字符数限制?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1139006/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com