Einzelnen Beitrag anzeigen

Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#1

SysErrorMessage _ keine Netzwerkfehler?

  Alt 29. Nov 2005, 23:38
Ich habe mir gerade eine eigene SysErrorMessage Funktion geschrieben:
Delphi-Quellcode:
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;
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:
Delphi-Quellcode:
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;
Aber dort taucht nie ein Netzwerkfehler auf. Jetzt frage ich mich, welche Fehlercodes haben Netzwerkfehler? Ich will die Funktion einfach mal durchtesten.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat