我尝试使用
将文本从文本文件加载到synmemoprocedure 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 ;.文件名,目录名或卷标语法不正确。
答案 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;