Delphi: 如何在文档文件夹设置中避免重复(OneDrive)?
Delphi: How to avoid duplication (OneDrive) in Document Folder setting?
尝试以一种不那么混乱的方式存储用户设置和默认保存的数据位置。
在 PC1 上,
Label1.Caption := TPath.GetDocumentsPath;
给我显示 C:\Users\Mike\Documents,在 PC2 上它显示 C:\users\mike\OneDrive\Documents。
在 PC2 上,我有两组 \Documents 文件和文件夹,它们彼此不匹配,查找设置或文档涉及搜索。我收到了一位新加坡用户的反馈,他同样报告说很难找到他们的数据。
由于我的应用程序默认将用户设置存储在 \Documents 的子文件夹中,并且世界各地的用户都有不同的实现方式,因此我希望得到建议。
我想我应该接受 TPath.GetDocumentsPath 提供的任何内容而不尝试修改它?
如果我的应用程序可以检测到两个 \Documents 文件夹,我可以发出警告。
或者我应该在其他地方设置默认商店吗?
我使用本地 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;
变量在表单的受保护位置中 class:
FLocalAppData : String;
FCommonAppData : String;
FAppName : String;
而CompanyName
是一个常数,其值显然是我的公司名称。
尝试以一种不那么混乱的方式存储用户设置和默认保存的数据位置。
在 PC1 上,
Label1.Caption := TPath.GetDocumentsPath;
给我显示 C:\Users\Mike\Documents,在 PC2 上它显示 C:\users\mike\OneDrive\Documents。
在 PC2 上,我有两组 \Documents 文件和文件夹,它们彼此不匹配,查找设置或文档涉及搜索。我收到了一位新加坡用户的反馈,他同样报告说很难找到他们的数据。
由于我的应用程序默认将用户设置存储在 \Documents 的子文件夹中,并且世界各地的用户都有不同的实现方式,因此我希望得到建议。
我想我应该接受 TPath.GetDocumentsPath 提供的任何内容而不尝试修改它?
如果我的应用程序可以检测到两个 \Documents 文件夹,我可以发出警告。
或者我应该在其他地方设置默认商店吗?
我使用本地 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;
变量在表单的受保护位置中 class:
FLocalAppData : String;
FCommonAppData : String;
FAppName : String;
而CompanyName
是一个常数,其值显然是我的公司名称。