1

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

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";

但是,我得到:

错误:非法限定符

尝试编译时。

4

2 回答 2

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'.

于 2012-05-31T13:40:47.437 回答
1

我认为你应该改变这个:

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

tfRec[0].theirSubjects[0].subjectName:= 'Mathematics';
于 2012-07-10T01:55:38.487 回答