Text chyby u API funkcí

Klíčová slova: GetErrorMessage, FormatMessage, GetLastError, MAKELANGID, API
Rubrika: Delphi

Potřebujete používat API funkce a nevíte jak získat případné chybové hlášení. K tomu vám poslouží následující procedura GetErrorMessage . U API funkcí se používá pro zjištění případné chyby funkce GetLastError. Ta však vrací pouze DWORD hodnotu, která je téměř nic neříkající. Pokud chcete zjistit srozumitelnější informace (text chyby), je nutné dále použít funkci FormatMessage . Nová procedura GetErrorMessage má tedy jako první parametr hodnotu DWORD z funkce GetLastError a druhý parametr je řetězec pro výsledné hlášení. Pro nastavení správného jazyku hlášení ve funkci budete potřebovat ještě makro MAKELANGID, jehož definici naleznete v jiném příkladu.

 

// --- GetErrorMessage ---
Procedure GetErrorMessage(ErrNo : Cardinal;var ErrMsg : String);
var
lpMsgBuf : pChar;
begin
FormatMessage( FORMAT_MESSAGE_ALLOCATE_BUFFER or FORMAT_MESSAGE_FROM_SYSTEM or FORMAT_MESSAGE_IGNORE_INSERTS,
Nil,
ErrNo,
MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
@lpMsgBuf,
0,
Nil );
if lpMsgBuf <> Nil then
begin
SetLength(ErrMsg,StrLen(lpMsgBuf)+1);
ErrMsg := String(lpMsgBuf);
LocalFree(Integer(lpMsgBuf));
end;
end;

 
Použití této funkce tedy může být např. následující:
 

procedure TForm1.ShowErrorMessage;
var
sError : string;
begin
GetErrorMessage(GetLastError,sError);
ShowMessage (sError);
end;

 
Zdroj: community.borland.com .
 
Autor: Jiří Provazník
Datum vydání: 08.09.2006 | Zobrazeno: 2513
Permanentní odkaz: Text chyby u API funkcí

Komentáře (0)
Přidej vlastní komentář:
Následující (běžně neviditelná) pole slouží pro vnitřní identifikaci systému. Pokud je vyplníte nebude možné váš požadavek na straně serveru zpracovat:
URL:
contents:
Website:
Pro odeslání vašeho komentáře použijte tlačítko "Odeslat". Toto tlačítko nepoužívejte:

Následující položky je vhodné vyplnit:
Jméno :
Email :
Web :
Místo :
Hodnocení:
Hodnocení jako pomocí hvězdiček
1/5= nejhorší, 5/5=nejlepší