Delphi 如何使用系统路径变量从path获取绝对路径?

Delphi 如何使用系统路径变量从path获取绝对路径?,delphi,path,absolute-path,Delphi,Path,Absolute Path,有没有一种简单的方法可以将带有系统路径变量的路径转换为绝对路径 所以%ProgramFiles%\internetexplorer\hmmapi.dll变成C:\ProgramFiles\internetexplorer\hmmapi.dll 我想知道是否有一个API调用可以做到这一点,或者我必须以艰难的方式做到这一点,检测%..%序列并用相应的环境变量替换它们吗?您可以使用WinAPI函数ExpandEnvironmentStrings: function ExpandEnvStr(const

有没有一种简单的方法可以将带有系统路径变量的路径转换为绝对路径

所以
%ProgramFiles%\internetexplorer\hmmapi.dll
变成
C:\ProgramFiles\internetexplorer\hmmapi.dll


我想知道是否有一个API调用可以做到这一点,或者我必须以艰难的方式做到这一点,检测%..%序列并用相应的环境变量替换它们吗?

您可以使用WinAPI函数
ExpandEnvironmentStrings

function ExpandEnvStr(const szInput: string): string;
  const
    MAXSIZE = 32768;
  begin
    SetLength(Result,MAXSIZE);
    SetLength(Result,ExpandEnvironmentStrings(pchar(szInput),
      @Result[1],length(Result)) - 1);
  end;

是的,这就是我想要的功能。在google.ExpandEnvironmentStrings最终使用了正确的关键字之后,我自己也发现了它。Strings返回包含空字符的长度,因此您必须从结果中减去1以返回不带空终止符的字符串。在带尾随的末尾添加了-1#0