TCollection/de
From Free Pascal wiki
Jump to navigationJump to search
│
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;