Edit Control ASCII-Zeichen



  • test_ascii hat den Typ unsigned char.

    unsigned char test_ascii[10];
    

    m_ASCII2 ist CString und ist die Variable für ein Edit Control zur Anzeige.

    DDX_Text(pDX, IDC_ASCII2, m_ASCII2);
    

    Gruß
    schmitti81



  • und warum nimmst du wenn nicht schon die Formatierung von CString?

    m_ASCII2.Format("%c", 137);
    


  • CTecS schrieb:

    und warum nimmst du wenn nicht schon die Formatierung von CString?

    m_ASCII2.Format("%c", 137);
    

    oder: http://www.cplusplus.com/reference/clibrary/cstdlib/itoa.html



  • tha_specializt schrieb:

    CTecS schrieb:

    und warum nimmst du wenn nicht schon die Formatierung von CString?

    m_ASCII2.Format("%c", 137);
    

    oder: http://www.cplusplus.com/reference/clibrary/cstdlib/itoa.html

    Nein! Er will nicht die Zahl 137 in einen String umwandeln. Lies mal genauer. Er will einen char (hier ASCII 137) in einen String packen. da hilft itoa nicht.



  • natürlich hilft das, und zwar so:

    m_ASCII2.Format("%c", itoa(137, NULL, 10) );

    Sofern das überhaupt kompiliert und nicht NULL durch einen gültigen Pointer ersetzt werden müsste geht das wunderbar. Allerdings wäre es doppelt gemoppelt weil .Format das ja bereits macht 😃



  • tha_specializt schrieb:

    natürlich hilft das, und zwar so:

    m_ASCII2.Format("%c", itoa(137, NULL, 10) );

    Sofern das überhaupt kompiliert und nicht NULL durch einen gültigen Pointer ersetzt werden müsste geht das wunderbar. Allerdings wäre es doppelt gemoppelt weil .Format das ja bereits macht 😃

    Erstens geht das schief, weil die NULL-Zeiger-Sache so Quatsch ist. itoa gibt denselben Zeiger zurück, den du zuvor übergibst. NULL ist also denkbar ungünstig.

    Und zweitens: du weißt schon, dass du hier einen String (char*) mit "137" füllst, ne? itoa==Integer-to-Array, im Format-String verlangst du aber ein char ("%c"), und das soll eigentlich den Wert 137 ('%') haben. In "137" gibt es kein char mit dem Wert 137... 🙄



  • CTecS schrieb:

    und warum nimmst du wenn nicht schon die Formatierung von CString?

    m_ASCII2.Format("%c", 137);
    

    Ich hab es damit probiert und es funktioniert auch nicht.
    Allerdings sehe ich da beim Debuggen gleich ein "‰".
    Kann das auch an allgemeinen Einstellungen im Visual Studio 2008 liegen?

    Danke, gruß
    schmitti81



  • mal wieder so eine idee (wobei meine einwürfe ja hier äußerst Diskutiert werden), kann denn der eingesetzte Font auch das zeichen darstellen, also is das zeichen im Font enthalten?


  • Mod

    Dieses rumgestochere im Nebel kann man ja nicht mit ansehen.
    1. Dieses besagte Zeichen 137 existiert in dem MBCS Zeichensatz den Windows intern verwendet.
    2. In Unicode sieht das ganze aber ganz anders aus. Schau Dir bitte die Unicode Zeichentabellen an. Ein einfaches konvertieten von '\x89' nach L'\x89' kann es nicht sein.
    4. Meine Recherche ergab: Es müsste den Wert 2030 haben.

    wchar_t wchar = L'\x2030';
    

    5. Hast Du versucht den MBCS String zu konvertieren?
    Was passiert wenn Du L"‰" benutzt, oder _T('‰')?



  • Ich hatte erst jetzt wieder Zeit das auszuprobieren.
    Es funktioniert. Ich habe die Schriftart geändert.
    Die Standardschriftart in Visual Studio kann nicht alle Zeichen anzeigen.

    Vielen Dank für Eure Hilfe.

    Mfg
    schmitti81


Anmelden zum Antworten