FormatMessage



  • Gast++ schrieb:

    /*
     * Localss.cpp 
     * 
     * Gibt Fehlermeldung 6 "Das Handle ist ungültig" des Win32 API mit Deutschem Umlaut auf der 
     * XP-Konsole aus mit _MBCS oder _UNICODE
     *
     * Zum Weiterschreiben und Testen von ::FormatMessage(...), _MBCS, _UNICODE, Konsolenausgaben 
     * und Codepages
     */
    

    [...]

    ROFL! Der Code ist ja mal lollig 😃 .
    Sagmal kennst Du std::wcout ?! 😃



  • Meep Meep schrieb:

    re

    ich verwende FormatMessageA und will die message in einer Konsole anzeigen lassen.

    mit MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US) bekomme ich keinen string zurueck.

    Meep Meep

    Joar, wie gesagt, die Sprachen gibts dann warscheinlich nicht auf Deinem System, dann kannst Du sie auch nicht ausgeben.



  • farge schrieb:

    wo kann ich mir die englischen resourcen runter hollen?

    Keine Ahnung. Ich spekuliere einfach mal, dass du dafür eine englische kernel32.dll bräuchtest.



  • CodeFinder schrieb:

    ROFL! Der Code ist ja mal lollig 😃 .
    Sagmal kennst Du std::wcout ?! 😃

    Ja, nur leider macht genau das die Proleme, die im Anfang des Threads auch für die MBCS Version beschrieben sind. :

    Vielleicht liest Du dort erstmal nach; das klärt vieles... 😃

    std::cout << und std::wcout << verhalten sich genau so fehlerhaft wie printf und _wprintf.

    Nur sollte ich wchar_t nicht einfach zu char und weiter zu OEM konvertieren.

    => Wenn sich das alles bei Dir anders verhält <=

    poste bittte mal ein paar Versionensnummer zu

    LIBC.LIB
    Single thread static library, retail version

    LIBCMT.LIB
    Multithread static library, retail version

    MSVCRT.LIB
    Import library for MSVCRT.DLL, retail version

    der kernel32.lib un der user32.lib.
    Und zur Platform, natürlich.

    Grüsse

    Gast++





  • CodeFinder schrieb:

    Tzzz... ➡ http://www.c-plusplus.net/forum/viewtopic-var-t-is-39326.html

    Tzzz...

    Lass mich raten - Dein std::wcout funktioniert nicht.

    Nettes Beispiel, aber wie machst Du das mit Fehlermeldungen die aus Bibliotheken kommen? (Wie es in diesem Thread das Thema ist.)

    Die Strings mit Escape-Sequenzen umcodieren?
    Das erscheint inperformant; das Re-Mapping, das ::WriteConsole(..) lediglich braucht ist nie länger als ein modifizierender Algorithmus.
    (Bitte dran denken, der String von FormatMessage() müsste _zur_ _Laufzeit_ transformiert werden; nicht wie im Beipiel beim Kompilieren)

    Grüsse

    Gast++



  • Tzzz....
    Lass mich raten - Du wirst ewig auf eine Antwort warten.



  • merker schrieb:

    Tzzz....
    Lass mich raten - Du wirst ewig auf eine Antwort warten.

    Ja, aber ich geh ab und zu schwimmen während ich warte. 😃

    Grüsse

    *this



  • Hoi, ne ich antworte schon noch, bin nur beim dem Wetter nicht soooo oft im Forum - verständlich oder ? 😉

    Also, kurz und gut: Du hast Recht 👍 !
    Hab das auch nochmal mit SetConsoleCP bzw SetConsoleOuputCP probiert, aber es geht wirklich nicht 🙄 .

    Gast++ schrieb:

    Nettes Beispiel, aber wie machst Du das mit Fehlermeldungen die aus Bibliotheken kommen? (Wie es in diesem Thread das Thema ist.)

    Die Strings mit Escape-Sequenzen umcodieren?
    Das erscheint inperformant;

    Jopp, das ist wirklich inperformant 😉 .

    merker schrieb:

    Tzzz....
    Lass mich raten - Du wirst ewig auf eine Antwort warten.

    Tja, falsch :p .



  • Hab dazu mal einen kleine Fix versucht und einen Thread gestartet

    http://www.c-plusplus.net/forum/viewtopic-var-t-is-180282.html

    @CodeFinder

    CodeFinder schrieb:

    Hoi, ne ich antworte schon noch, bin nur beim dem Wetter nicht soooo oft im Forum - verständlich oder ? 😉

    Schon. Das halte ich ähnlich. 😃

    Magst Du mal über den o.g. Code schauen, so richtig gefällt mir's nicht STL operatoren global zu überdecken...

    @all
    Grüsse && schönen ersten Mai !

    *this



  • Gast++ schrieb:

    Magst Du mal über den o.g. Code schauen, so richtig gefällt mir's nicht STL operatoren global zu überdecken...

    Hm joar, ist n bissl 'krass' ^^... ich würd dafür warscheinlich ne Adapterklasse schreiben.


Anmelden zum Antworten