//数组的类型为:
//定义数据集类型的指针,每门新班级课程的信息
type
  PKcInfo=^TKcInfo;
  TKcInfo=record
    zxkcmc:string;  //执行课程名称
    zxkcdm:string;  //执行课程代码
    xs:string;      //学时
    xf:string;      //学分
    sjxq:string;    //实际学期
end;///////////////////错误如下://////////////
//在窗体卸载的时候提示错误:invalid pointer opration

解决方案 »

  1.   

    //详细代码如下:
      with AqryXbjkc do
      begin
        close;
        Parameters.ParamByName('bdxh').Value:=bdxh;
        open;    
        //加载新课程信息
        SetLength(NewKcInfo,RecordCount);
        cmbXbjkc.Items.Clear;
        first;
        for i:=0 to RecordCount do
        begin
          if i=0 then            //新课程的combobox中加入一个空行,方便用户取消匹配的课程
          begin
            cmbXbjkc.Items.Add('');
            new(NewKcInfo[i]);
            NewKcInfo[i]^.zxkcmc:='';
            NewKcInfo[i]^.zxkcdm:='';
            NewKcInfo[i]^.xs:='';
            NewKcInfo[i]^.xf:='';
            NewKcInfo[i]^.sjxq:='';
          end
          else
          begin
            cmbXbjkc.Items.Add(trim(fieldbyname('执行课程名称').asstring));
            new(NewKcInfo[i]);
            NewKcInfo[i]^.zxkcmc:=trim(fieldbyname('执行课程名称').asstring);
            NewKcInfo[i]^.zxkcdm:=trim(fieldbyname('执行课程代码').asstring);
            NewKcInfo[i]^.xs:=trim(fieldbyname('学时').asstring);
            NewKcInfo[i]^.xf:=trim(fieldbyname('学分').asstring);
            NewKcInfo[i]^.sjxq:=trim(fieldbyname('实际学期').asstring);
          end;  
          next;
        end;  
      end;
      

  2.   

    NewKcInfo定义在哪里,是否为局部变量
    窗体卸载时作了什么操作,把这段代码贴出来.
      

  3.   

    是指针错误, RecordCount -1
      

  4.   

    或者SetLength(NewKcInfo,RecordCount+1);
      

  5.   

    type
      PKcInfo=^TKcInfo;
      TKcInfo=record
        zxkcmc:string;  //执行课程名称
        zxkcdm:string;  //执行课程代码
        xs:string;      //学时
        xf:string;      //学分
        sjxq:string;    //实际学期
    end;----------------
    用到指針地情況 最好不要用string類型 因為可能出問題 我遇到過
    用 xf: array[0..10] of Char; 使用固定長度的數組最好 雖然用起來比較麻煩 但是安全。
      

  6.   

    beyondtkl(大龙驹<*学习祖国医学中,国粹,路在何方?*>) 
    是正解
      

  7.   

    RecordCount  有问题你没有释放的代码,不知还有没其他错
      

  8.   

    SetLength(NewKcInfo,RecordCount);
    ....
    new(NewKcInfo[i]);
    已经用setLength分配了内存,何必用再用new分配内存?是不是这个问题呢?
      

  9.   

    SetLength(NewKcInfo,RecordCount + 1);