我有这样一个记录:
type
  StuAns=record
    //答题卡类型:读出为A~B
    CardType:char;
    //缺考标志:如填涂则读出为1
    AbsentFlag:char;
    //准考证号
    ExamCertID:ExamCertIDType;
    //考试类型;文综为1、理综为2
    ExamType:char;
    //答案
    AnswerArea:array of char;
    //回车换行
    Cr:char;
    Lf:char;
  end;
声明StuAns的变量:
  StuAnswer:StuAns;
现在我想动态设定AnswerArea域的大小,如果用SetLength怎么设阿,还是有其它的办法。
那位高手能指导一下,谢谢啦

解决方案 »

  1.   

    可不可以把你的动态数组设成String的类型
      

  2.   

    setlength(stuanswer.answerarea,length);
    length是長度
      

  3.   

    统一楼上的说法
    即便是动态树组
    你再用的时候应该有一个大小
    setlength(stuanswer.answerarea,length);
    按照题目,length为答案选项的总数量
      

  4.   

    动态数组的名字只是用来指向一块地址,但实际使用的时候,一定要为他分配空间,这样才能使用,要不然你的东西住哪里放?心中一定要随时有“内存空间”这个概念,所有的东西都要放在内存中的。setlength(StuAns.AnswerArea,Length);建议再看看Object Pascal的书。
      

  5.   

    setlength(stuanswer.answerarea,length);
    有什么还搞不定吗
      

  6.   

    可以用以下的函数来改变数组的长度
    setlength(数组名称,length);
      

  7.   

    还有在结构中包含string类型和动态数组的,这样的结构如果在一个函数中定义一个私有变量的,请用FillChar初始化这个变量,如果不初始化,那么会造成引用非法的,这种错误很难发现,因为在堆栈中分配的结构变量不会清零,那么在引用结构中的String或者动态数组成员的时候会出现问题,有些函数会引用这样的变量,但是这样的变量并不存在。要记住,String类型的变量会存在一个看不见的结构的,结构中的String成员不拥有这样的结构。
    在类当中不存在上述问题。