File 系统找不到指定的文件

File 系统找不到指定的文件,file,delphi,path,File,Delphi,Path,该文件位于软件所在的目录中。我正在尝试将文本文件添加到备忘录框中 procedure TForm4.FormCreate(Sender: TObject); var dir : string; begin Form4.Caption:='Abateri instrumente'; dir := GetCurrentDir; Memo1.Lines.LoadFromFile(dir+'\abateri.txt'); end; 在您的特定情况下,您应该加载带有代码的文件 Memo1

该文件位于软件所在的目录中。我正在尝试将文本文件添加到备忘录框中

procedure TForm4.FormCreate(Sender: TObject);
var
  dir : string;
begin
  Form4.Caption:='Abateri instrumente';
  dir := GetCurrentDir;
  Memo1.Lines.LoadFromFile(dir+'\abateri.txt');
end;

在您的特定情况下,您应该加载带有代码的文件

Memo1.Lines.LoadFromFile(dir+'\abateri.txt.txt');
这是因为在您提供的下面的屏幕截图中,Project3文件的扩展名被隐藏,从而得出结论:隐藏已知文件扩展名的选项已启用。但是显示的是abateri.txt文件,这只会导致常见的双扩展名错误

重命名文件并删除冗余部分(首选第一个.txt),或者在代码中使用双扩展名。
我还建议在Windows资源管理器中禁用该选项:
工具>文件夹选项>视图>取消选中“隐藏已知文件类型的扩展名”

除上述内容外,还应始终使用
TPath.Combine
函数调用建立路径,以确保路径正确。 你可以看到它的文档

该文件位于软件所在的目录中

在这种情况下,查找工作目录是错误的方法。没有理由认为工作目录应该是可执行文件所在的目录。您需要使用:

Dir := ExtractFilePath(ParamStr(0)); // the directory where the executable resides
TPath.Combine(Dir, FileName); // TPath is from the System.IOUtils unit

当然,您的另一个问题是文件名错误。该文件实际上命名为
abateri.txt.txt

使用例如
Memo1.Lines.LoadFromFile(ExtractFilePath(ParamStr(0))+'abateri.txt')
。我得到了完全相同的错误:“Exception efopenerro”“系统找不到指定的文件”“没有
efopenerro
异常。如果想获得帮助,请具体说明。很抱歉,我键入了“EfOpenError”,这是一个屏幕截图,请尝试LoadFromFile(dir+'\abateri.txt.txt')。在您的屏幕截图中,项目文件的扩展名是隐藏的,这意味着您启用了隐藏已知文件扩展名的选项,但文本文件的扩展名却显示了。不,您应该停止使用
GetCurrentDir
函数来获取应用程序目录(只需调用
SetCurrentDirectory
即可将其中断)。但是很好地抓住了那个扩展输入错误!非常好的结论。我也完全支持您关于取消隐藏已知文件扩展名的建议types@TLama,我完全同意。在当今时代,人们永远不应该使用应用程序目录,因为它存在太多UAC问题。我们应该使用
AppData
文件夹来写/读自我维护的文件!但是我的观点更多的是关于
GetCurrentDir
在这方面是不可靠的。很好的一个,我真的忘记了我隐藏了文件扩展名,因为我刚刚安装了一个新的硬盘驱动器,谢谢,现在我终于完成了我的第一个软件:D