win API中是否有一个函数可用于提取HRESULT值的字符串表示形式?
问题是并非所有返回值都记录在MSDN中,例如,ExecuteInDefaultAppDomain()函数未记录为返回"0x80070002 - 系统找不到指定的文件."但是,确实如此!因此,我想知道是否有一个常用的功能.
我正在使用p/invoke搞乱一些windows函数.偶尔,我得到的错误代码不是ERROR_SUCCESS(这么奇怪的名字).
有没有办法在程序中查看这些内容?例如,如果我收到错误1017.我可以告诉用户
系统已尝试将文件加载或还原到注册表中,但指定的文件不是注册表文件格式.(ERROR_NOT_REGISTRY_FILE:0x3F9)
代替
错误代码:1017
我在一些代码中注意到了一段时间的以下语法:
if( NULL == var){
//...
}
Run Code Online (Sandbox Code Playgroud)
要么
if( 0 == var){
//...
}
Run Code Online (Sandbox Code Playgroud)
和类似的事情.
有人可以解释为什么写这个的人选择这种符号而不是常用的var == 0方式)?
这是一种风格问题,还是以某种方式影响性能?
我需要将文件的上次修改时间与存储在数据库中的日期时间进行比较.我最初看了这个问题才开始.
我目前正在获取FILETIME文件的最后一次写入,将其转换为SYSTEMTIME.然后我用它SYSTEMTIME来创建一个TDateTime可以用来比较的对象.但是,FileModifiedDT尽管先前已修改过文件,但变量始终是当前时间.
FILETIME lastWriteTime;
String * FileNamePtr = new String( FileName );
GetFileTime( FileNamePtr, NULL, NULL, &lastWriteTime );
SYSTEMTIME systemTime;
FileTimeToSystemTime( &lastWriteTime, &systemTime );
TDateTime * FileModifiedDT = new TDateTime( systemTime.wYear, systemTime.wMonth,
systemTime.wDay, systemTime.wHour,
systemTime.wMinute, systemTime.wSecond,
systemTime.wMilliseconds );
Run Code Online (Sandbox Code Playgroud)
我GetFileTime在某种程度上错过了吗?我还有更好的方法吗?