| |
|
|
|
Beschreibung:
FormatMessage liefert aus einem Fehlercode (Zahl) eine Beschreibung des Fehlers (String) oder Formatiert eine solche Meldungsdefinition neu.
Deklaration:
DEF @FormatMessage(7) !KERNEL32,FormatMessageA
Parameter:
1.Parameter: Flags für die Art der Erzeugung des Rückgabestrings. Flags können mit | addiert werden. => - $100 (FORMAT_MESSAGE_ALLOCATE_BUFFER) = Der fünfte Parameter gibt die minimale Größe des Buffers für die Stringrückgabe an. Das System berechnet die erforderliche Größe selbst und der Speicher muß später mit LocalFree freigegeben werden. - $200 (FORMAT_MESSAGE_IGNORE_INSERTS).= Platzhalter innerhalb des Rückgabestrings werden unverändert für eine spätere Bearbeitung übergeben. Parameter 7 wird ignoriert. - $400 (FORMAT_MESSAGE_FROM_STRING) = Parameter 2 ist die Adresse einer nullterminierten Meldungsdefinition. Dieser Flag kann nicht mit $800 und $1000 verwendet werden. - $800 (FORMAT_MESSAGE_FROM_HMODULE) = Parameter 2 ist das Handle eines Moduls (DLL). Kann nicht mit $400 kombiniert werden. - $1000 (FORMAT_MESSAGE_FROM_SYSTEM) = Durchsucht die Systemmeldungstabellen nach dem Rückgabestring. Kann nicht mit $400 kombiniert werden. - $2000 (FORMAT_MESSAGE_ARGUMENT_ARRAY) = Parameter 7 ist die Adresse eines Arrays mit Argumenten für die Formatierung. - $FF = Zeilenumbrüche im Rückgabestring werden in der Regel ignoriert. - $1 bis $FE = Maximale Anzahl von Buchstaben bis zum Zeilenumruch. - $0 = Zeilenumbrüche im Rückgabestring werden übernommen. 2.Parameter: Gibt an, wo der Rückgabestring gesucht werden soll. => - Wenn in Parameter 1 $800 angegeben wurde, steht hier das Handle eines Moduls (DLL), das den Rückgabestring liefert. - Wenn in Parameter 1 $400 angegeben wurde, steht hier die Adresse eines unformatierten Rückgabestrings dieser Funktion (Meldungsdefinition). Er kann dann mit dieser Funktion weiter formatiert werden. - In allen anderen Fällen wird dieser Parameter ignoriert. 3.Parameter: LongIntvariable mit dem Identifierer einer Meldung, wie ihn z.B. GetLastError liefert. Wenn in Parameter 1 $400 angegeben wurde, wird dieser Parameter ignoriert. 4.Parameter: Identifier einer Sprache für den Rückgabestring. 0 für aktuelle Sprache. Dieser Parameter wird ignoriert, wenn in Parameter 1 $400 angegeben wurde. 5.Parameter: Wenn in Parameter 1 $2000 angegeben wurde, steht hier eine LongIntvariable oder 4 Byte große Bereichsvariable, die die Adesse des Rückgabestrings aufnimmt. Ansonsten eine ausreichend dimensionierte Bereichsvariable, die den Rückgabestring aufnimmt. 6.Parameter: Wenn in Parameter 1 $2000 angegeben wurde, steht hier die minimale Größe des Bereichs aus Parameter 5 als LongInt. Ansonsten steht hier die Größe von Parameter 5 in Bytes (ANSI) oder Buchstaben (Unicode). 7.Parameter: Parameter für die Formatierung. Wenn Parameter 1 $2000 enthält, steht hier eine Bereichsvariable mit den für eventuell vorhandene Platzhalter einzusetzenden Strings. Ansonsten ist dieser Parameter die Adresse einer va_list Struktur.
Rückgabewert:
0 bei Fehler, ansonsten die Anzahl der Bytes (ANSI) oder Zeichen (Unicode), die Zurückgeliefert wurden.
Beispiele:
KompilierenMarkierenSeparierenDEF @FormatMessage(7) !"KERNEL32","FormatMessageA"
Declare Rückgabe&,GETERROR_Buffer#,GETERROR_Buffer$
DIM GETERROR_Buffer#,32000
Let Rückgabe&=1314 Rückgabe von GetLastError oder direkt von einer API
@FormatMessage($1000,0,Rückgabe&,0,GETERROR_Buffer#,32000,0) Wandelt Fehlercode in Landesspezifische Message um.
Let GETERROR_Buffer$=@STRING$(GETERROR_Buffer#,0)
Dispose GETERROR_Buffer#
@messagebox(GETERROR_Buffer$,"Fehlermeldung",64)
[keywords:189b50e260] Formatierung Message Rückgabe String Meldung GetLastError Fehlercode umwandeln [/keywords:189b50e260] |
|
|
| |
|
|