Difference between revisions of "TCollection/de"
From Lazarus wiki
Jump to navigationJump to searchm (Fixed syntax highlighting; deleted category included in page template) |
|||
Line 1: | Line 1: | ||
{{TCollection/de}} | {{TCollection/de}} | ||
− | + | ||
− | Zurück zur Seite [[code examples/de|Code Beispiele]]. | + | |
− | + | Zurück zur Seite [[code examples/de|Code Beispiele]]. | |
− | Collections gehören zur objektorientierten Programmierung. | + | |
− | Collections sind Klassen und 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 92: | Line 96: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
− | + | ||
Das Objekt erstellen, füllen und auslesen: | Das Objekt erstellen, füllen und auslesen: | ||
− | <syntaxhighlight> | + | |
+ | <syntaxhighlight lang=pascal> | ||
procedure subVerarbeitung; | procedure subVerarbeitung; | ||
var | var | ||
Line 133: | 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;