Difference between revisions of "TCollection/de"
From Lazarus wiki
Jump to navigationJump to searchm |
m (Fixed syntax highlighting; deleted category included in page template) |
||
(8 intermediate revisions by 4 users not shown) | |||
Line 1: | Line 1: | ||
{{TCollection/de}} | {{TCollection/de}} | ||
− | + | ||
− | + | ||
− | Collections gehören zur objektorientierten Programmierung. | + | Zurück zur Seite [[code examples/de|Code Beispiele]]. |
− | Collections sind den Arrays ähnlich. | + | |
− | + | ||
− | + | Collections gehören zur objektorientierten Programmierung. | |
− | + | ||
− | + | Collections sind Klassen und den Arrays ähnlich. | |
− | + | ||
Erstellen der benötigten Klassen: | Erstellen der benötigten Klassen: | ||
− | <syntaxhighlight> | + | |
+ | <syntaxhighlight lang=pascal> | ||
unit uCollections; | unit uCollections; | ||
Line 30: | Line 31: | ||
bytAlter: byte; | bytAlter: byte; | ||
public | public | ||
+ | // überschreibt den von TCollection geerbten Construktor | ||
constructor Create(colCollection: TCollection); override; | constructor Create(colCollection: TCollection); override; | ||
property Vorname: string read strVorname write strVorname; | property Vorname: string read strVorname write strVorname; | ||
property Nachname: string read strNachname write strNachname; | property Nachname: string read strNachname write strNachname; | ||
property Alter: byte read bytAlter write bytAlter; | property Alter: byte read bytAlter write bytAlter; | ||
− | //.. | + | //.. beliebige viele Properties können folgen |
end; | end; | ||
Line 46: | Line 48: | ||
public | public | ||
constructor Create; | constructor Create; | ||
+ | // Die Funktion hängt an das Objekt vom Typ TListe | ||
+ | // ein Objekt vom Typ TCollectionItem hinzu. | ||
function Add: TCollectionItem; | function Add: TCollectionItem; | ||
property Items[index: integer]: TListItem read GetItems write SetItems; | property Items[index: integer]: TListItem read GetItems write SetItems; | ||
Line 59: | Line 63: | ||
function TListe.Add: TCollectionItem; | function TListe.Add: TCollectionItem; | ||
begin | begin | ||
− | // Es können | + | // Es können beliebig viele Objekte vom Typ TCollectionItem, |
− | // | + | // als Elemente angefügt werden. |
Result := TCollectionItem(inherited Add); | Result := TCollectionItem(inherited Add); | ||
end; | end; | ||
Line 92: | Line 96: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
− | + | ||
− | + | Das Objekt erstellen, füllen und auslesen: | |
− | <syntaxhighlight> | + | |
+ | <syntaxhighlight lang=pascal> | ||
procedure subVerarbeitung; | procedure subVerarbeitung; | ||
var | var | ||
Liste: TListe; | Liste: TListe; | ||
+ | strVorname: string; | ||
+ | |||
begin | begin | ||
.... | .... | ||
+ | // erstellt die Collection | ||
Liste := TListe.Create; | Liste := TListe.Create; | ||
... | ... | ||
+ | // füllt die die Collection mit Daten | ||
Liste.Add; | Liste.Add; | ||
Liste.Items[Liste.Count-1].Vorname := 'Frida'; // ein String | Liste.Items[Liste.Count-1].Vorname := 'Frida'; // ein String | ||
Line 118: | Line 127: | ||
... | ... | ||
+ | // liest ein Element der Collection aus | ||
+ | strVorname:= Liste.Items[0].Vorname; | ||
+ | |||
+ | ... | ||
+ | |||
+ | // gibt den von der Collection belegten Speicher wieder frei | ||
Liste.Free; | Liste.Free; | ||
Line 123: | Line 138: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
− | |||
− | |||
− | |||
− |
Latest revision as of 06:01, 29 February 2020
│
Deutsch (de) │
English (en) │
français (fr) │
polski (pl) │
Zurück zur Seite Code Beispiele.
Collections gehören zur objektorientierten Programmierung.
Collections sind Klassen und den Arrays ähnlich.
Erstellen der benötigten Klassen:
unit uCollections;
{$mode objfpc}{$H+}
interface
uses
Classes;
type
// TListItem
// TListitem ist eine Unterelement von TListe
TListItem = class(TCollectionItem)
private
strVorname: string;
strNachname: string;
bytAlter: byte;
public
// überschreibt den von TCollection geerbten Construktor
constructor Create(colCollection: TCollection); override;
property Vorname: string read strVorname write strVorname;
property Nachname: string read strNachname write strNachname;
property Alter: byte read bytAlter write bytAlter;
//.. beliebige viele Properties können folgen
end;
// TListe
// An TListe werden die Elemente von TListItem angehängt
TListe = class(TCollection)
private
function GetItems(index: integer): TListItem;
procedure SetItems(index: integer; Value: TListItem);
public
constructor Create;
// Die Funktion hängt an das Objekt vom Typ TListe
// ein Objekt vom Typ TCollectionItem hinzu.
function Add: TCollectionItem;
property Items[index: integer]: TListItem read GetItems write SetItems;
end;
implementation
// TListe
function TListe.Add: TCollectionItem;
begin
// Es können beliebig viele Objekte vom Typ TCollectionItem,
// als Elemente angefügt werden.
Result := TCollectionItem(inherited Add);
end;
constructor TListe.Create;
begin
inherited Create(TListItem);
end;
function TListe.GetItems(index: integer): TListItem;
begin
Result := TListItem(inherited Items[Index]);
end;
procedure TListe.SetItems(index: integer; Value: TListItem);
begin
Items[Index].Assign(Value);
end;
// TListItem
constructor TListItem.Create(colCollection: TCollection);
begin
if assigned(colCollection) and (colCollection is TListe) then
inherited Create(colCollection);
end;
end.
Das Objekt erstellen, füllen und auslesen:
procedure subVerarbeitung;
var
Liste: TListe;
strVorname: string;
begin
....
// erstellt die Collection
Liste := TListe.Create;
...
// füllt die die Collection mit Daten
Liste.Add;
Liste.Items[Liste.Count-1].Vorname := 'Frida'; // ein String
Liste.Items[Liste.Count-1].Nachname := 'Fritz'; // ein String
Liste.Items[Liste.Count-1].Alter := 22; // ein Byte
Liste.Add;
Liste.Items[Liste.Count-1].Vorname := 'Karl'; // ein String
Liste.Items[Liste.Count-1].Nachname := 'Hamster'; // ein String
Liste.Items[Liste.Count-1].Alter := 43; // ein Byte
...
// liest ein Element der Collection aus
strVorname:= Liste.Items[0].Vorname;
...
// gibt den von der Collection belegten Speicher wieder frei
Liste.Free;
end;