1、定义部分
type
    TChild = class
    public
      ChildID : Integer;
      ChildName : string;
      ChildOrder : Integer;
      AreaID : Integer;
      AreaName : string;
      FormName : string;
      URLName : string;
    end; type
    TFather = class
    public
      FatherID : Integer;
      FatherName : string;
      FatherOrder : Integer;
      ChildLength : integer;
      ChildList : array of TChild;
    end;  type
    TMenuOne = class
    public
      FCurSys : integer;
      FirstLength : Integer;      FirstMenu: array of TFather;      constructor Create(CursysType:Integer;CN:TADOConnection);
      destructor Destory;
      procedure InitMenu;
      procedure RefreshMenu(CursysType:Integer);
    private
      FQry : TADOQuery;
      FQry2: TADOQuery;  end;2、传入值报错位置   FirstMenu[i].FatherID := FQry.FieldByName('OPE_ID').AsInteger;
   FirstMenu[i].FatherName := FQry.FieldByName('Ope_Name').AsString;
   FirstMenu[i].FatherOrder := FQry.FieldByName('DISPLAY_ORDER').AsInteger;为什么?

解决方案 »

  1.   

    FQry 创建了吗
    FirstMenu 分配空间了吗
      

  2.   

    定义是动态数组:FirstMenu: array of TFather;有没有分配长度?
    如:SetLength(FirstMenu,10)
      

  3.   

    FirstMenu[i]对象没创建吧。
    你确定TChild = class,TFather = class不是TChild = record,TFather = record
      

  4.   

    是CLASS,我估计就是CLASS的问题
      

  5.   

    clss要create创实例才能用FirstMenu[i]:=TFather.create;
    用完了还要free不如用record
      

  6.   

    我现在用Class感觉的确有问题,测试过后不报错。但是赋值结果都等于最后一个赋值的结果。很纳闷。