На ваш вопрос невозможно ответить в его нынешнем виде, поскольку в нем отсутствуют некоторые важные детали.
- Является ли
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;