将txt文件加载到synedit时出错

时间:2017-02-14 16:50:12

标签: delphi synedit

我尝试使用

将文本从文本文件加载到synmemo
procedure TForm1.btn7Click(Sender: TObject);
begin
  if dlgOpen1.Execute then
    synm1.Lines.LoadFromFile(dlgOpen1.Files.Text);
end;

但是一旦我选择了一个文件,我就会收到这个错误:

  

无法打开文件" C:\ Users \ adria \ Desktop \ New Text Document.txt
  &#34 ;.文件名,目录名或卷标语法不正确。

组件:https://github.com/TurboPack/SynEdit

1 个答案:

答案 0 :(得分:1)

问题在于使用对话框的 Files 属性来访问所选的文件名。

Files属性是一个列表字符串,用于在对话框中启用多个选择并需要处理用户选择的多个文件名时使用。

字符串列表的Text属性返回该列表中所有条目的格式化表示,每个条目由 EOL 字符(或多个字符)分隔。

您可能希望只涉及单个文件,此Text属性仅包含该文件的名称。但事实上它还包括 EOL 字符。即,您尝试使用此技术打开的文件名实际上是:

'C:\Users\adria\Desktop\New Text Document.txt'#13#10

实际上有一条线索就是显示消息的方式,由于 EOL ,单独的行上的结束引号。

使用所选文件名的正确方法取决于您是支持多项选择还是单项。

对于单个选择(这里是你的情况),最简单的方法是使用对话框的Filename属性:

if dlgOpen1.Execute then
  synm1.Lines.LoadFromFile(dlgOpen1.Filename);

对于多个选择,您将使用Files属性,但是按列表中的索引访问每个文件名:

if dlgOpen1.Execute then
  for i := 0 to Pred(dlgOpen1.Files.Count) do
  begin
    // Do something with each dlgOpen1.Files[i] ...
  end;