_wsetlocale call



  • Hallo zusammen

    Kann man _wsetlocale() nicht 2 mal in einem Programm verwenden!

    Das erste set geht doch der 2 nimmt ern nicht mehr an.

    Also am anfang möchte ich auf german umstellen, dass funktioniert. Doch wenn ich für eine status anzeige den zeichensatz wieder umstelle zbsp. auf english dan funktioniert es nicht! Oder ich verwende einen falschen Länder String. Wie ist den der standard consolen String?



  • Könnten wir erfahren, wie dein "dan funktioniert es nicht!" sich äußert?

    Ist dein Compiler vielleicht gar nicht auf Unicode eingestellt? Vielleicht verwendest du falsche Parameter? Vielleicht können die Sprachumgebungseinstellungen aus irgendeinem Grund, der uns die Fehlermeldung verraten würde, nicht geändert werden... Vielleicht... Vielleicht... Vielleicht...

    P.S.
    "Wie ist den der standard consolen String?"
    -> Du bist hier im WinAPI-Forum...


  • Mod

    @[rewind] selbst wenn der das Projekt nicht auf Unicode eingestelt hat, kann er jederzeit _wsetlocale verwenden.



  • @Martin: Tatsächlich? Sowohl Multibyte- als auch "Not set"-Zeichensatzeinstellungen führen bei

    _wsetlocale(LC_ALL, "English");
    

    zu folgendem Fehler:
    error C2664: '_wsetlocale' : cannot convert parameter 2 from 'const char [8]' to 'const wchar_t *'

    Mit Unicode gab es dagegen keine Probleme.



  • [Rewind] schrieb:

    @Martin: Tatsächlich? Sowohl Multibyte- als auch "Not set"-Zeichensatzeinstellungen führen bei

    _wsetlocale(LC_ALL, "English");
    

    zu folgendem Fehler:
    error C2664: '_wsetlocale' : cannot convert parameter 2 from 'const char [8]' to 'const wchar_t *'

    Mit Unicode gab es dagegen keine Probleme.

    Man sollte natürlich noch das W anhängen. _wsetlocaleW();



  • Sollte man machen, der Autor hat aber _wsetlocale() angegeben. Deswegen habe ich auch diesen Kompilierungsfehler als mögliche Ursache miterwähnt (wir wissen ja nicht, wie er die Funktion implementiert hat).


  • Mod

    [Rewind] schrieb:

    @Martin: Tatsächlich? Sowohl Multibyte- als auch "Not set"-Zeichensatzeinstellungen führen bei

    _wsetlocale(LC_ALL, "English");
    

    zu folgendem Fehler:
    error C2664: '_wsetlocale' : cannot convert parameter 2 from 'const char [8]' to 'const wchar_t *'

    Mit Unicode gab es dagegen keine Probleme.

    _wsetlocale(LC_ALL, L"English");
    

    geht immer! Man muss es nur richtig machen. Das Argument muss nachtürlich auch wchar_t sein!


Anmelden zum Antworten