我有以下基本代码:
procedure TForm4.shrek1Click(Sender: TObject);
begin
shrek1.Picture.LoadFromFile('donkey.jpeg');
end;
其中shrek1
是TImage
,而donkey.jpeg
是我想要点击时加载shrek1
的图片。
donkey.jpeg
位于字面上每个其他相关项目文件的同一目录中,但当我尝试运行代码时出现错误:
异常类EFOpenError,带有消息'无法打开文件" \(已删除隐私目录)\ donkey.jpeg"。系统找不到指定的文件
我做错了什么?
答案 0 :(得分: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));