2012-05-31 94 views
1

我在用記錄陣列創建記錄數組時遇到問題。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"; 

不過,我得到:

Error: Illegal qualifier

在編譯的時候。

+1

請註明您所使用的編譯器。 –

+0

@如果我的回答對你有幫助,你是否願意接受它作爲正確答案,點擊答案左側的大「V」字? :) – brandizzi

回答

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; 

此外,帕斯卡字符串使用單引號分隔,所以你應該'Mathematics'取代"Mathematics"

+1

IOW,在原始文章'tfRec [0] .theirSubjects [0] [0] .subjectName:=「Mathematics」;'會工作(假設他們的主體[0]的長度已設置),但不是是指。 –

1

我想你應該改變這樣的:

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

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