Difference between revisions of "Record/de"

From Free Pascal wiki
Jump to navigationJump to search
m
Line 12: Line 12:
 
type
 
type
 
   ExampleRecord = record
 
   ExampleRecord = record
       Values: array [1..200] of real;
+
       Values:   array [0..199] of Single;
 
       NumValues: integer; { enthält die aktuelle Anzahl von Punkten im Array }
 
       NumValues: integer; { enthält die aktuelle Anzahl von Punkten im Array }
       Average: real { enthält den Mittelwert der Feldwerte des Arrays };
+
       Average:   Single;  { enthält den Mittelwert der Feldwerte des Arrays }
 
   end;
 
   end;
  
 
   Member = record
 
   Member = record
       Firstname, Surname: string;
+
       Firstname, Surname:     string;
       Address: array [1..3] of string;
+
       Address:                 array [1..3] of string;
       Phone: integer;
+
       Phone:                   integer;
       Birthdate: TDateTime;
+
       Birthdate:               TDateTime;
 
       PaidCurrentSubscription: boolean;
 
       PaidCurrentSubscription: boolean;
 
   end;
 
   end;
 
</syntaxhighlight>
 
</syntaxhighlight>
  
Ein Record wird vom Programm als eine Einheit behandelt. Z.B. kann ein Record als Ganzes kopiert werden (vorausgesetzt die Kopie ist vom selben Typ):
+
Ein Record wird vom Programm als eine Einheit behandelt. ZB. kann ein Record als Ganzes kopiert werden (vorausgesetzt die Kopie ist vom selben Typ):
  
 
<syntaxhighlight>
 
<syntaxhighlight>
  Var a, b : Member;
+
  Var  
 +
  a, b: Member;
 
  Begin
 
  Begin
 
   { weise den Feldern im Record a jetzt Werte zu}
 
   { weise den Feldern im Record a jetzt Werte zu}
Line 40: Line 41:
 
Auf individuelle Felder kann zugegriffen werden, indem man einen Punkt zwischen dem Recordnamen und dem Feldnamen stellt, also folgendermaßen:
 
Auf individuelle Felder kann zugegriffen werden, indem man einen Punkt zwischen dem Recordnamen und dem Feldnamen stellt, also folgendermaßen:
 
<syntaxhighlight>
 
<syntaxhighlight>
   a.firstname := 'George';
+
   a.firstname               := 'George';
   a.surname := 'Petersen';
+
   a.surname                 := 'Petersen';
   a.phone := 789534;
+
   a.phone                   := 789534;
   a.PaidCurrentSubscription := TRUE;
+
   a.PaidCurrentSubscription := true;
 
</syntaxhighlight>
 
</syntaxhighlight>
  
 
Alternativ dazu, erreicht man sämtliche Felder auch mittels des [[With|WITH]]-Konstrukts:
 
Alternativ dazu, erreicht man sämtliche Felder auch mittels des [[With|WITH]]-Konstrukts:
 
<syntaxhighlight>
 
<syntaxhighlight>
   with a do
+
   with a do begin
  begin
+
       firstname               := 'George';
       firstname := 'George';
+
       surname                 := 'Petersen';
       surname := 'Petersen';
+
       phone                   := 789534;
       phone := 789534;
+
       PaidCurrentSubscription := true;
       PaidCurrentSubscription := True;
 
 
   end;  
 
   end;  
 
</syntaxhighlight>
 
</syntaxhighlight>
Line 60: Line 60:
 
<br>
 
<br>
 
<br>
 
<br>
 +
==Erweiterte Record==
 +
Es ist auch möglich '''procedure''' und '''function''' in '''record''' zu packen. <br>
 +
Dies muss aber mit '''$modeswitch''' aktiviert werden. <br>
 +
Der Aufbau ist etwa gleich wie bei '''class''' und '''object'''. Ein vererben ist '''nicht''' möglich
 +
<syntaxhighlight>
 +
{$modeswitch advancedrecords}
 +
 +
type
 +
  MyRecord = record
 +
  private
 +
    a, b, c: integer;
 +
    procedure proc;
 +
  public
 +
    x, y, z: single;
 +
    function func: String;
 +
  end;
 +
<syntaxhighlight>
 +
  
 
[[Category:Reserved words/de]]
 
[[Category:Reserved words/de]]
 
{{Data_types/de}}
 
{{Data_types/de}}

Revision as of 18:37, 14 February 2018

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

Zurück zu den Datentypen.

Ein hochstrukturierter Datentyp in Pascal. Im Deutschen ist für "Record" auch die Bezeichnung "Datensatz" üblich.

Im Gegensatz zu einfachen Datenstrukturen wie Arrays oder Sets, die aus lauter Elementen desselben Typs bestehen, kann ein Record aus einer Anzahl von Elementen aus unterschiedlichen Typen bestehen, und kann dadurch eine hohe Komplexität erreichen. Ein einzelner Teil eines Records wird als Feld (Field) bezeichnet.

Einige Beispiele für Records:

type
   ExampleRecord = record
      Values:    array [0..199] of Single;
      NumValues: integer; { enthält die aktuelle Anzahl von Punkten im Array }
      Average:   Single;  { enthält den Mittelwert der Feldwerte des Arrays  }
   end;

   Member = record
      Firstname, Surname:      string;
      Address:                 array [1..3] of string;
      Phone:                   integer;
      Birthdate:               TDateTime;
      PaidCurrentSubscription: boolean;
   end;

Ein Record wird vom Programm als eine Einheit behandelt. ZB. kann ein Record als Ganzes kopiert werden (vorausgesetzt die Kopie ist vom selben Typ):

 Var 
   a, b: Member;
 Begin
   { weise den Feldern im Record a jetzt Werte zu}
   ...
   ...
   b := a
 End;

Auf individuelle Felder kann zugegriffen werden, indem man einen Punkt zwischen dem Recordnamen und dem Feldnamen stellt, also folgendermaßen:

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

Alternativ dazu, erreicht man sämtliche Felder auch mittels des WITH-Konstrukts:

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

Records werden in Pascal häufig verwendet, um Datenelemente logisch zu gruppieren.

Erweiterte Record

Es ist auch möglich procedure und function in record zu packen.
Dies muss aber mit $modeswitch aktiviert werden.
Der Aufbau ist etwa gleich wie bei class und object. Ein vererben ist nicht möglich <syntaxhighlight> {$modeswitch advancedrecords}

type

 MyRecord = record
 private
   a, b, c: integer;
   procedure proc;
 public
   x, y, z: single;
   function func: String;
 end;

<syntaxhighlight>

Datentypen
Einfacher Datentyp Boolean | Byte |Cardinal | Char | Currency | Extended | Int64 | Integer | Longint | Pointer | Real | Shortint | Smallint | Word
Zusammengesetzter Datentyp Array | Class | Record | Set | String | ShortString