Pfad im Edit Feld aus einem Öffnen-Dialog?



  • Hallo,

    Also ich hab zwei Edit Felder und zwei normale Buttons.

    Die Buttons sind neben den Edit Feldern platziert und starten mit FileOpen1->Execute() bzw. FileOpen2->Execute() den Öffnen Dialog. Wenn ne Datei ausgewählt wird, reagiert das Programm mit OnAccept und schreibt den Dateipfad in das Edit Feld (Edit1->Text = FileOpen1->Dialog->FileName). Ich brauch nämlich nur die Dateipfäde als String im Edit Feld und nicht die Dateien selber. Wenn ich jetzt mit den Strings weiterarbeiten will, geht das nicht. Muss ich die Datei erst irgendwie löschen? Hab's schon mit Clear() usw. versucht, aber funktioniert nicht.

    Also ich möchte, dass der Benutzer eine Datei von seiner Festplatte in einem Dialog auswählen kann und der String dann in einem Edit Feld geschrieben wird, mit dem ich dann weiterarbeiten kann. Wenn ich den Pfad selber Eintrage geht's ohne Probleme, also muss es irgendwas mit der geöffneten Datei zu tun haben.

    Kenn mich noch nicht besonders gut aus mit der Borland IDE.
    Bin aber dabei mir "C++ mit dem Borland C++ Builder" durchzulesen.

    Danke im voraus.



  • Wahrscheinlich geht's auch viel einfacher mit anderen Dialogen(?)

    Mit SelectDirectory() bekommt ich schonmal den Ordner Pfad.
    Gibt doch bestimmt auch sowas für den Dateipfad, oder?



  • Hallo

    Wenn ich dich richtig verstanden habe hilft die dir Funktion ExtractFilePath weiter, siehe BCB-Hilfe.

    bis bald
    akari



  • Hallo, danke für die schnelle Antwort.
    Ich glaub mit der Funktion kann ich aber nichts anfangen.

    Es soll einfach nur ein Dialog erscheinen, in dem ein Benutzer ne Datei auswählen kann und der komplette Pfad dann in ein Edit Feld geschrieben wird.

    So wie hier:

    AnsiString Directory;
    SelectDirectory(Directory, TSelectDirOpts(), 0);

    Da werden zwar die Dateien mit aufgelistet, aber wenn man eine auswählt und auf OK klickt, dann wird in der Variable "Directory" nur der Ordnerpfad geschrieben und nicht der komplette Dateipfad. Also "C:\Ordner" anstatt "C:\Order\datei.exe"

    Ich möchte aber aus nem Dialog Fenster heraus ne Datei auswählen und den kompletten Pfad speichern.
    (ohne die Datei zu öffnen - ich brauche nur den Pfad).

    Also genau das selbe wie SelectDirectory, aber halt auch mit den Dateinamen.



  • Hallo

    Dann habe ich dich richtig verstanden, und die genannte Funktion ist das richtige. Bitte lies doch erstmal in der BCB-Hilfe nach. Die Funktion ist wirklich sehr einfach.

    bis bald
    akari



  • Die Funktionsbeschreibung hatte in der BCB Hilfe schon gelesen.
    Hatte nur keine Ahnung, welchen Dialog ich überhaupt verwenden soll.

    Hat sich aber erledigt - Hab den Öffnen-Dialog selber mit nem Formular erstellt.

    Mein Programm geht aber immer noch nicht.

    Ich hab ne Funktion geschrieben - Sie erhält als Parameter den Pfad, der im Edit-Feld steht. In der Funktion wird der Pfad dann als erster Parameter für die Funktion CreateFile() verwendet. Das komische ist jetzt: Wenn ich den Pfad selber in das Edit-Feld per Hand eintippe und dann die Funktion aufrufe, geht alles problemlos. Wenn ich aber den Pfad im Dialog auswähle und in das Edit-Feld kopiere (mit ner normalen Zuweisung), dann geht gar nichts mehr... echt komisch. AnsiString nach char* bringt auch nichts.



  • mach es doch einfach so.

    anstatt bzw zusätzlich zum zuweisen des Filename in das editfeld kannst du dir doch das ganze direkt in ne Variable schreiben.

    AnsiString Pfad;
    Pfad = FileOpenDialog1->FileName;

    Bei mir gehts so.

    oder

    Edit1->Text = FileOpenDialog1->FileName;
    AnsiString Pfad;
    Pfad = Edit1->Text;

    in variable Pfad steht der Kommplette Pfad inclusive Dateiname.



  • Hallo

    😕

    AnsiString Pfad = ExtractFilePath(OpenDialog1->FileName);
    

    🙄

    bis bald
    akari



  • @blue230: Hab ich natürlich schon alles versucht.
    Vielleicht hab ich auch einfach an ner anderen Stelle nen semantischen Fehler.

    @akari: Jetzt weiß ich endlich auch, welche Komponente ich verwenden muss.
    Ich kenn mich wie gesagt noch nicht gut mit der Borland IDE aus und hab in der Komponentenpalette die Register durchgesucht und im ActionManager nur diesen Standard Öffnen-Dialog gefunden (TFileOpen). Woher soll ich wissen, dass ich erst in Ansich > Komponentenliste nach TOpenDialog suchen muss? Das war die ganze Zeit mein Problem, ich wusste nicht aus welchem Dialog ich überhaupt den Pfad nehmen soll und hab deshalb 'n eigenes Formular mit ComboBox, FileListBox, usw erstellt.

    Ich werd's einfach mal weiter versuchen. Danke nochmal!


Anmelden zum Antworten