您的问题无法按现状回答,因为它缺少几个关键细节。
-
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;