Delphi Xe。
在delphi中帮助:“...调用此函数通常会重置操作系统错误状态......”
如何在0上重置当前错误?即GetLastError = 0
示例:
Try
// There is an error
except
showmessage(inttostr(getlasterror)); // Ok, getlasterror<>0
end;
....
// no errors
....
// How to reset a current error on 0?
showmessage(inttostr(getlasterror)); // Again will be <> 0
答案 0 :(得分:6)
您应该只在实际出现错误时调用GetLastError
。某些Windows API函数会在成功时将错误重置为0,有些则不会。无论哪种方式,只有在需要知道最新错误时才应询问错误状态。
请注意,还有SetLastError
方法,但这对您没有帮助;如果将最后一个错误设置为0,那么当然GetLastError
将返回0.
答案 1 :(得分:4)
它实际上是一个Win32调用(本身不是Delphi)。
您可以使用“SetLastError()”清除它。
以下是MSDN文档:
http://msdn.microsoft.com/en-us/library/ms679360%28v=vs.85%29.aspx
答案 2 :(得分:0)
这是低质量文档的一个示例。 GetLastError
WinAPI函数将保留其返回值,直到下一次调用SetLastError
为止,因此重复调用将无效。
SetLastError(42);
for I := 1 to 100 do
Assert(GetLastError() = 42); // all of those assertions evaluates to True
另外,在Delphi文档中,GetLastError被错放到异常处理例程中;这也是错误的,这些错误处理机制彼此无关。
在引用中那个愚蠢的“通常”字:发生这种情况是因为用于输出GetLastError返回值的函数调用SetLastError。例如:
SetLastError(42);
OutputDebugString(PChar(Format('GetLastError() = %d', [GetLastError()]))); // 42
OutputDebugString(PChar(Format('GetLastError() = %d', [GetLastError()]))); // 0! (ERROR_SUCCESS set by the previous OutputDebugString call)