KHDM: Array of Char;
  I: Integer;
...
  SetLength(KHDM,12);
  FDBFStream.ReadBuffer(KHDM,12);
  FRec.KHDM := String(KHDM;//FRec.KHDM为一个STRING型
天啊,出错!!!
然后我又改成   For i:= High(KHDM) downto 0 do
    Begin
      FRec.KHDM := KHDM[i + 1] + FRec.KHDM;
    End;
居然还是出错!!
我改怎么办???

解决方案 »

  1.   

    string 可以直接赋值的。
    str : string;
    c : array[0..10] of char;str := c;这样也ok
      

  2.   

    就是呀,但是在我这段代码里就是出错,可能是前面的内存没有管理好前面有这样一段代码可能是它的问题,大家帮我看看:
    Type  PRecordStruct = ^TRecordStruct;
      TRecordStruct = record //记录结构
        KHDLDM, KHXLDM, CQXH, FSJE, FSSL, ZQLBDM, CZLBDM, GYLBDM, WTJG, YJBL: Real;
        CDBZ, WTLB, XJZP, HBDM, JYSDM, MMLXDM, BJZT, JKZT, CLBZ, LB: Char;
        GYDM: string[12];
        KHDM, KHXM, ZJZH, GDDM, GDXM, ZSGDDM, XDM, FSRQ, FSSJ, ZQDM,
        ZJLBDM, XWDM, HTXH, CJHM, KHQC, SFZH, TXDZ, DHHM: String;
      End;
      TArrayRecord = Array of PRecordStruct;  TMainTable = class(Tobject)
      private
        FArrayFieldElement: Array of TFieldElement;//字段结构
        procedure FieldValue(var FFElement: TFieldElement;
                  var FRec: TRecordStruct; FieldNo: integer);... ...
    implementation
    ... ...
      SetLength(tempNewData,100);
      GetMem(tempNewData,SizeOf(TArrayRecord));  FieldValue(FArrayFieldElement[j],temPNewData[i]^,j);
    想哭呀!!!
      

  3.   

    刚才的改一下
    TRecordStruct = record //记录结构
        KHDLDM, KHXLDM, CQXH, FSJE, FSSL, ZQLBDM, CZLBDM, GYLBDM, WTJG, YJBL: Real;
        CDBZ, WTLB, XJZP, HBDM, JYSDM, MMLXDM, BJZT, JKZT, CLBZ, LB: Char;
        GYDM: string;//////////这里改了一下
        KHDM, KHXM, ZJZH, GDDM, GDXM, ZSGDDM, XDM, FSRQ, FSSJ, ZQDM,
        ZJLBDM, XWDM, HTXH, CJHM, KHQC, SFZH, TXDZ, DHHM: String;
      End;
      

  4.   

    原因找出来了,但是没有解决,是刚这个记录定义时没有分配内存:
    SetLength(tempNewData,100);
    GetMem(tempNewData,SizeOf(TArrayRecord));
    这里出错了,其中定义为:
    tempNewData: TArrayRecord;
    该怎么改一下呀?
      

  5.   

    PRecordStruct = ^TRecordStruct;
    这个不要
    TArrayRecord = Array of TRecordStruct;
    这个这样改
    GetMem(tempNewData,SizeOf(TArrayRecord));
    这个不要
    呵呵,我试过了,不出错
      

  6.   

    KHDM: Array of Char;
      I: Integer;
    ...
      SetLength(KHDM,12);
      FDBFStream.ReadBuffer(KHDM[0],12);
      FRec.KHDM := String(KHDM)