Datei im Verzeichnis des Executables öffnen



  • Hobo schrieb:

    Thuruk zeigt, wie man eine Datei öffnet, von der man den Pfad kennt.

    Oder nur den Namen, wenn die Datei im selben Ordner liegt. Die kann ich dann zumindest unter Windows und Linux mit 'datei.open("name.endung")' öffnen.

    Hobo schrieb:

    Das bringt mir, dass ich gut schlafen kann, weil ich nicht versuche, Flügel für ein Auto zu entwickeln, weil ich vorher weiß, dass das Auto dann auch nicht fliegen kann.

    http://derstandard.at/1237227945196/ 😃



  • Hobo schrieb:

    [...]

    Hat alles nichts mit dem Ursprungszitat zu tun, weshalb hier Trivialitäten wiederholt werden, die der OP offensichtlich schon probiert hat.

    Das bringt mir, dass ich gut schlafen kann, weil ich nicht versuche, Flügel für ein Auto zu entwickeln, weil ich vorher weiß, dass das Auto dann auch nicht fliegen kann.

    Korrigier mich, wenn ich falsch liege, aber dein Post war wohl eine Erwiderung auf dot, genau ein Post vorher, oder nicht? Wenn ja: Was willst du dot und uns sagen? Was hat er falsch gemacht? Wenn nein: Warum postest du zusammenhanglos etwas Offensichtliches?

    Thuruk schrieb:

    Oder nur den Namen, wenn die Datei im selben Ordner liegt. Die kann ich dann zumindest unter Windows und Linux mit 'datei.open("name.endung")' öffnen.

    Du hast es immer noch nicht verstanden. Lies dir die Antworten nochmal durch und probier deine Vorgehensweise mit einem anderen Working Directory.



  • Naja, so schwer ist das doch nicht. Der Standard garantiert keine Verzeichnisse. Wir brauchen aber keine Garantie. Erstens nicht vom Standard, wenn überhaupt vom System. Ist ja klar, ich kann auch nicht für die Übersichtlichkeit der Deutschlandkarte bürgen. Ich lauf nur drauf rum. Wenn das System keine Verzeichnisse garantieren kann, brauchen wir das Programm auch nicht.

    Ansonsten ist der StackOverflow link woll mit Plattformbedingten ifdefs der praktibaleste Weg, wenn es wirklich sein muss.

    Nja. Deine Signatur is geil 😋



  • Ach du je, was habe ich hier denn angerichtet...

    @Michael E.: Danke für die Klarstellungen 🤡

    @dot: Danke für den Link. Das scheint ja tatsächlich ein Hinweis zu sein, dass es keinen Weg gibt, der "allgemein genug" ist.

    @System ohne Verzeichnisse: Dann muss ich mich wohl einschränken auf Systeme, die Dateien und Verzeichnisse kennen; mein Taschenrechner kann mit dem Programm nichts anfangen.



  • Michael E. schrieb:

    Könnt ihr bitte mal aufhören, trivialen Mist mit argv[0] vorzuschlagen? Der OP hat bereits im ersten Post gezeigt, dass er mit boost und argv[0] nicht so recht weiterkam. Einige bekleckern sich hier nicht gerade mit Ruhm.

    ACK

    Wieder ein wunderbares Beispiel dafür, wie ein Thread mit einer einfach und verständlich gestellte Frage, von "ich weiss was" geilen Individuen über 4 Seiten mit lauter Schwachsinn zugespammt wird.



  • wxSkip schrieb:

    Verknüpfungen haben immer noch die Dateiendungen .lnk und sind sogar (umständlich) in Texteditoren einsehbar.

    Schon mal Linux benutzt? Da gibt es noch andere Verknüpfungen (Hard-Links und Soft-Links, beide ohne .lnk)

    Hobo schrieb:

    - Die Datei mit ins Programm schieben, und bei Ausführung auspacken, z. B. in den Arbeitsspeicher und von da auslesen

    Und wie kann ich die Datei auspacken, wenn ich den Pfad zum Programm nicht kenne? 😃 😕



  • pyhax schrieb:

    wxSkip schrieb:

    Verknüpfungen haben immer noch die Dateiendungen .lnk und sind sogar (umständlich) in Texteditoren einsehbar.

    Schon mal Linux benutzt? Da gibt es noch andere Verknüpfungen (Hard-Links und Soft-Links, beide ohne .lnk)

    Du hast Symlinks vergessen. Mit denen wird es noch etwas komplexer. 🙂
    Edit: Ist das eig. dasselbe? Softlinks kenn ich nicht...

    Aber hab ich da nicht ein bisschen Recht? Wenn ein Hardlink auf eine Inode verweist, dann ist es doch wie ein Programm, dass das entsprechende andere Programm ausführt?



  • Nein, dann hat das Programm nicht nur einen Pfad, sondern 2 (oder die Anzahl der Hardlinks :D)

    Zu den Softlinks: Das sind die, die man mit ln -s erzeugt 🙂



  • pyhax schrieb:

    wxSkip schrieb:

    Verknüpfungen haben immer noch die Dateiendungen .lnk und sind sogar (umständlich) in Texteditoren einsehbar.

    Schon mal Linux benutzt? Da gibt es noch andere Verknüpfungen (Hard-Links und Soft-Links, beide ohne .lnk)

    Hobo schrieb:

    - Die Datei mit ins Programm schieben, und bei Ausführung auspacken, z. B. in den Arbeitsspeicher und von da auslesen

    Und wie kann ich die Datei auspacken, wenn ich den Pfad zum Programm nicht kenne? 😃 😕

    Du brauchst den Pfad nicht, im Arbeitsspeicher gibt es keine Pfade.



  • Wie soll ich den die Datei auspacken?! Soll ich im Arbeitspeicher nach dem Programm suchen und dann dort die Datei auslesen?



  • Nein. Die absolut simpelste Methode, um das zu veranschaulichen, wäre:

    - Du schreibst Dir ein Hilfsprogramm, das Dir den binären Inhalt der Datei in ein char Array schreibt, und zwar in Form von Quellcode.

    - Dann kompilierst Du das Programm, in welchem auf das Array zugegriffen wird.



  • Hier gibts eine ähnliche Verwendung mit Generatorprogramm:
    http://wiki.wxwidgets.org/Embedding_PNG_Images



  • pyhax schrieb:

    Nein, dann hat das Programm nicht nur einen Pfad, sondern 2 (oder die Anzahl der Hardlinks :D)

    Dann ist aber der eigentliche Pfad ein Teil davon, was wiederum dazu führt, dass man die Datei durch bloßes angeben des Namens "auffinden" kann. Oder etwa nicht?



  • Hacker schrieb:

    pyhax schrieb:

    Nein, dann hat das Programm nicht nur einen Pfad, sondern 2 (oder die Anzahl der Hardlinks :D)

    Dann ist aber der eigentliche Pfad ein Teil davon, was wiederum dazu führt, dass man die Datei durch bloßes angeben des Namens "auffinden" kann. Oder etwa nicht?

    Nein, dann wird die Datei im Working Directory gesucht, was nicht dem Programmverzeichnis entsprechen muss:

    test@box:~$ /usr/bin/test
    

    Hier würde die Datei im Homeverzeichnis gesucht werden.


Anmelden zum Antworten