رکوردهای متداخل در پاسکال

رکوردهای متداخل در پاسکال :
با توجه به اینکه فیلدهای یک رکورد میتوانند از هر نوع داده ای باشند
و رکورد نیز یک نوع داده ای است
لذا رکوردها نیز همانند حلقه ها میتوانند به صورت تو در تو تعریف و استفاده شوند
برای مثال در برنامه زیر از رکوردهای متداخل استفاده شده است
Type Name_Rec = Record Nmae : String[10]; Family : String[20]; end; Student_Rec = Record NF : Name_Rec; Age : Byte; end; var A: Student_Rec; begin A.NF.Name := 'Wiki'; A.NF.Family := 'Delphi'; A.Age : = 21; WriteLn(A.NF.Name); WiteLn(A.NF.Family); WriteLn(A.Age); ReadLn; end.
همچنین میتوانید در رکورد های متداخل نیز استفاده از دستور With فیلدهای مختلفی را پردازش نمایید
برای مثال به برنامه زیرتوجه کنید.
Type Name_Rec = Record Nmae : String[10]; Family : String[20]; end; Student_Rec = Record NF : Name_Rec; Age : Byte; end; var A: Student_Rec; begin With A do begin With NF do begin Name : = 'Wiki'; Family := 'Delphi'; end; Age:=21; end; with A do begin with NF do begin WriteLn(Name); WriteLn(Family); end; WitreLn(Age); end; ReadLn; end.
همچنین میتوانید از دستور With برای پردازش فیلدهای چند رکورد نیز استفاده نمایید
توجه داشته باشید که نیازی به متداخل بودن رکوردها نیست
برای مثال به برنامه زیر توجه کنید.
Type A = Record A1: Byte; A2:Integer; end; B= Record A = Record A1: Char; A2:Boolean; end; var V1 :A; V2:B; begin With V1,V2 do A1:=5; A2:=10; B1:='M'; B2:= True; WriteLn(A1); WriteLn(A2); WriteLn(B1); WriteLn(B2); end; ReadLn; end.
توجه داشته باشید که برنامه فوق ترتیب ذکر نام متغییرها مهم نیست
اما اگر هر دو رکورد دارای فیلدی با نام مشابه پاسکال فرض خواهد کرد که فیلد مربوطه متعلق به اولین متغییر است