Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Delphi 了解图像的路径_Delphi_Timage - Fatal编程技术网

Delphi 了解图像的路径

Delphi 了解图像的路径,delphi,timage,Delphi,Timage,我是一个编程新手,我有一个游戏(比如Flappy Bird)。在我的项目中,我通常必须改变形象,因此在我的主要形式中,我有一个时间。 *我的问题是我如何确切地知道图像的路径在哪里当然我使用Image1.Picture.LoadFromFile 我有一张照片的名字:“Scene1.bmp”; -一个TForm1.按钮1点击(发送方:TObject) *任务:当用户点击按钮时,图像将 “LoadFromFile”将Scene1.bmp设置为TImage 请帮帮我,非常感谢 您可以使用应用程序EXE文

我是一个编程新手,我有一个游戏(比如Flappy Bird)。在我的项目中,我通常必须改变形象,因此在我的主要形式中,我有一个时间。 *我的问题是我如何确切地知道图像的路径在哪里当然我使用Image1.Picture.LoadFromFile

我有一张照片的名字:“Scene1.bmp”; -一个TForm1.按钮1点击(发送方:TObject)

*任务:当用户点击按钮时,图像将 “LoadFromFile”将Scene1.bmp设置为TImage

请帮帮我,非常感谢

您可以使用应用程序EXE文件的文件夹(或子文件夹)来存储Scene1.bmp文件

在VCL中有类型为
TApplication
的全局对象
Application
。您可以使用属性
Application.ExeName
获取应用程序可执行文件的文件名,包括路径信息。看

使用TPath.GetDirectoryName,您可以提取驱动器和目录部分。看这个

例如,名为Sub的子文件夹的路径是
TPath.GetDirectoryName(Application.ExeName)+'\Sub'


这样,您可以构造完整的路径和文件名,并在
LoadFromFile

中使用它。当您仅使用文件名(如'Scene1.bmp')在应用程序中寻址文件时,您的应用程序将搜索应用程序exe文件路径上的文件作为应用程序的默认路径,但是默认路径可能会因某些原因而更改,您可以使用
SetCurrentDir
函数设置应用程序的默认路径,并使用
GetCurrentDir
函数获取默认路径

每个进程都有一个“当前目录”作为默认路径,并且它是可变的,所以您应该始终使用要使用的文件的完整地址

您可以从
应用程序
类的
ExeName
字段获取应用程序的exe文件的完整路径:

var
 MyApplicationFullPath : String;
begin
 MyApplicationFullPath := Application.ExeName;
end;
使用
ExtractFilePath
功能,您可以获得应用程序exe文件的路径,而不需要文件名,实际上是exe文件文件夹的地址,然后您可以使用此地址处理exe文件之外的文件,例如:

 Image1.Picture.LoadFromFile(ExtractFilePath(Application.ExeName) + 'Scene1.bmp')
您可以确保会找到“Scene1.bmp”,并且应用程序的默认路径无关紧要

我怎样才能确切地知道图像的路径呢

应用程序的当前目录+'Scene1.bmp':

ImageFullAddress := GetCurrentDir + 'Scene1.bmp'

编写安装程序以将文件复制到
ProgramData
子文件夹。有关此操作的详细信息,请搜索SO或MSDN。F.ex。我仍然感觉模糊,你能更清楚吗?你(或你的安装程序)应该决定你的图像存储在哪里。使用可以使用Windows API查询的明确定义的位置,例如用户的
ProgramData
文件夹的子目录(安装程序创建的子目录)。请查看或类似函数,以了解其位置。你也可以将它们存储在程序目录中。如果你不知道它在哪里,我们有什么机会?你最后一次看到你的图像文件
Scene1.bmp
?以及如何在PlaySound中连接CurrentDir字符串('Path',0,SND_ASYNC)?@Johnny PlaySound(PChar(GetCurrentDir+'MyFile'),0,SND_ASYNC);