_fullpath



  • Kürzlich habe ich mit der Funktion _fullpath, Probleme gehabt. Der Compiler wies auf irgendein Problem mit der Konvertierung hin. Dann habe ich den
    Zeichensatz auf Multibyte geändert, dann gings. Sollte man bei Unicode
    vielleicht _wfullpath verwenden. Meine Frage: Habt Ihr dieses Problem,
    auch schon gehabt ? Wenn ja, wisst Ihr Rat ?



  • Hi,

    es gibt Entwickler die verachten Unicode, am Ende stellt sich heraus
    das es nur wenige Positionen im Code gibt die direkt ein Widthchar
    benötigen, an diesen Punkten ist ein Convert von Nöten.
    Eine Multibyte -Kompilierung ist die Mutter der flüssigen Abläufe.

    Alle std Funktionen bieten eine _W Version. Wen Du Unicode Kompilierst,
    dann brauchst Du die nicht explizit angeben, bei Multibyte kannst du
    Örtlich die _W Versionen verwenden.

    Ausnahmen werden Örtlich geregelt.

    Das ist nur ein Mentaler Hinweis 🙂


  • Mod

    Es gibt insgesamt 3 Varianten.

    1. Die pure MBC Zeichensatz Variante.
    2. Die Unicode Variante
    3. Die TCHAR Variante.

    Alle laufen eigentlich immer, egal wie der Compiler eingestellt wird.
    Problematisch ist eben, dass viele Funktionen in der WinAPI die TCHAR Notation verwenden und damit ist man dann auch an die entsprechende Notation gebunden.
    Oder man kann eben das Projekt nicht umschalten von MBCS auf Unicode.

    SetWindowText(hWnd, "abc");
    Geht eben nur in der MBCS Komilpierung.

    Die nachfolgenen Notationen gehen immer.
    SetWindowTextA(hWnd, "abc");
    SetWindowTextW(hWnd, L"abc");
    SetWindowText(hWnd, _T("abc"));

    Auch _tfullpath, _fullpath, _wfullpath gehen immer 😉

    Und einem muss klar sein. Dass CString eben das eine oder andere ist, im Gegensatz eben zu CStringA und CStringW.

    Eigentlich gar nicht schwierig. Man muss nur wissen was man will.

    Ich würde meinem Vorposter widersprechen und sagen. Die TCHAR Notation ist eine gute Grundlage "egal" was man macht.
    Ist aber klar, dass sowieso nur Unicode verwendet wird, kann man sich auch auf den Syntax beschränken.


Anmelden zum Antworten