CreateDirectory und Arbeitsverzeichnis (war: Komische sache)



  • Hallo

    ich ahbe jetzt folgendes Problem bei meinem Programm gefunden.

    Ich wollte mit createdirectory ein verzeichnis erstellen. Jedoch wenn ich immer mit OpenDialog eine Datei auswähle, welche in das verzeichnis kopiertw erden soll, geht das nicht, weil ich den Ordner mit ner relativen Pfadangabe angebe. Also so: ..\\verzeichnis

    Wie komme ich denn nun wieder in das Programmverzeichnis.

    Ich weiss, dass das sehr schwer zu verstehen ist. Ich verstehe es ja selbst kaum.

    ciao beline

    Edit:
    Bitte aussagekräftige Überschriften wählen. Danke!



  • irgendwie muss man doch da ein arbeitsverzeichniss auswählen.

    Wenn ich nämlich mit OpenDialog meinen Ordner auswähle, ind enen sich die Project befindet, findet erauchd en relativ adressierten Ordner und erstellt einen weiteren Ordner.

    Hab schon versucht OpenDialog1->FileName=Application->ExecName;
    Geht elider auch nicht
    und Application->Restore() geht auch nicht

    ciao beline



  • Du warst doch fast an der Lösung dran mit dem Anwendungspfad. Nur muß man halt auch lesen können und darüber nachdenken, was die da sagen wollen. Ich zitiere aus der Hilfe zu TApplication::ExeName

    "Die Eigenschaft ExeName enthält den Dateinamen und den Pfad der ausführbaren Datei der Anwendung.

    __property System::AnsiString ExeName = {read=GetExeName};

    Beschreibung

    Mit ExeName können Sie den Namen der ausführbaren Datei einer Anwendung ermitteln.

    Der Name der Anwendung ist der Name des Projekts mit der Erweiterung .EXE. Standardmäßig lautet dieser Name PROJECT1.EXE. Um den Wert von ExeName zu ändern, speichern Sie das Projekt unter einem neuen Namen und compilieren die Anwendung erneut. Der neue Name der Projektdatei wird in ExeName entsprechend geändert.

    Die Eigenschaft ExeName kann nur gelesen werden."

    Tipp: der erste Satz ist in diesem Fall entscheidend.



  • Hallo,

    also ich weiss nun, dass in exeName auch der Dateiname enthalten ist. Jedoch weiss ich noch nicht, wie ich den aktuellen Pfad, der mit OpenDialog verändert wurde, (von Programmpfad auf ausgewählten Benutzerpfad) wieder in das Verzeichniss, wo Projektdatei... liegen bekomme.

    Ich ahbe noch nicht einmal ne ahnung. Ich habe nur vermutet, dass mit ExeName etwas helfen könnte.

    Der erste Satz hilft mir nicht wieter, leider. Ich sitze da nuns chon 2 tage dran und heute früh ahbe ich erst den fehler gefunden.

    Wenn ich mit OpenDialog einen Pfad auswähle, dann haut meine relative Pfadangabe zur verzeichnisserstellung nicht mehr hin.

    Also muss ich dann nach auswahl des Ordners über OpenDialog zum gleichen Pfad wie beid er Progrmmausführung zurückkehren.

    Aber wie, wie wie wie ist die frage.

    ciao beline



  • Meine Antwort bezog sich auf Dein 2. Posting. Du hast aber auch das nicht verstanden. Dort wird NICHT nur der "Dateiname" gespeichert....

    Hast Du Dir mal TOpenDialog angekuckt? Schau Dir mal die Eigenschaft InitialDir an. Dann kuck Dir mal die Eigenschaft Files an. Damit solltest Du alles haben, was Du brauchst. Wenn der Anwender nur eine beliebige Datei auswählen darf, diese aber immer in ein bestimmtes Verzeichnis hinein soll, dann mußt Du halt von der/den ausgewählten Datei(en) die Pfadangabe entfernen.

    Da hättest Du übrigens drauf kommen können, wenn Du mal Deinen Debugger benutzt hättest und Dir Deine Pfadvariable angesehen hättest...



  • Man sollte nie relative Pfade benutzen, die potentiellen Probleme siehst du ja selbst. Es gibt auch keine sinnvollen Grund, sich auf relative Angaben zu verlassen, da man z.B. über TApplication::ExeName u.ä. unkompliziert für geordnete Verhältnisse sorgen kann.

    Davon abgesehen kannst du dir auch mal die API-Funktionen GetCurrentDirectory und SetCurrentDirectory ansehen.


Anmelden zum Antworten