Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   SaveDialog - InitialDir (https://www.delphipraxis.net/175152-savedialog-initialdir.html)

Amateurprofi 2. Jun 2013 22:10

SaveDialog - InitialDir
 
Ich habe ein Programm, das sowohl als 32 Bit Version wie auch als 64 Bit Version laufen soll.
Die .exe Dateien liegen in ...\Win32\Debug und ...\Win64\Debug

Im Create meines Hauptformulars setze ich SaveDialog.InitialDir auf das Programmverzeichnis, also auf ...\Win32\Debug, wenn es als 32 Bit Version gestartet wird oder auf ...\Win64\Debug, wenn es als 64 Bit Version gestartet wird.
(Ich habe kontrolliert, dass InitialDir wirklich korrekt gesetzt wird).

Wenn ich dann im Laufe des Programmablaufes ein SaveDialog.Execute mache, steht das Verzeichnis immer auf ...\Win32\Debug, auch wenn ich die 64 Bit Version starte.

Was mache ich da falsch?

Dalai 2. Jun 2013 22:16

AW: SaveDialog - InitialDir
 
So ganz ohne Code aus deinem TForm.Create, wie das Verzeichnis gesetzt wird, sowie dem Teil, der SaveDialog.Execute aufruft, wird das schwierig ;).

MfG Dalai

Uwe Raabe 2. Jun 2013 22:47

AW: SaveDialog - InitialDir
 
Neuere Windows-Versionen merken sich den letzten Pfad des Dialogs abhängig von der Anwendung. Das InitialDir wird dabei ignoriert.

http://msdn.microsoft.com/en-us/libr...(v=vs.85).aspx

Man beachte die Beschreibung von pstrInitialDir.

Amateurprofi 2. Jun 2013 23:14

AW: SaveDialog - InitialDir
 
Zitat:

Zitat von Dalai (Beitrag 1217287)
So ganz ohne Code aus deinem TForm.Create, wie das Verzeichnis gesetzt wird, sowie dem Teil, der SaveDialog.Execute aufruft, wird das schwierig ;).

MfG Dalai

Na ja,
ich schrieb ja : Ich habe kontrolliert, dass InitialDir wirklich korrekt gesetzt wird.
Insofern dürfte es recht belanglos sein, wie das gemacht wird
trotzdem:
Delphi-Quellcode:
var s:string;
begin
   s:=ExtractFilePath(ParamStr(0));
   if s[Length(s)]='\' then SetLength(s,Length(s)-1);
   SaveDialog.InitialDir:=s;
end;
Und der Teil, der SaveDialog.Exceute aufruft:
Delphi-Quellcode:
begin
   if not SaveDialog.Execute then Exit(false);
   ...
   ...
end;

Amateurprofi 2. Jun 2013 23:18

AW: SaveDialog - InitialDir
 
Zitat:

Zitat von Uwe Raabe (Beitrag 1217288)
Neuere Windows-Versionen merken sich den letzten Pfad des Dialogs abhängig von der Anwendung. Das InitialDir wird dabei ignoriert.

http://msdn.microsoft.com/en-us/libr...(v=vs.85).aspx

Man beachte die Beschreibung von pstrInitialDir.

Danke, Uwe, das hat geholfen.
Löste nicht das Problem, aber half, die Ursachen zu verstehen.

UliBru 3. Jun 2013 11:40

AW: SaveDialog - InitialDir
 
Zitat:

If lpstrFile contains a path, that path is the initial directory.
Das scheint für alle Windows-Versionen zu gelten.
Man kann also die gewünschte InitialDir dem Dateinamen voransetzen, also z.B. in Form von

Delphi-Quellcode:
OpenDialog.Filename := '\MeinInitialDir\*.*';


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:03 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