Pascal中的记录数组和记录数组

时间:2012-05-31 13:07:59

标签: arrays record pascal

我在创建一个包含记录数组的记录数组时遇到了问题。

type
    SubjectsRec = array of record
        subjectName : String;
        grade : String;
        effort : Integer;
    end;
    TFileRec = array of record
        examinee : String;
        theirSubjects: array of SubjectsRec;
    end;

var
    tfRec: TFileRec;
    i: Integer;
begin
    setLength(tfRec,10);
    for i:= 0 to 9 do
    begin
       setLength(tfRec[i].theirSubjects,10);
    end;

在此之后,我希望通过这样做来分配值:

tfRec[0].theirSubjects[0].subjectName:= "Mathematics";

但是,我得到了:

  

错误:非法限定符

尝试编译时。

2 个答案:

答案 0 :(得分:2)

您将SubjectsRec声明为记录数组,然后将TheirSubjects字段声明为SubjectRecs的数组 - 也就是说,TheirSubjects是一个数组的数组记录。

有两种解决方案:

TheirSubjects声明为SubjectsRec类型,而不是array of subjectsRec

TFileRec = array of record
  examinee : string;
  theirSubjects: SubjectsRec;
end;

或将SubjectsRec声明为记录,而不是数组。这是我最喜欢的一个:

SubjectsRec = record
  subjectName : String;
  grade : String;
  effort : Integer;
end;
TFileRec = array of record
  examinee : string;
  theirSubjects: array of SubjectsRec;
end;

此外,Pascal中的字符串由单引号分隔,因此您应将"Mathematics"替换为'Mathematics'

答案 1 :(得分:1)

我认为你应该改变这个:

tfRec[0].theirSubjects[0].subjectName:= "Mathematics";

tfRec[0].theirSubjects[0].subjectName:= 'Mathematics';