Frage zu SelectDirectory
-
Hallo,
ich habe den Dateipfad meines Projektes einer Variable übergeben.
Wenn ich die Funktion SelectDirectory aufrufe, möchte ich das er bereits den aktuellen Ordner ausgewählt hat, wo sich mein Projekt befindet.
Jedoch möchte ich nicht das man nur innerhalb dieses Ordners wählen kann, andere Ordner außerhalb des Projekts sollen natürlich auch wählbar sein.
Mir gehts halt nur darum, wenn der Befehl gestartet wird, dass der Pfad des Projects als Standard ausgewählt ist.Mfg. Sven
-
schau mal in der Hilfe dazu, da gibts eine eigene Eigenschaft dafür.
greetz KN4CK3R
-
Meine suche in ter Borland Hilfe hat mir nicht weiter geholfen.
-
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.