declare Integer FormatMessage in win32api ; Integer dwFlags, ; string @lpSource, ; Integer dwMessageId, ; Integer dwLanguageId, ; string @lpBuffer, ; Integer nSize, ; Integer
local n, s n = GetLastError() = Format(@m.s, m.n) ? m.s
function Format(s, lastError) local n, buf buf = space(1024) #define FORMAT_MESSAGE_ALLOCATE_BUFFER 0x00000100 #define FORMAT_MESSAGE_IGNORE_INSERTS 0x00000200 #define FORMAT_MESSAGE_FROM_STRING 0x00000400 #define FORMAT_MESSAGE_FROM_HMODULE 0x00000800 #define FORMAT_MESSAGE_FROM_SYSTEM 0x00001000 #define FORMAT_MESSAGE_ARGUMENT_ARRAY 0x00002000 #define FORMAT_MESSAGE_MAX_WIDTH_MASK 0x000000FF n = FormatMessage( FORMAT_MESSAGE_FROM_SYSTEM, ; 0, ; m.lastError, ; 0, ; @m.buf, ; len(m.buf), ; 0 ; ) s = 'Error ' + transf(m.lastError) do case case !empty(m.n) s = m.s + ' : ' + left(m.buf, m.n) endcase #undefine FORMAT_MESSAGE_ALLOCATE_BUFFER #undefine FORMAT_MESSAGE_IGNORE_INSERTS #undefine FORMAT_MESSAGE_FROM_STRING #undefine FORMAT_MESSAGE_FROM_HMODULE #undefine FORMAT_MESSAGE_FROM_SYSTEM #undefine FORMAT_MESSAGE_ARGUMENT_ARRAY #undefine FORMAT_MESSAGE_MAX_WIDTH_MASK endfunc *_______________________________________________________________________________