Delphi 7 opendialog содержит мусор в имени файла при использовании в Windows 10 - PullRequest
2 голосов
/ 07 января 2020

Это мой первый пост здесь, поэтому, пожалуйста, прости меня, если я делаю это неправильно.

Я использую Delphi 7 на моей Windows 10 машине. Когда я использую TOpenDialog, я получаю мусор в свойстве filename при закрытии. Это то, что я получаю обратно æ ‡ uÔÁ ™ ßðæRw. Я создал простую форму с кнопкой и полем редактирования, чтобы показать проблему здесь. Может ли кто-нибудь, пожалуйста, помогите мне.

Код ниже.

    procedure TForm1.Button1Click(Sender: TObject);
    begin
      opendialog1.Execute();
    end;

    procedure TForm1.OpenDialog1Close(Sender: TObject);
    begin
      edit1.Text := opendialog1.FileName;
    end;

1 Ответ

6 голосов
/ 07 января 2020

Не используйте событие OnClose в диалоговом окне. Это вызывается после того, как базовый объект диалога, которому принадлежат данные имени файла, был уничтожен.

Вместо этого отвечайте на диалог, когда возвращается Execute.

procedure TForm1.Button1Click(Sender: TObject);
begin 
  if opendialog1.Execute() then
    edit1.Text := opendialog1.FileName;
end;

Обратите внимание, что вы должны также проверьте возвращаемое значение Execute, чтобы обработать пользователь, отменяющий диалоговое окно.

...