原代码:unit main;interfaceuses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Menus, StdActns, ActnList, ImgList, ComCtrls, ToolWin;type
  TF_main= class(TForm)
    MainMenu1: TMainMenu;
    ActionList1: TActionList;
    ImageList1: TImageList;
    WindowCascade1: TWindowCascade;
    WindowMinimizeAll1: TWindowMinimizeAll;
    WindowTileHorizontal1: TWindowTileHorizontal;
    WindowTileVertical1: TWindowTileVertical;
    M_system: TMenuItem;
    M_connect: TMenuItem;
    M_disconnect: TMenuItem;
    N1: TMenuItem;
    M_exit: TMenuItem;
    M_manager: TMenuItem;
    M_add: TMenuItem;
    M_change: TMenuItem;
    M_search: TMenuItem;
    M_window: TMenuItem;
    M_cascade: TMenuItem;
    M_tile_h: TMenuItem;
    M_tile_v: TMenuItem;
    M_mini_all: TMenuItem;
    M_help: TMenuItem;
    M_about: TMenuItem;
    StatusBar1: TStatusBar;
    ToolBar1: TToolBar;
    ToolButton1: TToolButton;
    ToolButton2: TToolButton;
    ToolButton3: TToolButton;
    ToolButton4: TToolButton;
    ToolButton5: TToolButton;
    ToolButton6: TToolButton;
    ToolButton7: TToolButton;
    ToolButton8: TToolButton;
    ToolButton9: TToolButton;
    ToolButton10: TToolButton;
    ToolButton11: TToolButton;
    ToolButton12: TToolButton;
    ToolButton13: TToolButton;
    procedure M_connectClick(Sender: TObject);
    procedure M_disconnectClick(Sender: TObject);
    procedure M_exitClick(Sender: TObject);
    procedure M_addClick(Sender: TObject);
    procedure M_changeClick(Sender: TObject);
    procedure M_searchClick(Sender: TObject);
    procedure M_aboutClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;var
  F_main: TF_main;implementation
 {$R *.dfm}
uses
 About, login, DataModule, add, change, search;procedure TF_main.M_connectClick(Sender: TObject);
begin
 F_login.ShowModal;
 if login then
 begin
   M_connect.Enabled:=false;
   TB_connect.Enabled:=false;
   M_disconnect.Enabled:=True;
   TB_disconnect.Enabled:=True;
   M_add.Enabled:=True;
   TB_add.Enabled:=True;
   M_change.Enabled:=True;
   TB_change.Enabled:=True;
   M_search.Enabled:=True;
   TB_search.Enabled:=True;
   StatusBar.Panels[1].Text:='已经连接到服务器:'+F_login.i_server_add.Text;
   end;
end;
procedure TF_main.FormCreate(Sender: TObject);
begin
  //初始化
  login:=False;
  M_connect.Enabled:=True;
  TB_connect.Enabled:=True;
  M_disconnect.Enabled:=False;
  TB_disconnect.Enabled:=False;
  M_add.Enabled:=False;
  TB_add.Enabled:=False;
  M_change.Enabled:=False;
  TB_change.Enabled:=False;
  M_search.Enabled:=False;
  TB_search.Enabled:=False;
  StatusBar1.Panels[1].Text:='尚未登录服务器!请按F2登录。';
end;procedure TF_main.M_disconnectClick(Sender: TObject);
var
  i:=integer;
begin
  for i:=MDIChildCount-1 downto 0 do
   F_main.MDIChildren[i].Close;
  DataModule1.Database.Connected:=False;
  FormCreate(nil);
end;procedure TF_main.M_exitClick(Sender: TObject);
begin
 Close;
end;procedure TF_main.M_addClick(Sender: TObject);
begin
  Application.CreateForm(TF_add,F_add);
end;procedure TF_main.M_changeClick(Sender: TObject);
begin
 Application.CreateForm(TF_change,F_change);
end;procedure TF_main.M_searchClick(Sender: TObject);
begin
 Application.CreateForm(TF_search,F_search);
end;procedure TF_main.M_aboutClick(Sender: TObject);
begin
  AboutBox.ShowModal;
end;end.
unit login;interfaceuses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;type
  TF_login = class(TForm)
    Edit1: TEdit;
    Edit2: TEdit;
    ComboBox1: TComboBox;
    Button1: TButton;
    Button2: TButton;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;var
  F_login: TF_login;implementationuses DataModule1, crypt, main;{$R *.dfm}procedure TF_login.Button1Click(Sender: TObject);
var
  passwd, passwrd:String;
begin
  With DataModule do
  begin
    Database.Connected:=False;
    Database.Params.Values['SERVER NAME']:='Localhost:E:\Delphi\Delphi6A\ib6\server\MISDB';
    Database.Connected:=True;
    T_user.Filter:='ID=BGS';
    T_user.Filtered:=True;
    T_user.Open;
    if T_user.RecordCount=1 then
    begin
      passwd:='biguosheng';
      if length(passwd)>5 then
      begin
        passwd:=Copy(passwd+passwd,1,10);//统一密码长度
        passwd:=Encrypt(passwd,123);//加密
      end;
      passwrd:=T_user['PASSWD'];
      if (passwrd=passwd) and (T_user['AUTHORITY']='3') then
      Form1.login:=True
      else
       Application.MessageBox('请重新输入密码。'+#13+'注意大小写!','密码错误',MB_OK);
    end
    else
      Application.MessageBox('请确认用户名大小写是否正确!','无此用户',MB_OK);
    T_user.Close;
  end;
  if  Form1.login then F_login.Close;
end;end.
[Error] login.pas(58): Undeclared identifier: 'login'
[Error] login.pas(66): Undeclared identifier: 'login'
[Fatal Error] main.pas(68): Could not compile used unit 'login.pas'

解决方案 »

  1.   

    看form1的单元, form1没有login成员变量
      

  2.   

    login变量没有定义,
    login是不是Form1窗体的全局变量
      

  3.   

    Application.MessageBox('请重新输入密码。'+#13+'注意大小写!','密码错误',MB_OK);#13 是什么?
      

  4.   

    1,删除你所有生成的.dcu编译文件。
    2,在你的工程文件里看是否存在 login.pas。若没有,就加入。
    3,重新BUILD一下应该就好了。
      

  5.   

    你有Form1这个窗体吗?这在这个窗体里定义变量login了吗?定义的是否是全局变是变.要不然你怎么引用呀
      

  6.   

    procedure TF_main.M_connectClick(Sender: TObject);
    begin
     F_login.ShowModal;
     if login then
     begin
       M_connect.Enabled:=false;
       TB_connect.Enabled:=false;
       M_disconnect.Enabled:=True;
       TB_disconnect.Enabled:=True;
    上面的login没有定义啊,
    又:
          if (passwrd=passwd) and (T_user['AUTHORITY']='3') then
          Form1.login:=True
          else
           Application.MessageBox('请重新输入密码。'+#13+'注意大小写!','密码错误',MB_OK);
        end
        else
          Application.MessageBox('请确认用户名大小写是否正确!','无此用户',MB_OK);
        T_user.Close;
      end;
      if  Form1.login then F_login.Close;
    中的form1在哪里定义的?