2009-11-18 49 views
1

加载文件时出现问题,因为我将相对路径传递给了函数FileExists(Filename: String),并且它返回false,也就是说,它找不到文件我传递的目录。Delphi中服务应用程序给定文件的相对路径

我有一个在D:\Programming\Delphi\Projects\SendMail目录中名为Template.html文件,用Delphi编写的,其.EXE是在D:\Programming\Delphi\Automation目录服务。我正在传递相对路径:.\..\Projects\SendMail\Template.htmlFileExists(),但它返回的是该文件不存在。

我认为这与服务的相对路径和应用程序的相对路径不同有关。任何人都可以帮助我吗?

+0

我有一个见解,这里的人不会像用西班牙语问的问题。 – 2009-11-18 15:01:06

+0

eningléspor favor。 – CodingWithSpike 2009-11-18 15:03:26

+0

在Ingles,por。 说真的,英语可能会帮助你的问题得到回答:) ps:我想你是从错误的目录启动它。尝试指定完整的路径,如\ Program \ Delphi \ ... – lorenzog 2009-11-18 15:04:09

回答

6

正如lorenzog所说,尝试指定完整路径。

您也可以尝试将currentdir设置为您的喜好。

//sets currentdir to your application.exe dir 
SetCurrentDir(ExtractFileDir(ParamStr(0))); 
2

您认为服务的当前目录是存储可执行文件的目录。调用GetCurrentDir以查找当前目录。

+0

好吧,我刚刚找到目录:C:\ Windows \ system32 \。非常感谢你。 – DelphiProgrammer 2009-11-18 20:23:30

2

我的经验是,无论实际的可执行文件位于何处,服务都以%SystemRoot%\System32的工作文件夹开始。

,我绕过这个限制了该方法是写在安装的服务过程中的注册表项(例如HKLM\SOFTWARE\MyCompany\MyApp\INSTALL_PATH)指向什么,我会像工作文件夹是。然后,当服务启动时,它会从注册表中抓取数据,并在创建文件路径时使用该值作为基础。

+0

Gooooooooooooooood,非常好!朋友,谢谢。就是这样......现在起作用了。 – DelphiProgrammer 2009-11-18 20:22:22