Datei öffnen



  • Wenn ich mein Programm direkt starte, wird die Datei Pfade.txt geöffnet und ausgelesen. Wird das Programm aber über einen Zeitdienst gestartet (Cron), dann klappt das mit dem Öffnen nicht. Liegt die Datei Pfade.txt eine Ebene höher (bei der Cron.exe) dann klappt es. Wieso wird die Datei nicht im gleichen Pfad geöffnet in der auch mein Programm liegt?

    ifstream Datei;
            Datei.open("Pfade.txt");
            if(!Datei)
            {
                cout << "Datei laesst sich nicht oeffnen!" << endl;
            }
    


  • Mach eine absolute Angabe, bei relativen Angaben wird im Working Directory nach Pfade.txt gesucht.



  • Eine absolute Angabe ist aber nicht so schick. Ich will ja mein Programm nicht jedesmal neu kompilieren, wenn ich es an eine andere Stelle schiebe.



  • In argv[0] steht normalerweise der komplette Name Deiner EXE Datei. Da musste den Pfad abtrennen und mit '\\Pfade.txt' ergaenzen! 😉



  • Original erstellt von DerAltenburger:
    In argv[0] steht normalerweise der komplette Name Deiner EXE Datei. Da musste den Pfad abtrennen und mit '\\Pfade.txt' ergaenzen! 😉

    Stimmt nicht, da steht lediglich drin, wie ein Programm aufgerufen wurde, das kann genausogut "./programm" sein.

    Setz vielleicht einfach eine Umgebungsvariable die angibt wo sich Pfade.txt befindet.



  • Wenn das d'rin steht, muesste es mit relativem Pfad klappen!(?) Sonst muesste das OS den absoluten Programmpfad eintragen.



  • Hi,

    also in argv[0] steht (IMO) immer der ganze Pfad, also

    z.B.: "C:\Folder1\Folder2\file.exe"

    Legolas



  • Original erstellt von DerAltenburger:
    Wenn das d'rin steht, muesste es mit relativem Pfad klappen!

    Ersetze mal . durch ein xbeliebiges anderes Verzeichnis und schon klappt nichts mehr.

    Original erstellt von Legolas:
    also in argv[0] steht (IMO) immer der ganze Pfad, also
    z.B.: "C:\Folder1\Folder2\file.exe"

    Das stimmt definitiv nicht.

    edit: Probier doch mal dieses Programm:

    #include <iostream>
    
    int main(int argc, char* argv[])
    {
        std::cout << argv[0];
    }
    

    [ Dieser Beitrag wurde am 24.03.2003 um 12:43 Uhr von nman editiert. ]



  • edit: Probier doch mal dieses Programm:

    Das probier ich seit Jahren so, und immer kommt der GANZE, absolute Pfad mit!!!

    PS: unter DOS, Win3.x, Win9x, Win2K ???
    Hab' noch nie was anderes bekommen!(?)



  • starte das programm mal so .\bla.exe aus der konsole



  • Original erstellt von DerAltenburger:
    PS: unter DOS, Win3.x, Win9x, Win2K ???
    Hab' noch nie was anderes bekommen!(?)

    Das kann ich nicht überprüfen da ich kein Windows habe aber bei mir ist das 100%ig nicht der Fall:

    nman: ~ > echo "#include <iostream>
    > int main(int argc, char* argv[])
    > { std::cout << argv[0] << std::endl; }
    > " > test.cpp
    nman: ~ > g++ -o test test.cpp 
    nman: ~ > ./test 
    ./test
    nman: ~ > /home/nman/test 
    /home/nman/test
    nman: ~ > cd ..
    nman: /home > nman/test 
    nman/test
    

    Mögen uns die allwissenden Mods erleuchten! 🙂
    edit: Anscheinend hat Dimah das gerade getan... 😉

    [ Dieser Beitrag wurde am 24.03.2003 um 13:47 Uhr von nman editiert. ]



  • Hi,

    bei mir wird der komplette Pfad mit

    Laufwerk:\Ordner\...\Datei.exe
    (unter 98, NT4, 2000 und XP)

    angegeben.

    Edit
    wenns aus der Konsole gestartet wird dann nicht ... 😞
    schade eigentlich 🙂
    /Edit

    Legolas

    [ Dieser Beitrag wurde am 24.03.2003 um 13:50 Uhr von Legolas editiert. ]

    [ Dieser Beitrag wurde am 24.03.2003 um 13:51 Uhr von Legolas editiert. ]



  • Original erstellt von Legolas:
    (unter 98, NT4, 2000 und XP)

    Also bei mir unter Linux95 und FreeBSD XP kann ich das nicht nachvollziehen. :p


Anmelden zum Antworten