SelectDirectory() Probleme mit AnsiString-Parameter



  • Ich möchte die Methode SelectDirectory verwenden. Mein Pfad steht in der AnsiString-Variablen meinPfad.

    Die SelectDirecory erwartet als ersten Parameter ein UnicodeString.
    Ich habe schon ein Cast probiert mit:

    SelectDirectory(UnicodeString (meinPfad), TSelectDirOpts() << sdAllowCreate << sdPerformCreate << sdPrompt, 1000);
    

    Wie kann ich das Problem lösen? (Ich arbeite mit dem XE6)

    Funktionieren würde ja auch folgendes:

    String dir = meinPfad;
    	SelectDirectory(dir, TSelectDirOpts() << sdAllowCreate << sdPerformCreate << sdPrompt, 1000);
    	meinPfad = dir;
    

    Ist aber nicht besonders elegant.



  • rudpower schrieb:

    Ich möchte die Methode SelectDirectory verwenden.

    Bitte nicht. Dieser Verzeichnisauswahldialog ist der benutzerunfreundlichste Dialog in ganz Windows. (Nur der Umgebungsvariablendialog ist ähnlich schlimm, aber den brauche ich nicht so oft.)

    Mache es doch so:

    std::unique_ptr<TFileOpenDialog> dlg(new TFileOpenDialog(0));
        dlg->Options = TFileDialogOptions() << fdoPickFolders << fdoPathMustExist;
        dlg->DefaultFolder = meinPfad;
        if (!dlg->Execute(Handle))
            return;
        meinPfad = dlg->FileName;
    

Log in to reply