Jan*_*man 0 c++ winapi systemtime
我想检索文件的最后写日期.我已经为它编写了这段代码,但它总是以"年"这样的值返回52428
int LastErrorCode;
LPCSTR Path = "C:/Users/Username/Desktop/Picture.PNG";
WIN32_FIND_DATA Information;
if(!FindFirstFile(Path, &Information))
{
int LastErrorCode = GetLastError();
cout << "FIND FIRST FILE FAILED" << endl;
cout << LastErrorCode << endl;
}
SYSTEMTIME MyTime;
FILETIME MyFileTime = Information.ftLastWriteTime;
if(!FileTimeToSystemTime(&MyFileTime, &MyTime))
{
LastErrorCode = GetLastError();
cout << "FILE TIME TO SYSTEM TIME FAILED" << endl;
cout << LastErrorCode << endl;
}
cout << MyTime.wYear << endl;
Run Code Online (Sandbox Code Playgroud)
52428的十六进制值是0xCCCC,这似乎表明它尚未初始化.函数调用可能失败了.检查返回代码FindFirstFile和FileTimeToSystemTime(然后GetLastError在找不到错误代码后调用).
编辑 根据对OP的编辑,FindFirstFile调用可能是失败的调用.返回值是句柄(不是零/非零结果).代码应该将结果分配给类型的变量,HANDLE然后进行比较INVALID_HANDLE_VALUE.
另请注意,在成功调用之后FindFirstFile,代码应该FindClose与句柄进行相应的调用以避免资源泄漏.
小智 5
请查看此功能的文档!它告诉你以下内容:
如果函数成功,则返回值为非零值.
如果函数失败,则返回值为零.要获取扩展错误信息,请调用GetLastError.
尝试检查返回值是否为非零,如果不是,请尝试调用getlasterror并在控制台上打印该错误消息并提供此信息.
| 归档时间: |
|
| 查看次数: |
1709 次 |
| 最近记录: |