Frage zu SelectDirectory



  • Chakuza schrieb:

    Meine suche in ter Borland Hilfe hat mir nicht weiter geholfen.

    Bei der Suche kann ich dir helfen:
    SelectDirectory.



  • Sorry aber krieg ich nicht gebacken, hier mein Code

    String dir = "";
    String Path = GetCurrentDir();

    if (SelectDirectory("Wählen Sie den Ordner mit der RB.ini", WideString(""), dir))
    {
    // Dir bekommt den vollen Pfad
    dir += "\\RB.ini";
    }
    else ShowMessage("RB.ini wurde nicht gefunden");

    Wo verwende ich denn jetzt dort noch Path?
    Wenn ich Path in den WideString schreibe oder es dort ohne WideSTring schreibe, wird nur der aktuelle Ordner angezeigt, aber keine anderen.

    Mfg. Sven



  • Ja, SelectDirectory kann das offenbar nicht. Auch die in neueren BCB-Versionen (ab 2006?) enthaltene Variante mit TSelectDirExtOpts bietet keine entsprechende Option.

    Sieh dir mal den FAQ-Eintrag "Ordnerauswahl mit Zusatzfunktion" an, da wird alles mehr oder weniger von Hand gemacht. Eventuell lässt sich auch deine gewünschte Konstellation so erreichen.



  • Danke Jansen,
    dann werde ich es wohl so versuchen müssen.

    Mfg. Sven



  • Chakuza schrieb:

    Wo verwende ich denn jetzt dort noch Path?
    Wenn ich Path in den WideString schreibe oder es dort ohne WideSTring schreibe, wird nur der aktuelle Ordner angezeigt, aber keine anderen.

    String dir = _T ("C:\\WINDOWS");
        SelectDirectory (_T ("The caption"), L"", dir, TSelectDirExtOpts ());
    


  • Ahh ja. Man darf also root nicht spezifizieren, wenn man auch noch höher hinaus will.
    Wie soll man denn auf sowas kommen!? 😉



  • Wenn ich den Code von audacia verwende kommt folgendes

    [C++ Fehler] Unit1.cpp(2728): E2268 Aufruf der undefinierten Funktion 'TSelectDirExtOpts'
    [C++ Fehler] Unit1.cpp(2728): E2285 Keine Übereinstimmung für 'SelectDirectory(char *,wchar_t *,AnsiString,int)' gefunden
    [C++ Warnung] Unit1.cpp(2728): W8019 Code hat keine Auswirkung.



  • Mein Code sollte mit C++Builder 2006 und aufwärts funktionieren; dort ist die Funktion SelectDirectory() deklariert wie hier beschrieben.

    Wenn es bei dir nicht funktioniert, könntest du dir einfach ja mal ansehen, wie SelectDirectory in deiner Version deklariert ist, oder? Eigeninitiative ftw 🙄



  • Borland Builder 2006

    bool SelectDirectory (AnsiString & Directory, TSelectDirOpts Options, int HelpCtx);

    TSelectDirOpt {sdAllowCreate, sdPerformCreate, sdPrompt};

    Also hilft mir SelectDirectory bei meinem Vorhaben nicht weiter.



  • Bei meinem C++Builder 2006 steht in FileCtrl.hpp folgendes:

    #pragma option push -b-
    enum TSelectDirExtOpt { sdNewFolder, sdShowEdit, sdShowShares, sdNewUI, sdShowFiles, sdValidateDir };
    #pragma option pop
    
    typedef Set<TSelectDirExtOpt, sdNewFolder, sdValidateDir>  TSelectDirExtOpts;
    
    //-- var, const, procedure ---------------------------------------------------
    ...
    extern PACKAGE bool __fastcall SelectDirectory(AnsiString &Directory, TSelectDirOpts Options, int HelpCtx)/* overload */;
    extern PACKAGE bool __fastcall SelectDirectory(const AnsiString Caption, const WideString Root, AnsiString &Directory, TSelectDirExtOpts Options = (Set<TSelectDirExtOpt, sdNewFolder, sdValidateDir> () << TSelectDirExtOpt(3) ), Controls::TWinControl* Parent = (Controls::TWinControl*)(0x0))/* overload */;
    

    Und mein Code funktioniert auch.


Anmelden zum Antworten