CreateProcessWithLogonW



  • Er kompiliert das mit CStringW auf jeden Fall...



  • wchar_t:
    error C2440: '=' : 'char [12]' kann nicht in 'unsigned short' konvertiert werden

    einem wstring kann ich nix zuweisen
    wstring wtest;
    wtest="notepad.exe";
    ergibt:
    error C2679: Binaerer Operator '=' : Kein Operator definiert, der einen rechtsseitigen Operator vom Typ 'char [12]' akzeptiert (oder keine geeignete Konvertierung moegli

    so funktioniert es:
    wtest=L"notepad.exe";
    aber dieses L kann ich nicht auf eine Variable anwenden

    CStringW gibts bei mir nicht



  • es geht jetzt mit MultiByteToWideChar()


  • Mod

    T2W!

    Wenn Du VC6 hast gibt es kein CStringW.

    Mach aus Deinem Projekt ein Unicode Projekt...



  • Hallo.

    Getestet mit VS 08 Expr. und VS6. TestObject: CreateFile(A/W):

    char str[] = {"\.\something"};

    A: CreateFileA(str, ...); geht.

    W: CreateFileW((LPCWSTR) str, ...); geht auch.

    A und casten: Fehler.
    W und nicht casten: Auch Fehler.

    Casten? Och nö, ich nehm lieber Klaus.

    Gruß

    Lars


  • Mod

    chezzmatazz schrieb:

    Hallo.

    Getestet mit VS 08 Expr. und VS6. TestObject: CreateFile(A/W):

    char str[] = {"\.\something"};

    A: CreateFileA(str, ...); geht.

    W: CreateFileW((LPCWSTR) str, ...); geht auch.

    A und casten: Fehler.
    W und nicht casten: Auch Fehler.

    Ich glaube Du solltest Dir erst einmal klar werden was Unicode ist!

    char str[] = "\\.\something";
    CreateFileA(str, ...); // geht! Ist ja auch ein char*
    CreateFileW((LPCWSTR) str, ...); // unsinnig weil einen char* kann man nicht zu wchar_t* casten
    CreateFileW(CA2W(str), ...); // geht! Weil hier konvertiert wird
    wchar_t wstr[] = L"\\.\something";
    CreateFileW(wstr, ...); // geht auch weil es ein wchar_t* ist
    


  • Martin Richter schrieb:

    char str[] = "\\.\something";
    

    Ich glaube, du solltest dir erst einmal klar werden, was Escapesequenzen sind! 😉 😃



  • Da verhau ich mich immer wieder. Scheiß Unix ...



  • @Martin:

    Warum können das dann VS 08 Expr. und VS6?

    Gruß

    Lars



  • Wer ALLES über UNICODE wissen will:

    http://www.unicode.org/
    

  • Mod

    chaezzmatazz schrieb:

    @Martin:

    Warum können das dann VS 08 Expr. und VS6?

    Was können die?
    Letzten Endes sind VC2008 und VC6 ziemlich gleich. Nur wird bei VC2008 automatisch Unicode in den Projekteinstellungen bei neuen Projekten verwendet.
    In VC6 wurde bei neuen Projekten immer MBCS eingestellt.

    Du solltest Die also ein paar Grundlagen aneignen.



  • Es war völlig egal, welche Einstellungen ich im Projekt (VS 08 Expr.) setzte, solange ich sauber castete.

    Gruß

    Lars


  • Mod

    chezzmatazz schrieb:

    Es war völlig egal, welche Einstellungen ich im Projekt (VS 08 Expr.) setzte, solange ich sauber castete.

    Ein Cast nützt bei Unicode MBCS gar nichts! Du hast evtl. das Problem nicht verstanden...

    BTW: Wenn Du eine Funktion in VC6 mit einem CString hast und dieses Modul Unicode verwendet, und Du hast ein weiteres Modul, dass MBCS verwendet, dann kann dieses MBCS Modul die Unicode CString Funktion nicht nutzen!
    In VC6 gab es noch keine Aufteilung in CStringA und CStringW.


Anmelden zum Antworten