加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

[函数] Delphi FMX Windows 取得下载 Downloads 目录

发布时间:2020-12-15 04:38:12 所属栏目:大数据 来源:网络整理
导读:在 Firemonkey 提供了一个跨平台的函数 TPath.GetDownloadsPath来取得该平台的下载目录,但是非常奇怪的是,在 Windows 平台下,取得的下载目录确是: C:Users AppDataLocal () 而不是 C:Users Downloads 也许 EMB 想的是 App 沙箱做法,但如果想要

在 Firemonkey 提供了一个跨平台的函数 TPath.GetDownloadsPath来取得该平台的下载目录,但是非常奇怪的是,在 Windows 平台下,取得的下载目录确是:

C:UsersAppDataLocal ()

而不是

C:UsersDownloads

也许 EMB 想的是 App 沙箱做法,但如果想要取得C:UsersDownloads 这个目录该如何做呢?

可以扩展 TPath 功能,参考如下:

<span style="color: #0000ff;">interface

<span style="color: #0000ff;">uses
<span style="color: #008000;">{<span style="color: #008000;">$IFDEF MSWINDOWS<span style="color: #008000;">}<span style="color: #000000;">
Winapi.Windows,Winapi.ShlObj,Winapi.KnownFolders,<span style="color: #008000;">{<span style="color: #008000;">$ENDIF<span style="color: #008000;">}<span style="color: #000000;">

System.IOUtils;

<span style="color: #0000ff;">type<span style="color: #000000;">
TPathHelper = <span style="color: #0000ff;">record helper <span style="color: #0000ff;">for<span style="color: #000000;"> TPath
<span style="color: #0000ff;">class <span style="color: #0000ff;">function GetWinDownloadsPath: <span style="color: #0000ff;">string<span style="color: #000000;">; static;
<span style="color: #0000ff;">end<span style="color: #000000;">;

<span style="color: #0000ff;">implementation

<span style="color: #0000ff;">class <span style="color: #0000ff;">function TPathHelper.GetWinDownloadsPath: <span style="color: #0000ff;">string<span style="color: #000000;">;
<span style="color: #008000;">{<span style="color: #008000;">$IFDEF MSWINDOWS<span style="color: #008000;">}
<span style="color: #0000ff;">var<span style="color: #000000;"> Path: PWideChar;
<span style="color: #0000ff;">begin
<span style="color: #0000ff;">if Succeeded(SHGetKnownFolderPath(FOLDERID_Downloads,<span style="color: #800080;">0,Path)) <span style="color: #0000ff;">then<span style="color: #000000;">
Result :=<span style="color: #000000;"> String(Path)
<span style="color: #0000ff;">else Result := <span style="color: #800000;">''<span style="color: #000000;">;
<span style="color: #0000ff;">end<span style="color: #000000;">;
<span style="color: #008000;">{<span style="color: #008000;">$ELSE<span style="color: #008000;">}
<span style="color: #0000ff;">begin<span style="color: #000000;">
Result := <span style="color: #800000;">''<span style="color: #000000;">;
<span style="color: #0000ff;">end<span style="color: #000000;">;
<span style="color: #008000;">{<span style="color: #008000;">$ENDIF<span style="color: #008000;">}

<span style="color: #0000ff;">end.

使用方法:

<span style="color: #0000ff;">var<span style="color: #000000;"> DownloadPsth: String;
<span style="color: #0000ff;">begin<span style="color: #000000;">
DownloadPath :=<span style="color: #000000;"> TPath.GetWinDownloadsPath;
<span style="color: #0000ff;">end;

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读