Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Delphi 为什么memo.loadFromFile需要这么长时间?_Delphi_Vcl - Fatal编程技术网

Delphi 为什么memo.loadFromFile需要这么长时间?

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

我使用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;

您没有说您使用的是哪个版本的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内存管理器等)。