gpt4 book ai didi

Delphi:如何避免文档文件夹设置中的重复(OneDrive)?

转载 作者:行者123 更新时间:2023-12-04 07:37:31 25 4
gpt4 key购买 nike

尝试以不那么困惑的方式存储用户设置和默认保存的数据位置。
在 PC1 上,

Label1.Caption := TPath.GetDocumentsPath;
向我显示 C:\Users\Mike\Documents,在 PC2 上它显示 C:\users\mike\OneDrive\Documents。
在 PC2 上,我有两组相互不匹配的\Documents 文件和文件夹,查找设置或文档涉及搜索。我从新加坡的一位用户那里得到了反馈,他同样报告说很难找到他们的数据。
由于我的应用程序默认将用户设置存储在\Documents 的子文件夹中,并且世界各地的用户都有不同的实现,我想征求意见。
我假设我应该接受 TPath.GetDocumentsPath 提供的任何内容而不尝试修改它?
如果我的应用程序可以检测到两个\Documents 文件夹,我可以发出警告。
或者我应该在其他地方设置默认商店?

最佳答案

我使用 Local AppData 文件夹来存储依赖于用户的设置,并使用 ProgramData 来存储全局设置(独立于用户)。代码提取:

var
CommonPath : array [0..MAX_PATH] of Char;
LocalPath : array [0..MAX_PATH] of Char;
LangFileName : String;
begin
SHGetFolderPath(0, CSIDL_COMMON_APPDATA, 0, SHGFP_TYPE_CURRENT, @CommonPath[0]);
SHGetFolderPath(0, CSIDL_LOCAL_APPDATA, 0, SHGFP_TYPE_CURRENT, @LocalPath[0]);
FAppName := ChangeFileExt(ExtractFileName(Application.ExeName), '');
FCommonAppData := IncludeTrailingPathDelimiter(CommonPath) +
CompanyFolder + '\' + FAppName + '\';
FLocalAppData := IncludeTrailingPathDelimiter(LocalPath) +
CompanyFolder + '\' + FAppName + '\';
ForceDirectories(FCommonAppData);
ForceDirectories(FLocalAppData);
end;
变量位于表单类中的 protected 站中:
    FLocalAppData                 : String;
FCommonAppData : String;
FAppName : String;
CompanyName是一个常数,其值显然是我的公司名称。

关于Delphi:如何避免文档文件夹设置中的重复(OneDrive)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67669318/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com