我正在执行一个 Delphi 应用程序,当我调用 GetCurrentDir
时,将返回以下内容:
C:\dev\w32\2015\BCSLBDemo\Win32\Debug
当我调用 ExtractFileDir(GetCurrentDir())
时,我收到以下内容:
C:\dev\w32\2015\BCSLBDemo\Win32
我想要的是C:\dev\w32\2015\BCSLBDemo
function RetRoot: string;
var
i: Integer;
buf: string;
begin
Result := '';
buf := ExtractFileDir(GetCurrentDir());
i := Length(buf);
repeat
dec(i);
until (buf[i] = '\') or (i < 3);
if buf[i] = '\' then
begin
Delete(buf, i, Length(buf));
Result := buf;
end;
end;
我编写这个函数是为了得到想要的结果。我想知道是否有更好的方法来完成检索 Delphi 可执行文件的根目录。
最佳答案
还有另一种方法:
ExpandFileName(GetCurrentDir + '\..\..\'); // Current folder
ExpandFileName(ExtractFileDir(Application.ExeName) + '\..\..\'); // Exe folder
C:\dev\w32\2015\BCSLBDemo
如您所见,将使您上升两个级别。
当然,这只是回答“如何升级 2 级”的问题。关于Exe root的问题有点无意义。您可能只需要配置项目设置,不要创建 Win32\Debug
文件夹或将数据文件移动到其中;-)
关于delphi - 返回Delphi可执行文件的根目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32869919/