![]() |
Aktuelles Verzeichnis
Hi,
wie erhalte ich das aktuelle Verzeichnis? Also allgemein das Verzeichnis, nicht speziell auf eine Anwendung bezogen wie GetCurrentDir. Bei mir ist das aktuelle Verzeichnis (wenn ich bei Start->Ausführen "" eingebe) identisch mit %HomePath%, also: C:\Dokumente und Einstellungen\Martin Kluge Ist das immer so ? Wie kann ich generell das aktuelle Verzeichnis mit Delphi auslesen ? |
Re: Aktuelles Verzeichnis
GetCurrentDir liefert das aktuelle Verzeichnis.
|
Re: Aktuelles Verzeichnis
:shock: GetCurrenDir liefert mir das Verzeichnis, in dem meine Anwendung gestartet wurde.
z.B. Wenn ich die Eingabeaufforderung starte, ist das Verzeichnis auch immer C:\Dokumente und Einstellungen\Martin Kluge. Oder über Start->Ausführen :gruebel: |
Re: Aktuelles Verzeichnis
Moin Martin,
Zitat:
[EDIT] Oder starte das Programm über einen Link oder ShellExecuteEx, wobei Du das Arbeitsverzeichnis angibst. Natürlich darf das Arbeitsverzeichnis nicht das des Programmes sein ;-) [/EDIT] |
Re: Aktuelles Verzeichnis
GetCurrentDir öffnet denke ich mal das Arbeitsverzeichnis.
|
Re: Aktuelles Verzeichnis
Das ist mir schon klar.
Zitat:
Meinetwegen heißt das Arbeitsverzeichnis. Vielleicht muss ich die Frage anders formulieren: Warum verwendet Start ->Ausführen als Arbeitsverzeichnis %HomePath% ? Ist das immer so? |
Re: Aktuelles Verzeichnis
Mit GetCurrentDir bekommst Du den Inhalt einer globalen (Windows-)Variable, welches das aktuell eingestellte Verzeichnis enthält. Du kannst dieses mit SetCurrentDir verändern. Alle Programme, die nur mit GetCurrentDir z.B. ihr Datenverzeichnis abfragen kannst Du hiermit zum Abschmieren bringen.
Wenn Du also wichtige Datenpfade ermittelst, nehme niemals GetCurrentDir dazu (Erfahrungswerte, lange Debugsitzungen :kotz: ). Wenn Du den Pfad Deiner Anwendung ermitteln willst, unabhängig davon, wie oder wo sie gestartet wurde, benutze "ExtractFilePath(ParamStr(0))". Da steht alles drin. |
Re: Aktuelles Verzeichnis
Zitat:
IMHO hat jede laufende Anwendung sein eigenes CurrentDir und es gibt kein globales. Bzw. ich dachte es gäbe ein globales, (z.B. bei Start->Ausführen = %HomePath%) aber anscheinend ist das nicht so. Auf jeden Fall bekommt man das globale Arbeitsverzeichnis - falls es ein solches geben sollte - nicht mit GetCurrentDir. Getestet: Einfach zwei Delphi-Programme starten, in einem wird per ButtonClick GetCurrentDir ausgelesen und in dem anderen mit SetCurrentDir z.B. das Arbeitsverzeichnis auf C:\ festgelegt. Lege ich das Arbeitsverzeichnis fest, hat sich aber GetCurrentDir im anderen Programm nicht geändert! |
Re: Aktuelles Verzeichnis
Einfach im PSDK nachgucken:
Zitat:
|
Re: Aktuelles Verzeichnis
Eben:
Zitat:
(anscheinend nicht...) //Edit: Aber trotzdem danke an alle, für eure Bemühungen :thumb: |
Re: Aktuelles Verzeichnis
Hi,
ob es ein globales Arbeitsverzeichnis gibt oder nicht kann ich dir nicht sagen, aber wozu bräuchtest du denn eins? Ich meine ich finde die Idee dahinter wiederspricht ja eigentlich ein wenig dem, was ein BS machen soll. Letztlich wissen die einzelnen Prozesse doch gar nicht, dass sie nicht allein sind. Die kennen ihre Kindprozesse und sich selbst, aber die denken immer alles ihrs! Das Windows (oder ein anderes BS) da vermittelt muss dem Programm ja auch nicht klar sein. Wenn es nun also ein Arbeitsverzeichnis möchte, dann denkt dieses Programm ja schließlich auch, dass es sein Arbeitsverzeichnis wäre. Der Sinn eines globalen Verzeichnis wäre mir an dieser Stelle nicht wirklich klar. Also ich finde es immer schon nervig genug, wenn ein Programm bei jedem Speichern bei einem festen Pfad anfängt, man also 100 mal speichert und jedes mal den Ordner (z.B. \Dokumente und Einstellungen\<Benutzer>\ verlassen darf und das eigentliche Ziel suchen muss. Wenn ich mir jetzt vorstelle, dass wenn ich, k.A. mit Corel etwas mache mein aktueller OpenOffice Speicherpfad und der von Delphi sich ändern... Also vielleicht seh nur ich den Sinn nicht, wie gesagt ich weiß nicht ob es vielleicht so etwas gibt oder nicht. gruß Der Unwissende |
Re: Aktuelles Verzeichnis
Hallo Martin,
hinter dem CurrentDir bzw. Arbeitsverzeichnis verbirgt sich das current working directory (cwd) aus der Unix-Welt - da hat sich Microsoft damals seine Inspiration für XENIX geholt, bevor die Funktionalität in DOS 2.10 Einzug hielt. Globales Arbeitsverzeichnis ist ein Oxymoron. Was du beobachtet hast, ist das sogenannte home directory - auch bei Unix geklaut. Über eine Regel bestimmt dabei das Betriebssystem ein Standard-Arbeitsverzeichnis der Shell. Grüße vom marabu |
Re: Aktuelles Verzeichnis
Zitat:
Und wie kann ich dieses Standard-Arbeitsverzeichnis der Shell erhalten, bzw. ist das immer %HomePath% ? |
Re: Aktuelles Verzeichnis
Zitat:
Oder rechte Maustaste auf Arbeitsplatz --> Eigenschaften --> Erweitert --> Umgebungsvariablen. |
Re: Aktuelles Verzeichnis
Danke, aber wie ich HomePath ermitteln kann war mir schon klar.
Nur: Ist auch immer Standard-Arbeitsverzeichnis der Shell = HomePath ? |
Re: Aktuelles Verzeichnis
Hallo,
Zitat:
Gruß xaromz |
Re: Aktuelles Verzeichnis
Gut.
Danke für Deine Antwort! |
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:07 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz