![]() |
SysErrorMessage _ keine Netzwerkfehler?
Ich habe mir gerade eine eigene SysErrorMessage Funktion geschrieben:
Delphi-Quellcode:
Wie man sieht wird nach dem ersten Aufruf von FormatMessage der Rückgabewert geprüft und wenn der null ist wird in der netmsg.dll nach dem Fehlercode geguckt. In der netmsg.dll sind wohl die Netzwerkfehler hinterlegt. dan hab eichmir alle Fehlercodes mal in eine Textdaie ausgeben lassen:
function SysErrorMessage(ErrorCode: DWORD): string;
function Trim(const S: WideString): WideString; var I, L : Integer; begin L := Length(S); I := 1; while (I <= L) and (S[I] <= ' ') do Inc(I); if I > L then Result := '' else begin while S[L] <= ' ' do Dec(L); Result := Copy(S, I, L - I + 1); end; end; var Len : Integer; Buffer : array[0..255] of Char; hDll : THandle; resourcestring rsErrMsg = 'Fehlercode nicht gefunden'; begin result := ''; Len := FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM, nil, ErrorCode, 0, Buffer, SizeOf(Buffer), nil); if Len = 0 then begin hDll := LoadLibraryEx('netmsg.dll', 0, DONT_RESOLVE_DLL_REFERENCES); if hDll <> 0 then begin Len := FormatMessage(FORMAT_MESSAGE_FROM_HMODULE or FORMAT_MESSAGE_FROM_SYSTEM, @hDll, ErrorCode, 0, Buffer, sizeof(Buffer), nil); FreeLibrary(hDll); if Len <> 0 then result := Trim(string(Buffer) + ' (Netzwerk)') else result := rsErrMsg; end; end else result := Trim(string(Buffer)); end;
Delphi-Quellcode:
Aber dort taucht nie ein Netzwerkfehler auf. Jetzt frage ich mich, welche Fehlercodes haben Netzwerkfehler? Ich will die Funktion einfach mal durchtesten.
procedure TForm1.Button1Click(Sender: TObject);
var i : Integer; sl : TStringList; begin sl := TStringList.Create; for i := 0 to 15999 do begin sl.Add(IntToStr(i) + ': ' + SysErrorMessage(i)); end; sl.SaveToFile('d:\erros.txt'); FreeAndNil(sl); end; |
Re: SysErrorMessage _ keine Netzwerkfehler?
Zitat:
Zitat:
|
Re: SysErrorMessage _ keine Netzwerkfehler?
OK wird gemacht. Aber auch ab 2100 läd er keine Fehlermeldung aus der netmsg.dll. :gruebel:
Sieht jetzt so aus:
Delphi-Quellcode:
Sind noch Vorschläge von Shmia(???) mit eingeflossen.
function SysErrorMessage(ErrorCode: DWORD): string;
var Len : Integer; Buffer : array[0..2048] of Char; hDll : THandle; resourcestring rsErrMsg = 'Fehlercode nicht gefunden'; begin SetLength(Result, 2048-16); Len := FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM, nil, ErrorCode, 0, Buffer, SizeOf(Buffer), nil); if Len = 0 then begin hDll := LoadLibraryEx('netmsg.dll', 0, DONT_RESOLVE_DLL_REFERENCES); if hDll <> 0 then begin Len := FormatMessage(FORMAT_MESSAGE_FROM_HMODULE or FORMAT_MESSAGE_FROM_SYSTEM, Pointer(hDll), ErrorCode, 0, Buffer, sizeof(Buffer), nil); FreeLibrary(hDll); if Len <> 0 then begin while (Len > 0) and (Buffer[Len - 1] in [#0..#32, '.']) do Dec(Len); SetString(Result, Buffer, Len); end else result := rsErrMsg; end; end else begin while (Len > 0) and (Buffer[Len - 1] in [#0..#32, '.']) do Dec(Len); SetString(Result, Buffer, Len); end; end; |
Re: SysErrorMessage _ keine Netzwerkfehler?
Zitat:
|
Re: SysErrorMessage _ keine Netzwerkfehler?
:arrow:
![]() |
Re: SysErrorMessage _ keine Netzwerkfehler?
Ja, die kenne ich. Aber die Texte dazu scheinen auch alle in der kernel32.dll zu liegen.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:38 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz