آموزش پاسکال

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

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

با توجه به اینکه فیلدهای یک رکورد میتوانند از هر نوع داده ای باشند
و رکورد نیز یک نوع داده ای است
لذا رکوردها نیز همانند حلقه ها میتوانند به صورت تو در تو تعریف و استفاده شوند
برای مثال در برنامه زیر از رکوردهای متداخل استفاده شده است

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.

توجه داشته باشید که برنامه فوق ترتیب ذکر نام متغییرها مهم نیست
اما اگر هر دو رکورد دارای فیلدی با نام مشابه پاسکال فرض خواهد کرد که فیلد مربوطه متعلق به اولین متغییر است

[adinserter block="1"]
5/5 - (11 امتیاز)

نوشته های مشابه

دیدگاهتان را بنویسید

دکمه بازگشت به بالا