Record/fi

From Free Pascal wiki

Deutsch (de) English (en) español (es) suomi (fi) français (fr) magyar (hu) português (pt) русский (ru)

Record eli tietue on hyvin jäsennelty tietotyyppi. Niitä käytetään laajalti Pascal:ssa. Niillä kootaan tiedot yhteen loogisesti eli se on loogisesti yhteenkuuluvien tietoalkioiden muodostama kokonaisuus.


Monet yksinkertaiset tietorakenteet, kuten taulukot tai joukot koostuvat osista (tietoalkioista) jotka kaikki ovat samaa tyyppiä. Tietue eli Record voi koostua monista eri osista, ne voi olla eri tyyppiä ja ne voivat olla valtavan monimutkaisia. Tietueen osia kutsutaan kentiksi.

Record on Pascalin varattu sana.

Määrittely

Vakiorakenne

type
	TMember = record
		firstname, surname : string;
		address: array [1..3] of string;
		phone: string;
		birthdate: TDateTime;
		paidCurrentSubscription: boolean
	end;

Muuttuva rakenne

Vieläkin monimutkaisempia rakenteita voi olla, esim:

type
	maritalStates = (single, married, widowed, divorced);
	TPerson = record
		(* CONSTANT PART *)
		(* of course records may be nested *)
		name: record
			first, middle, last: string;
		end;
		sex: (male, female);
		(* date of birth *)
		dob: TDateTime;
		(* VARIABLE PART *)
		case maritalStatus: maritalStates of
			single: ( );
			married, widowed: (marriageDate: TDateTime);
			divorced: (marriageDate, divorceDate: TDateTime;
				isFirstDivorce: boolean)			
	end;

Muuttuvan osan kentät ovat käytettävissä vain jälkeen tehtävän riippuen muuttujan. Se ei vahingoita onko kenttä marriageDate määritetty monta kertaa.

Osoittaminen

Kentät

Yksittäisiä kenttiä osoitetaan laittamalla piste tietueen nimen ja kentän nimen väliin.

	a.firstname := 'George';
	a.surname := 'Petersen';
	a.phone := '789534';
	a.paidCurrentSubscription := true;

Vaihtoehtoisesti kokonaista sarjaa kenttiä voidaan osoittaa käyttämällä With-rakennetta:

with a do
	begin
		firstname := 'George';
		surname := 'Petersen';
		phone := '789534';
		paidCurrentSubscription := true
	end;

Ilmentymä

A tietuetta käsitellään ohjelmassa yhtenä kokonaisuutena. Esimerkiksi koko tietue voidaan kopioida (jos kopio on samaa tyyppiä) näin:.

var
	a, b: TMember;

(* main program *)
begin
	{ ... assign values to the fields in record a .. }
	b := a
	{ now b holds a copy of a }
	{ don't get confused with references: }
	{ a and b still point to different entities of TMember }
end.


Vakiotietueet

type
  //tietueen määrittely
  TSpecialDay = record
    DayName : string;
    month : integer;
    day : integer;
  end;

const

  // TSpecialDay vakiomäärittely
  ChristmasDay : TSpecialDay = 
  (
    DayName : 'Christmas Day';
    month : 12;
    day : 25;
  );

Katso myös

  • Records, tutorial that covers records


Navikointipalkki: datatyypit
Yksinkertaiset datatyypit

boolean byte cardinal char currency extended int64 integer longint pointer real shortint smallint word

Monimutkaiset datatyypit

array class object record set string shortstring