我在加载文件时遇到问题,因为我正在传递函数FileExists(Filename: String)
的相对路径,并且它返回false,也就是说,它在我传递的目录中找不到该文件。
我在Template.html
目录中有一个名为D:\Programming\Delphi\Projects\SendMail
的文件,以及一个用.EXE
位于D:\Programming\Delphi\Automation
目录中的Delphi编写的服务。我将相对路径.\..\Projects\SendMail\Template.html
传递给FileExists()
,但它返回该文件不存在。
我认为这与服务的相对路径和应用程序的相对路径不同有关。有人可以帮我吗?
答案 0 :(得分:8)
正如lorenzog所说,请尝试指定完整路径。
您也可以尝试将currentdir设置为您的喜好。
//sets currentdir to your application.exe dir
SetCurrentDir(ExtractFileDir(ParamStr(0)));
答案 1 :(得分:3)
您假设服务的当前目录是存储可执行文件的目录。调用GetCurrentDir以查找当前目录。
答案 2 :(得分:3)
我的经验是,无论实际可执行文件位于何处,服务都以%SystemRoot%\System32
的工作文件夹开头。
我解决这个限制的方法是在安装服务期间编写一个注册表项(例如HKLM\SOFTWARE\MyCompany\MyApp\INSTALL_PATH
),指向我将喜欢的工作文件夹 。然后,当服务启动时,它会从注册表中获取数据,并在创建文件路径时使用该值作为基础。