在Delphi中,GetLastError
和FormatMessage
是用于获取和格式化错误消息的两个重要函数。以下是它们的正确用法:
GetLastError
函数用于获取当前线程的错误代码。当一个Windows API函数调用失败时,可以使用GetLastError
函数来获取错误代码。错误代码是一个整数值,表示发生的错误类型。
function GetLastError: DWORD; stdcall;
FormatMessage
函数用于将错误代码转换为可读的错误消息。它接受一个错误代码作为输入,并返回一个包含错误消息的字符串。
function FormatMessage(dwFlags: DWORD; lpSource: LPCVOID; dwMessageId: DWORD; dwLanguageId: DWORD; lpBuffer: LPVOID; nSize: DWORD; Arguments: Pointer): DWORD; stdcall;
正确用法示例:
uses
Windows, SysUtils;
function GetLastErrorMessage: string;
var
dwError: DWORD;
sMessage: array[0..255] of Char;
begin
dwError := GetLastError;
if FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM or FORMAT_MESSAGE_IGNORE_INSERTS or FORMAT_MESSAGE_MAX_WIDTH_MASK or FORMAT_MESSAGE_ARGUMENT_ARRAY, nil, dwError, 0, @sMessage, SizeOf(sMessage), nil) <> 0 then
Result := sMessage
else
Result := 'Unknown error';
end;
在这个示例中,GetLastErrorMessage
函数首先调用GetLastError
函数获取错误代码,然后使用FormatMessage
函数将错误代码转换为可读的错误消息。最后,函数返回错误消息字符串。
注意:在使用GetLastError
和FormatMessage
函数时,需要确保在调用它们之前已经调用过Windows API函数,并且该函数的返回值表示失败。如果没有调用Windows API函数或函数调用成功,GetLastError
函数将返回错误代码0,这时不应该调用FormatMessage
函数。
领取专属 10元无门槛券
手把手带您无忧上云