【发布时间】:2014-07-31 23:51:40
【问题描述】:
我尝试包含 IOUtils 库并使用 CSIDL 命令,但它不起作用...
这是执行此操作的代码部分:
//------------------- Includes -----------------------
#include <fmx.h>
#include <IOUtils.hpp>
#pragma hdrstop
#include "Unit1.h"
#include "Unit2.h"
#include "Unit3.h"
//---------------------- end ------------------------
//---- On Form Show (bugged event: It doesn't create the needed folder) ----
void __fastcall TfrmInicio::FormShow(TObject *Sender)
{
if (TDirectory::Exists("CSIDL_APPDATA\\Nintersoft\\Ninterfin")) {
if (FileExists("CSIDL_APPDATA\\Nintersoft\\Ninterfin\\Inf.nf")) {
mmInfo->Lines->LoadFromFile("CSIDL_APPDATA\\Nintersoft\\Ninterfin\\Inf.nf");
}
}
else {
TDirectory::CreateDirectory("CSIDL_APPDATA\\Nintersoft\\Ninterfin");
}
}
//--------------------------------- end ------------------------------------
我希望你能帮助我... 非常感谢XD
【问题讨论】:
-
你遇到什么样的错误?
-
它只是没有创建指定的文件夹...
-
当然不是,因为您没有尝试要求 Windows 将
CSIDL_APPDATA转换为真实路径。 -
哦,我现在很困惑...我之前问过,如何在另一个主题中获取 %APPDATA% 目录,其他用户说我可以使用 CSIDL_APPDATA 或 CSIDL_LOCAL_APPDATA 作为 ROOT路径...
-
其他用户说的是正确的,但您误读了他的答案。他没有告诉你字面上直接将
"CSIDL_..."放在你的路径字符串中。他告诉您将所需的CSIDLID 号传递给SHGetSpecialFolderPath()。阅读我的答案,它向您展示了如何以这种方式使用CSIDL,尽管使用SHGetFolderPath()代替(它取代了SHGetSpecialFolderPath()。
标签: c++ directory firemonkey appdata c++builder-xe6