【发布时间】:2015-08-15 03:28:35
【问题描述】:
希望每个人都做得很好。 我只有一个问题,在 Delphi 编程中...... 我有一个备忘录,它为我加载了一个文件 .txt ,它包含大行,比如 50,000Lines....
所以我想将这些行拆分为 5000 行,然后将它们加载到新的备忘录中。 例如第一次拆分,它将在新文件文本上拆分 5000 行,然后将其加载到新备忘录上,加载后(删除 5000 的文件),当然对于大 LINES 将是 45000。
第二次拆分它将从 45,000 拆分 5000 ,大行将是 40,000,新行将是 5000(文件文本)。
我为什么要拆分文件文本上的行然后加载它的原因,因为当我将文件拆分为备忘录时程序没有响应(没有响应)。
procedure TForm1.Button1Click(Sender: TObject);
var count,i ,X,m:integer;
begin
Memo2.Clear;
Label1.Caption:=IntToStr(Memo1.Lines.Count) ;
if Memo1.Lines.Count > 5000 then
X:=5000
else X:= Memo1.Lines.Count ;
for count:=0 to x do
begin
Memo2.lines.add(Memo1.lines.Strings[0]);
Memo1.Lines.Delete(0);
Memo2.Text:=Trim(Memo2.text);
end;
end;
这是我用来将小行拆分为其他小行的代码...
在备忘录中,但当你有 100 万行时,程序将停止回答。
我添加了 trim(memo2.text) ;删除末尾的空行。
那么我如何分割行,而不是文件大小(因为它会破坏行)......我如何像我对文件文本所说的那样分割大行,然后加载并删除它,然后当我重新单击一个按钮时,它将对其他行执行相同的操作....
我知道我们必须使用 TThread 类,但我不知道如何用我的代码实现它...谢谢!
谢谢。
【问题讨论】:
-
线程不是解决方案,因为如果不与主线程同步,它们就无法与 GUI 控件交互(这违背了使用线程的目的)。为什么需要使用备忘录来拆分内容?用户显然不能同时看到所有的备忘录控件。您的代码的意图是什么?显示与拆分为文本文件无关。
-
我会再试一次。目前尚不清楚您是否需要帖子中的备忘录(视觉控件)。目前尚不清楚您是在尝试向用户显示内容,还是只是(并且错误地)尝试将备忘录用于错误的事情。所以我会再问一次:你的实际目标是什么?您想向用户显示备忘录中的内容吗?你想玩瓷砖的内容吗?你真的能读懂我一直问你而你似乎一直忽略的问题吗? 你到底想做什么?如果你懒得解释,你的问题不属于这里。
-
澄清您的问题以表明您的目标是否是*向用户显示备忘录的内容(正确使用(,或者您是否正在使用备忘录(错误地)作为执行其他任务的工具。到目前为止,您的帖子和 cmets 并没有说明您是否只是正确使用了 UI 控件,或者您是否在做一些完全错误的事情,用户在此过程中使用了 UI 控件,并且反复尝试要求您澄清似乎失败了。*您想要做什么?它们是独立且不同的事情,所以只有一个选择。哪一个你选吗?
-
线程不是答案。备忘录不是答案。
-
如果您停止玩游戏并明确您的要求,我们或许可以提供帮助。我通常会处理大于 1GB 的文件,并允许用户浏览内容。如果您简单地说明您的要求,正如我之前多次问过的那样,我敢肯定这里有人可以提供帮助。如果您仍然固执己见,那么让我们结束这个问题并转向真正需要我们帮助的人
标签: delphi