Delphi 为什么memo.loadFromFile需要这么长时间?
我使用TMemo来显示长字符串。我很惊讶这种方法:Memo1.loadfromfile('mem.txt')[mem.txt=111kb]花费了大约35秒,真是太长了 如何使TMemo实时加载字符串Delphi 为什么memo.loadFromFile需要这么长时间?,delphi,vcl,Delphi,Vcl,我使用TMemo来显示长字符串。我很惊讶这种方法:Memo1.loadfromfile('mem.txt')[mem.txt=111kb]花费了大约35秒,真是太长了 如何使TMemo实时加载字符串 thanx因为WordWrap属性为true…:-)您可以尝试 try Memo1.Lines.BeginUpdate; Memo1.LoadFromFile('mem.txt'); finally Memo1.Lines.EndUpdate; end; 您没有说您使用的是哪个版本的D
thanx因为WordWrap属性为true…:-)您可以尝试
try
Memo1.Lines.BeginUpdate;
Memo1.LoadFromFile('mem.txt');
finally
Memo1.Lines.EndUpdate;
end;
您没有说您使用的是哪个版本的Delphi。在Delphi 2009及更高版本中,tstring现在支持Unicode,因此在加载非Unicode(Ansi/UTF)编码文件时必须执行额外的处理。与finally中的代码部分对应的部分应该在try之前。不是在尝试中。禁用日期应在尝试之前进行。如果DisabledUpdates从未执行或因任何原因失败,则不应调用EnableUpdates。您可能指的是BeginUpdate/EndUpdate。TStrings.LoadFromStream(从LoadFromFile调用)已调用这些。上面的代码不存在。。。(禁用重复日期,启用更新)。不过看起来不错;-)对不起,我是从心里打出来的。DisableControls位于dataset+BeginUpdate=DisableUpdates:d LoadFrom…()方法已在内部调用Begin/EndUpdate()。手动调用它们除了增加/减少内部引用计数器之外没有任何效果。有没有解释为什么会有效果?Delphi 7。。。。我使用ANSI字符串。。。我从未使用过Unicode字符串,但Delphi7中的widestring是做什么的?它是否提供Unicode字符串处理/顺便说一下,question/WideString是D2007和更早版本中唯一可用的Unicode字符串类型。在D2009中,引入了一种新的UnicodeString类型,它比WideString(它只是ActiveX/COM BSTR字符串类型的简单包装器)更高效(引用计数、写入时复制、使用RTL内存管理器等)。