vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
vb@rchiv Offline-Reader - exklusiv auf der vb@rchiv CD Vol.4  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück
Rubrik: Windows/System09.05.01
GetLastError-Funktion

GetLastError gibt den letzten Fehler eines Api-Aufrufes einer DLL- oder ActiveX-EXE zurück.

Betriebssystem:  Win95, Win98, WinNT, Win2000, WinMEViews:  25.808 

Beschreibung:
GetLastError gibt den letzten Fehler eines Api-Aufrufes einer DLL- oder ActiveX-EXE zurück. Dieser kann dann durch eine der Fehler-Konstanten ausgewertet werden oder mit der FormatMessage-Funktion angezeigt werden.

Deklaration:

Declare Function GetLastError Lib "kernel32.dll" () As Long

Parameter:
keine

Rückgabewert:
Ist die Funktion erfolgreich, so ist der Rückgabewert ein Fehlercode der einer Fehler-Konstanten entspricht. Wenn eine Api-Funktion erfolgreich ist, setzt sie meist über die SetLastError-Funktion den Fehler "0". Wird die Funktion GetLastError aufgerufen, so wird bei einem erfolgreichem Aufruf der letzte Fehlercode wieder auf "0" zurückgesetzt. Es ist also ratsam sofort auf die Fehler zu reagieren, weil bei einem zweitem Aufruf der vorherige Fehlercode mit einer "0" überschrieben wird.

Beispiel:

Private Declare Sub SetLastError Lib "kernel32" (ByVal dwErrCode As Long) 
Private Declare Function GetLastError Lib "kernel32" () As Long 
Private Declare Function FormatMessage Lib "kernel32" _
  Alias "FormatMessageA" ( _
  ByVal dwFlags As Long, _
  lpSource As Any, _
  ByVal dwMessageId As Long, _
  ByVal dwLanguageId As Long, _
  ByVal lpBuffer As String, _
  ByVal nSize As Long, _
  Arguments As Long) As Long 
 
' FormatMessage Konstanten
Private Const FORMAT_MESSAGE_ALLOCATE_BUFFER = &H100
Private Const FORMAT_MESSAGE_IGNORE_INSERTS = &H200
Private Const FORMAT_MESSAGE_FROM_STRING = &H400
Private Const FORMAT_MESSAGE_FROM_SYSTEM = &H1000
Private Const FORMAT_MESSAGE_FROM_HMODULE = &H800
Private Const FORMAT_MESSAGE_ARGUMENT_ARRAY = &H2000
Private Const FORMAT_MESSAGE_MAX_WIDTH_MASK = &HFF
 
' Einige FormatMessage Sprachkonstanten
Private Const LANG_NEUTRAL = &H0
Private Const LANG_GERMAN = &H7
Private Const LANG_FRENCH = &HC
Private Const LANG_ENGLISH = &H9
 
' Einige FormatMessage Sub-Sprachkonstanten
Private Const SUBLANG_DEFAULT = &H1
Private Const SUBLANG_FRENCH = &H1
Private Const SUBLANG_ENGLISH_US = &H1
Private Const SUBLANG_GERMAN = &H1
 
' Einige der Get-/Set- LastError-Konstanten
Private Const ERROR_BAD_PATHNAME = 161 ' Der Pfad existiert nicht
Private Const ERROR_ACCESS_DENIED = 5& ' Zugriff verweigert
Private Sub Command1_Click() 
  Dim Flags As Long, Puffer As String 
  Dim Retval As Long, Sprache As Long 
  Dim Fehler As Long 
 
  ' Fehler erzeugen
  SetLastError ERROR_BAD_PATHNAME 
 
  ' Beispiel 1: den Fehler über Konstanten abfragen
  If GetLastError = ERROR_BAD_PATHNAME Then 
    Debug.Print "Der angegebene Pfad existiert nicht" 
  End If 
 
  ' Beispiel 2: den Fehlertext mit FormatMessage
  ' in der Standardsprache ausgeben
  Flags = FORMAT_MESSAGE_FROM_SYSTEM Or FORMAT_MESSAGE_IGNORE_INSERTS 
  Sprache = LANG_NEUTRAL Or (SUBLANG_DEFAULT * 1024) 
  Puffer = Space(256) ' Puffergröße festlegen
  Fehler = ERROR_ACCESS_DENIED ' Von dem Fehler wollen wir den passenden Fehlertext
 
  Retval = FormatMessage(Flags, 0&, Fehler, Sprache, Puffer, Len(Puffer), 0&) 
 
  ' Ist FormatMessage erfolgreich?
  ' Wenn ja dann Fehlertext ausgeben
  If Retval = 0 Then 
    MsgBox "Ein Fehler ist bei dem ermitteln des Fehlertextes aufgetreten.", vbCritical, "Fehler" 
  Else 
    Debug.Print Left$(Puffer, Retval) & vbCrLf 
  End If
End Sub

Diese Seite wurde bereits 25.808 mal aufgerufen.

nach obenzurück
 
   

Druckansicht Druckansicht Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel