Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Standardpfad Variable ? (https://www.delphipraxis.net/11599-standardpfad-variable.html)

Smokey 10. Nov 2003 13:27


Standardpfad Variable ?
 
Hu, bin neu hier und hoffe ich hab das richtige forum erwischt.

Ich habe folgendes Problem :

Ich habe auf meiner Form Pictureboxen (TPicture), in die ich, aus immer dem selben Ordner, Bilder lade mit:

Delphi-Quellcode:
image_4.Picture.LoadFromFile('pic/' + edit_image4.Text);
der Ordner "Pic" ist also ein Unterordner in meinem Programmfolder.

Problem ist nun, wenn ich über einen Öffnendialog eine Datei aus einem beliebigen anderen Ordner auswähle, funktioniert der obenstehende Aufruf nicht mehr, weil der Pfad der ausgewählten Datei als neuer Standardpfad genommen wird.

Meine Frage ist nun : in welcher Variable steht in Delphi der aktuelle Ordner ?

P.S: ich weiss, dass ich den Code in sofern ändern kann, dass ich über eine Variable mit ExtractFilePath(ParamStr(0)) den Ordner festlegen kann. Es geht mir aber interessehalber darum zu erfahren in welcher Variable der aktuelle Standardpfad in Delphi abgelegt wird :shock:

rebugger 10. Nov 2003 13:51

Re: Standardpfad Variable ?
 
Was ist bei dir der "StandardPfad" ???
ExtractFilePath(ParamStr(0)) <= gibt dir das Verzeichnis zurück, in dem dein Programm liegt !

choose 10. Nov 2003 13:58

Re: Standardpfad Variable ?
 
Hallo Smokey,

Willkommen bei Delphi Praxis! Wenn ich Dich richtig verstehe, interessiert Dich das Arbeitsverzeichnis und die Dinge "'drum herum". Nutze die Suche des Forums und probiere mal [df]Arbeitsverzeichnis[/df].

Zitat:

Zitat von rebugger
ExtractFilePath(ParamStr(0)) <= gibt dir das Verzeichnis zurück, in dem dein Programm liegt !

Das stimmt nicht ganz: Es wird das Arbeitsverzeichnis zurückgegeben. Wann immer Du aus der Shell ein Programm "von einem anderen Ort aus" ausführst, verweist dieses Konstrukt nicht länger auf der Binary, das ausgeführt wird.

XeRo 10. Nov 2003 14:12

Re: Standardpfad Variable ?
 
Zitat:

Zitat von rebugger
ExtractFilePath(ParamStr(0)) <= gibt dir das Verzeichnis zurück, in dem dein Programm liegt !

Aber auch:
Delphi-Quellcode:
image_4.Picture.LoadFromFile(ExtractFilePath(Application.ExeName)+'pic/' + edit_image4.Text);

choose 10. Nov 2003 14:21

Re: Standardpfad Variable ?
 
Zitat:

Zitat von XeRo
Aber auch:
Delphi-Quellcode:
image_4.Picture.LoadFromFile(ExtractFilePath(Application.ExeName)+'pic/' + edit_image4.Text);

Stimmt ;)
Delphi-Quellcode:
function TApplication.GetExeName: string;
begin
  Result := ParamStr(0);
end;

MathiasSimmack 10. Nov 2003 14:30

Re: Standardpfad Variable ?
 
Zitat:

Zitat von choose
Zitat:

Zitat von rebugger
ExtractFilePath(ParamStr(0)) <= gibt dir das Verzeichnis zurück, in dem dein Programm liegt !

Das stimmt nicht ganz: Es wird das Arbeitsverzeichnis zurückgegeben.

Natürlich hat rebugger recht! Mit "ExtractFilePath(paramstr(0))" wird das Verzeichnis des Programms zurückgegeben. Egal von wo. Was du, @choose, mit "Arbeitsverzeichnis" meinst, erhält man bspw. mit
Delphi-Quellcode:
ShowMessage(GetCurrentDir);
Das muss nicht zwangsläufig mit dem Ordner der Exe übereinstimmen. Und warum das so ist, hat Smokey ja selbst schon geschrieben:
Zitat:

Problem ist nun, wenn ich über einen Öffnendialog eine Datei aus einem beliebigen anderen Ordner auswähle, funktioniert der obenstehende Aufruf nicht mehr, weil der Pfad der ausgewählten Datei als neuer Standardpfad genommen wird.

choose 10. Nov 2003 14:40

Re: Standardpfad Variable ?
 
Zitat:

Zitat von MathiasSimmack
Natürlich hat rebugger recht! Mit "ExtractFilePath(paramstr(0))" wird das Verzeichnis des Programms zurückgegeben. Egal von wo.

Du hast Recht, Mathias. GetParamStr(0) wird auf GetModuleFileName gemappt und gibt folglich den "full path and filename for the executable file" zurück.

Entschuldige bitte, rebugger.

Smokey 10. Nov 2003 15:14

Re: Standardpfad Variable ?
 
Jo danke schonmal!

Delphi-Quellcode:
ShowMessage(GetCurrentDir);
war schonmal das, was ich haben wollte.
Kann man den Currentdir in Delphi auch irgendwie selber setzen/verändern?
Wenn nicht, auch net schlimm, hauptsache ich weiss schonmal wie ich drankomme.

Delphi ist noch etwas neu für mich :zwinker:

Smokey 10. Nov 2003 15:20

Re: Standardpfad Variable ?
 
okidoki

Delphi-Quellcode:
SetCurrentDir(ExtractFilePath(paramstr(0)));
ChDir('..');
szDummy := GetCurrentDir;
damit sind alle meine fragen beantwortet... bin noch zu englischfixiert und auf suchwörter wie Arbeitsverzeichnis nicht gekommen :wall:

Christian Seehase 10. Nov 2003 19:45

Re: Standardpfad Variable ?
 
Moin Smokey,

aber denk dran:
Sich auf das Arbeitsverzeichnis zu verlassen, ist eine der "schönsten" Fehlerquellen, die man sich einhandeln kann.


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:33 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz