[FMX] 获取应用程序所在的根目录及文件名

这个函数适用于 iOS、Android、Windows、OSX,但仅适用于 Delphi/C++ Builder,对别的语言没多大的参考价值。当然,也不能说真的没有,有兴趣的可以朋友可以参考 Delphi 中的 System.pas 单元的源码,然后再加以改造并参考本部分的代码一样可以实现跨平台的获取应用程序根目录及文件名的方法。

//使用全局变量缓存应用的文件名和路径,提高多次调用时效率,这几个值反正也不会变
var
  _AppFileName,_AppPath:String;

function AppFileName: String; inline;
begin
  if Length(_AppFileName) = 0 then
  begin
{$IFDEF ANDROID}
    _AppFileName := JStringToString(SharedApplicationInfo.processName);
{$ELSE}
    _AppFileName := ParamStr(0);
{$ENDIF}
  end;
  Result := _AppFileName;
end;

function AppPath: String; // inline;
begin
  if Length(_AppPath) = 0 then
  begin
{$IFDEF ANDROID}
    _AppPath := JStringToString(SharedApplicationInfo.dataDir);
{$ELSE}
    _AppPath := ExtractFilePath(AppFileName);
{$ENDIF}
  end;
  Result := _AppPath;
end;

 

分享到: