Zugriff auf eine Datei in einem anderen Unterverzeichnis



  • Hallo,

    ich habe ein Problem. Ich möchte in meinem programm auf eine datei, welche sich in einem anderen verzeichnis als mein Programm befindet zugreifen, diese abändern und in einem anderen Verzeichnis speichern... falls das Verzeichnis noch nicht existiert soll es angelegt werden.

    also folgendes szenario:

    Mein Programm liegt beispielsweise in c:\Programm\Exe\ und ich möchte auf eine Datei im Verzeichnis C:\Programm\txtDateien\ zugreifen. Der Name der Datei ist bekannt. Die Datei wird abgeändert und soll dann im Verzeichnis C:\Programm\Ergebnis gespeichert werden. Der Zusammenhang bleibt immer gleich, d.h. mein Programm müßte einfach nur ein "cd.." und ein cd txtDateien machen um im Verzeichnis der Datei zu landen, allerdings kann sich der Pfad dorthin ändern. Also beispielsweise: D:\blabla\Exe, D:\blabla\Ergebnis, D:\blabla\txtDateien

    wie bewerkstelle ich das am besten...?



  • Parametrisiere dein Programm. Z.B. in dem Du die Parameter die beim Aufruf uebergeben wurden auswertest. Oder durch Einlesen der Parameter zur Laufzeit (z.B. aus einer Konfigurationsdatei). Mein Vorschlag: mach beides.
    Andere Moeglichkeit: Du hardcodest es und wenn sich das Verzeichnis aendert, dann aenderst Du dein Programm und kompillierst es neu. 😉



  • Naja, das hardcoden ist sehr unschön...

    parametresieren ist auch so ne sache...
    wie kann ich denn das verzeichnis herausbekommen, in dem mein programm gerade läuft? dementsprechend könnte ich ja den string (den pfad) bearbeiten.
    Gibts noch ne andere elegantere Lösung? Das kanns ja noch nicht gewesen sein.

    Grüße



  • Also, bei mir zumindest funktionniert das banale .. um ein Verzeichnis hochzugehen

    In deinem Beispiel habe ich als Pfad in den String also geschrieben:
    "..\\txtDateien\\meineDatei.txt"
    (der doppelte \ ist zum maskieren notwendig, \\ entspricht also einem \ im Pfad. Alternativ kann man bei Windows glaube ich auch einfach / nutzen)

    Oder habe ich da jetzt etwas missverstanden?



  • Hi,

    int main(int argc, char *argv[])
    

    In argv[0] steht der gesamt Pfad samt Exe Name drin.

    Gruß SciFi



  • Hi, also das mit dem verzeichnis funktioniert nicht...

    Ich benötige folgendes:

    den pfad als string!

    wenn ich string s="..\\blabla"; mache, hab ich genau das zeugs drin stehen aber kein Pfad und hardcodieren will ich den pfad auch nicht, da sich zum beispiel der laufwerksbuchstabe ändern kann oder die Verzeichnisstruktur in einer anderen Verzeichnisstruktur abgelegt werden kann.
    Ich möchte den Pfad als string übergeben und daher benötige ich namen des gesamten Pfades in s.

    also wie bekomme ich aus "..\\blabla" das dazugehörige directory?

    Tips, Vorschläge?



  • In argv[0] steht für Gewöhnlich der EXE-Pfad drin. Oder du nimmst boost::filesystem, da kann man sich den Pfad holen.



  • SciFi schrieb:

    Hi,

    int main(int argc, char *argv[])
    

    In argv[0] steht der gesamt Pfad samt Exe Name drin.

    Gruß SciFi

    Öhm ?



  • SciFi schrieb:

    Hi,

    int main(int argc, char *argv[])
    

    In argv[0] steht der gesamt Pfad samt Exe Name drin.

    Gruß SciFi

    Das stimmt in der Allgemeinheit nicht.
    Ich compiliere mit unterscheidlichen Compilern auf unterschiedlichen Plattformen und manchmal steht da nur der Programmname drin, mal der Aufruf ("./pgname"), mal der gesamte Pfad, ....

    Gruß,

    Simon2.



  • Da magst du recht haben, aber unter Windows sollte es klappen. Zudem war es ja nicht sein Problem, dass dieses nicht geht, sondern das er überhaupt nicht weiss was er machen soll. Deswegen nochmal der Hinweis.



  • Hast schon Recht !
    Ich wollte nur meinen "Reminder" setzen ...

    Gruß,

    Simon2.


Anmelden zum Antworten