OpenDialog1.Execute; 在2000下没事 ,在XP下报错:access violation at address..

解决方案 »

  1.   

    还有这种事?
    你的OpenDialog1是动态创建的么?
      

  2.   

    不是呀,不过它是放在一动态创建的窗体上的。我这事挺急,有别的方法先用上也行,有别的东西能实现OpenDialog吗?
      

  3.   

    unit CTLogin;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls, ExtCtrls,dm;type
      Tloginform = class(TForm)
        Panel1: TPanel;
        Label1: TLabel;
        Edit1: TEdit;
        Button3: TButton;
        OpenDialog1: TOpenDialog;
        procedure FormKeyPress(Sender: TObject; var Key: Char);
        procedure Button3Click(Sender: TObject);
        procedure OpenDialog1CanClose(Sender: TObject; var CanClose: Boolean);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      loginform: Tloginform;implementation
    {$R *.dfm}procedure Tloginform.FormKeyPress(Sender: TObject; var Key: Char);
    begin
    if key=#13 then
    begin
    perform(wm_nextdlgctl,0,0);
    end;
    if key=#27 then
    close;
    end;procedure Tloginform.Button3Click(Sender: TObject);
    begin
      OpenDialog1.Filter := '备份文件 (*.mdb)|*.mdb|所有文件 (*.*)|*.*';
      OpenDialog1.Execute;
    end;procedure Tloginform.OpenDialog1CanClose(Sender: TObject;
      var CanClose: Boolean);
    var mypath:string;
    begin
    with DataModule1.ADOConnection1 do
    begin
      close;
      mypath:=OpenDialog1.FileName;
      ConnectionString:='Provider=Microsoft.Jet.OLEDB.4.0;User ID=admin;Data Source='+mypath+';'
      +'Persist Security Info=False;Jet OLEDB:Database Password=""';
      try
      open;
      self.close;
      except
      Application.MessageBox('连接出错!','提示',MB_OK);
      end;
    end;
    end;end.
      

  4.   

    procedure Tloginform.OpenDialog1CanClose(Sender: TObject;
      var CanClose: Boolean);
    这块一点就不行了:access violation at address..,
    其实数据库也连上了,后面的程序正常,但是关闭整个程序时:runtime...
      

  5.   

    DataModule1.ADOConnection1检查这个对象...