WindowsCE: ASCII dynamisch nach Unicode konvertieren



  • Hi,

    ich habe hier eine Windows-DLL, die ich für WindowsCE portieren will. Dort wird z.B. die Funktion CreateFile() benutzt, die als ersten Parameter einen dynamischen Textstring erhält. Unter WindowsCE muss das nun plötzlich ein Unicode-String sein, weswegen ich eine Konvertierung benötige, die mir aus meinem ASCII-Text einen Unicode-String macht.

    Nur: wie geht das genau? _T() funktioniert logischerweise nicht, da es um einen Wert in einer Variablen geht.



  • Hallo,
    Du müsstest jedes einzelne Zeichen aus dem char-array auslesen und ein wchar_t-Array mit diesen Werten füllen. Hier eine Funktion, die ein char-String in eine Unicode-String umwandelt:

    bool ToUnicode(char* str,wchar_t* pOut)
    {
    if(!str||!pOut)return false;
    int Length = strlen(str);
    
    for(int loop=0;loop<Length;loop++)
    	pOut[loop] = (wchar_t)str[loop];
    
    pOut[Length]=0;
    return true;
    }
    

    Der Aufruf könnte so aussehen:

    char* str = "Dies ist ein Text";
    wchar_t wstr[20]; // Hier muss beachtet werden, dass auch das Nullterminierungszeichen in den String geschrieben wird.
    ToUnicode(str,wstr);
    

    Ich hoffe, ich konnte dir helfen
    MfG, Jochen



  • Thx 🙂



  • TomoT schrieb:

    _T() funktioniert logischerweise nicht, da es um einen Wert in einer Variablen geht.

    Warum nimmst du nicht gleich ne wchar_t/TCHAR Variable?

    X nach Unicode:
    http://msdn.microsoft.com/en-us/library/ms961248(v=MSDN.10).aspx



  • geeky schrieb:

    Warum nimmst du nicht gleich ne wchar_t/TCHAR Variable?

    Wer lesen kann ist klar im Vorteil: Die Daten liegen als ASCII vor. Und wenn ich deinem schlauen Rat folge, beißt sich die Katze in den Schwanz, wenn ich diese ASCII-Daten in dein wchar_t-Array bringen will.



  • Und genau dafür ist diese Funktion gedacht:
    http://msdn.microsoft.com/en-us/library/ms961248(v=MSDN.10).aspx


Log in to reply