0

我有以下基本代码:

procedure TForm4.shrek1Click(Sender: TObject);
begin
  shrek1.Picture.LoadFromFile('donkey.jpeg');
end;

shrek1aTImage和是我点击时要加载donkey.jpeg的图像在哪里。shrek1

donkey.jpeg位于几乎所有其他相关项目文件的同一目录中,但是当我尝试运行代码时出现错误:

带有消息的异常类 EFOpenError '无法打开文件“\(为隐私而删除的目录)\donkey.jpeg”。该系统找不到指定的文件

我究竟做错了什么?

4

1 回答 1

3

始终使用绝对路径。相对路径是相对于调用进程的当前工作目录的,它可以(并且通常会)在进程的生命周期内改变值,并且并不总是你所期望的。

如果 JPG 文件与您的 EXE 位于同一文件夹中,您可以这样做:

var
  AppPath: string;

procedure TForm4.shrek1Click(Sender: TObject);
var
  FileName: string;
begin
  FileName := AppPath+'donkey.jpeg'; // <-- make sure this path is accurate!
  shrek1.Picture.LoadFromFile(FileName);
end;

initialization
  AppPath := IncludeTrailingPathDelimiter(ExtractFilePath(Application.ExeName));
于 2017-03-10T01:14:30.023 回答