我在Delphi2010中有以下命令序列:
var netdir:string;
....
OpenDialog1.InitialDir:=netdir;
....
OpenDialog1.Execute...
....
GetDir(0,netdir);
....
执行OpenDialog后,我应该在字符串netdir中找到我完成的目录 我的OpenDialog.Execute。在下一个OpenDialog.Execute中,它应该从那开始 目录。 它适用于XP,但不适用于Windows 7? 它始终从安装程序的目录开始。
知道可能出现什么问题吗?
感谢。
答案 0 :(得分:2)
您的问题不能按原样回答,因为它缺少几个关键细节。
netdir
是一个全局常量,还是偶尔会超出范围?netdir
设置为OpenDialog1.Execute
之前的某个内容?GetDir
返回(如标题所示)或关于如何使打开的对话框记住最后访问过的目录(正如身体内容所示)的问题?我将假设1)netdir
是一个全局常量,2)你最初没有设置它,3)你希望打开的对话框记住最后访问过的文件夹。因此你有类似
unit Unit3;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs;
type
TForm3 = class(TForm)
OpenDialog1: TOpenDialog;
procedure FormClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form3: TForm3;
var
netdir: string;
implementation
{$R *.dfm}
procedure TForm3.FormClick(Sender: TObject);
begin
OpenDialog1.InitialDir := netdir;
OpenDialog1.Execute;
GetDir(0, netdir);
end;
end.
然后解决方案是让Windows记住您的目录,即只需执行
procedure TForm3.FormClick(Sender: TObject);
begin
OpenDialog1.Execute;
end;
一个人!但为什么你的方法不起作用?好吧,GetDir
没有返回你想要的东西。如果需要明确控制,请执行
procedure TForm3.FormClick(Sender: TObject);
begin
OpenDialog1.InitialDir := netdir;
OpenDialog1.Execute;
netdir := ExtractFilePath(OpenDialog1.FileName)
end;
答案 1 :(得分:2)
如果你不想操作,你可以按照以下方式在你的程序下获得目录。
yourdir:=ExtractFilePath(Application.ExeName);
我已经在Vista中完成了它的工作。
答案 2 :(得分:0)
这是问题的解决方案
openDialog1.Options := [ofFileMustExist];
if openDialog1.Execute then
begin
end;