我在创建一个包含记录数组的记录数组时遇到了问题。
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";
但是,我得到了:
错误:非法限定符
尝试编译时。
答案 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';