Delphi2010中的GetDir在Windows 7下不工作?
在Delphi2010中,我有以下命令序列:Delphi2010中的GetDir在Windows 7下不工作?,delphi,windows-7,delphi-2010,topendialog,opendialog,Delphi,Windows 7,Delphi 2010,Topendialog,Opendialog,在Delphi2010中,我有以下命令序列: var netdir:string; .... OpenDialog1.InitialDir:=netdir; .... OpenDialog1.Execute... .... GetDir(0,netdir); .... 在执行OpenDialog之后,我应该在我完成的目录中包含字符串netdir 我的OpenDialog.Execute。在下一个OpenDialog中,执行它应该从这个开始 目录 它可以在XP上正
var netdir:string;
....
OpenDialog1.InitialDir:=netdir;
....
OpenDialog1.Execute...
....
GetDir(0,netdir);
....
在执行OpenDialog之后,我应该在我完成的目录中包含字符串netdir
我的OpenDialog.Execute。在下一个OpenDialog中,执行它应该从这个开始
目录
它可以在XP上正常工作,但在Windows7上不行?
它总是从安装程序的目录开始
你知道哪里不对吗
谢谢。你的问题目前无法回答,因为它缺少几个关键细节
netdir
是一个全局常量,还是它偶尔会超出范围netdir
设置为OpenDialog1.Execute
之前的值GetDir
return(如标题所示),还是关于如何使打开的对话框记住上次访问的目录(如正文所示)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;
你的问题目前无法得到回答,因为它缺少几个关键细节
netdir
是一个全局常量,还是它偶尔会超出范围netdir
设置为OpenDialog1.Execute
之前的值GetDir
return(如标题所示),还是关于如何使打开的对话框记住上次访问的目录(如正文所示)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;
如果你不想打开对话框,你可以按照下面的步骤在你的程序下获取dir
yourdir:=ExtractFilePath(Application.ExeName);
我已经在Vista中完成了它,并且它工作正常。如果你不想打开Dialog,你可以按照下面的步骤在你的程序下获得dir
yourdir:=ExtractFilePath(Application.ExeName);
我已经在Vista中完成了这项工作,并且工作正常。这就是问题的解决方案
openDialog1.Options := [ofFileMustExist];
if openDialog1.Execute then
begin
end;
这就是问题的解决办法
openDialog1.Options := [ofFileMustExist];
if openDialog1.Execute then
begin
end;