Ah, ja die Version von ste_ett funktioniert und ich habe sie verstanden. Aber wäre es nicht sinnvoll die benötigte Länge des Buffers zurückzugeben, so dass man im Bedarfsfall entsprechend mehr Speicher reservieren kann? aslo:
Code:
len = SysErrorMessage(5, NULL, 0);
GetMem(szBuff, len)
SysErrorMessage(5,szBuf, len);
FreeMem(szBuf);
Das ist jetzt Delphi Pseudocode.
Und wie kann ich den Code in eine eigene Quellcodedatei auslagern? Ich habe ihn in eine eigene Datei kopiert
MpuTools.cpp und eine entsprechende headerdatei angelegt:
MpuTools.h, die ich dann mit
include eingebunden habe:
Code:
#include <stdio.h>
#include <windows.h>
#include "MpuTools.h"
int main(int argc, char* argv[])
{
TCHAR szBuf[80];
ZeroMemory(szBuf, sizeof(szBuf));
if (SysErrorMessage(5, szBuf, sizeof(szBuf)) >0)
{
wprintf(L"%s", szBuf);
MessageBoxW(0, szBuf, L"Test", 0);
}
return 0;
}
Das mag der Compiler jedoch nicht:
Zitat:
Fehler 1 error C2144: Syntaxfehler: 'int' sollte auf ';' folgen c:\dokumente und einstellungen\mp\eigene dateien\visual studio 2005\projects\mputools\mputools_test\mputools_test .cpp 5
OK, in der Header-Datei hat ein Semikolon gefehlt. Jetzt bekomme ich aber die fehlermeldung:
Zitat:
Fehler 1 error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""unsigned long __cdecl SysErrorMessage(int,wchar_t *,unsigned long)" (?SysErrorMessage@@YAKHPA_WK@Z)" in Funktion "_main". MpuTools_Test.obj