我做的是一个工程下的
多窗口界面,就是说,main.pas和unit.pas是一个工程
下的,本来已经在main下定义了mypath而且在unit中也
使用了use main;但为什么编译时总说mypath没有定义,
各位同学帮帮忙,我很急(是领导急所以我也急……我怕他开我)
以下是main.pas的部分代码
procedure Tmainform.FormCreate(Sender: TObject);begin
    mypath:=ExtractFilePath(paramstr(0));
    shortdateformat:='yyyy/mm/dd';
end;procedure Tmainform.Button1Click(Sender: TObject);
begin
  bookform.show;
end;procedure Tmainform.Button2Click(Sender: TObject);
begin
   readerform.show;
end;procedure Tmainform.Button3Click(Sender: TObject);
begin
  lendform.show;
end;procedure Tmainform.Button4Click(Sender: TObject);
begin
  close;
end;procedure Tmainform.Button5Click(Sender: TObject);
begin
  queryform.show;
end;end.以下是unit.pas的部分代码
unit Unit1;interfaceuses
  SysUtils, Classes, ADODB, DB;type
  TDataModuleADO = class(TDataModule)
    ADOConnection1: TADOConnection;
    ADOTable1: TADOTable;
    ADOQuery1: TADOQuery;
    procedure DataModuleCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;var
  DataModuleADO: TDataModuleADO;implementation
uses main;
{$R *.dfm}procedure TDataModuleADO.DataModuleCreate(Sender: TObject);
begin
  ADOConnection1.ConnectionString:='Provider=Microsoft.Jet.OLEDB.4.0;datasource='+mypath+'data\bookmanage.mdb;'+'Persist Security info=false';
  ADOQuery1.Connection:=ADOConnection1;
  ADOTable1.Connection:=ADOConnection1;
end;end.

解决方案 »

  1.   

    我晕了
    mypath是不是全局变量啊??
    好象你没有再MAIN中申明哦
    我疯了
      

  2.   

    我是在implemetation中定义的implemetationvar
      mypath:string;
    ……
      

  3.   

    同意楼上的。
    定义在public中看看。
      

  4.   

    首先你的在public中定义mypath,调用时要加上main的窗体对象名称:像这样mainform1.mypath,就对了。
    ADOConnection1.ConnectionString:='Provider=Microsoft.Jet.OLEDB.4.0;datasource='+mainform1.mypath+'data\bookmanage.mdb;'+'Persist Security info=false';