Winapi 我的VC&x2B+;代码无法创建目录
我正在使用Windows8.1。我在代码中调用了API CreateDirectory。但它失败了。我还使用GetLastError获取了最后一个错误代码。 我的密码在这里。我得到错误代码3。请帮我找出我的错误所在。对不起,如果有任何一点是不完整的/Winapi 我的VC&x2B+;代码无法创建目录,winapi,Winapi,我正在使用Windows8.1。我在代码中调用了API CreateDirectory。但它失败了。我还使用GetLastError获取了最后一个错误代码。 我的密码在这里。我得到错误代码3。请帮我找出我的错误所在。对不起,如果有任何一点是不完整的/ SYSTEMTIME sysTime; GetLocalTime(&sysTime); CString sFullPath; sFullPath.Format("%s\\%d", sRecPath, sysTime.wYear);
SYSTEMTIME sysTime;
GetLocalTime(&sysTime);
CString sFullPath;
sFullPath.Format("%s\\%d", sRecPath, sysTime.wYear);
BOOL bRes = CreateDirectory(sFullPath, NULL);
int nErrorCode = GetLastError();
首先,您正在错误地检查错误。如中所述,故障由返回值指示。只有当
bRes
为false时,GetLastError
返回的值才有意义。所以你应该写:
if CreateDirectory(...)
DWORD err = GetLastError();
还要注意,GetLastError
返回一个无符号的DWORD
,而不是int
假设CreateDirectory
确实失败并且3
的错误代码准确,则错误代码为error\u PATH\u NOT\u FOUND
,如下所述:
CreateDirectory("C:\\ParentDir1\\ParentDir2\\MyNewDir", NULL)
系统找不到指定的路径
这很可能意味着sFullPath
中指定的路径的某些部分不存在。请注意,CreateDirectory
不会为您创建目录树。它只会在现有目录中创建一个新的目录对象
例如,假设您正在尝试创建如下目录:
CreateDirectory("C:\\ParentDir1\\ParentDir2\\MyNewDir", NULL)
现在,如果C:\ParentDir1\ParentDir2
已经存在,那么CreateDirectory
将成功。但是,如果C:\ParentDir1\ParentDir2
不存在,则CreateDirectory
将失败,GetLastError
将返回ERROR\u PATH\u not\u FOUND
这甚至在中被显式调用,表示函数将失败,错误代码将为error\u PATH\u NOT\u FOUND
,如果:
一个或多个中间目录不存在;此函数仅在路径中创建最终目录
您可以通过检查sFullPath
的值来取得进展
我很想知道你对这个函数的文档阅读得有多仔细。我的免费建议是确保您仔细阅读文档。如果这有助于你理解,请读两遍。首先,你检查错误的地方。如中所述,故障由返回值指示。只有当
bRes
为false时,GetLastError
返回的值才有意义。所以你应该写:
if CreateDirectory(...)
DWORD err = GetLastError();
还要注意,GetLastError
返回一个无符号的DWORD
,而不是int
假设CreateDirectory
确实失败并且3
的错误代码准确,则错误代码为error\u PATH\u NOT\u FOUND
,如下所述:
CreateDirectory("C:\\ParentDir1\\ParentDir2\\MyNewDir", NULL)
系统找不到指定的路径
这很可能意味着sFullPath
中指定的路径的某些部分不存在。请注意,CreateDirectory
不会为您创建目录树。它只会在现有目录中创建一个新的目录对象
例如,假设您正在尝试创建如下目录:
CreateDirectory("C:\\ParentDir1\\ParentDir2\\MyNewDir", NULL)
现在,如果C:\ParentDir1\ParentDir2
已经存在,那么CreateDirectory
将成功。但是,如果C:\ParentDir1\ParentDir2
不存在,则CreateDirectory
将失败,GetLastError
将返回ERROR\u PATH\u not\u FOUND
这甚至在中被显式调用,表示函数将失败,错误代码将为error\u PATH\u NOT\u FOUND
,如果:
一个或多个中间目录不存在;此函数仅在路径中创建最终目录
您可以通过检查sFullPath
的值来取得进展
我很想知道你对这个函数的文档阅读得有多仔细。我的免费建议是确保您仔细阅读文档。如果这有助于你理解,请读两遍。首先,你检查错误的地方。如中所述,故障由返回值指示。只有当
bRes
为false时,GetLastError
返回的值才有意义。所以你应该写:
if CreateDirectory(...)
DWORD err = GetLastError();
还要注意,GetLastError
返回一个无符号的DWORD
,而不是int
假设CreateDirectory
确实失败并且3
的错误代码准确,则错误代码为error\u PATH\u NOT\u FOUND
,如下所述:
CreateDirectory("C:\\ParentDir1\\ParentDir2\\MyNewDir", NULL)
系统找不到指定的路径
这很可能意味着sFullPath
中指定的路径的某些部分不存在。请注意,CreateDirectory
不会为您创建目录树。它只会在现有目录中创建一个新的目录对象
例如,假设您正在尝试创建如下目录:
CreateDirectory("C:\\ParentDir1\\ParentDir2\\MyNewDir", NULL)
现在,如果C:\ParentDir1\ParentDir2
已经存在,那么CreateDirectory
将成功。但是,如果C:\ParentDir1\ParentDir2
不存在,则CreateDirectory
将失败,GetLastError
将返回ERROR\u PATH\u not\u FOUND
这甚至在中被显式调用,表示函数将失败,错误代码将为error\u PATH\u NOT\u FOUND
,如果:
一个或多个中间目录不存在;此函数仅在路径中创建最终目录
您可以通过检查sFullPath
的值来取得进展
我很想知道你对这个函数的文档阅读得有多仔细。我的免费建议是确保您仔细阅读文档。如果这有助于你理解,请读两遍。首先,你检查错误的地方。如中所述,故障由返回值指示。只有当
bRes
为false时,