TCollection/de
From Free Pascal wiki
Jump to navigationJump to search
│
Deutsch (de) │
English (en) │
français (fr) │
polski (pl) │
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
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;
function Add: TCollectionItem;
property Items[index: integer]: TListItem read GetItems write SetItems;
end;
implementation
// TListe
function TListe.Add: TCollectionItem;
begin
// Es können belibig viele unterschiedliche Unterelemente,
// die als TCollectionItem deklariert wurden 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.
Verwendung der Klassen:
procedure subVerarbeitung;
var
Liste: TListe;
begin
....
Liste := TListe.Create;
...
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
...
Liste.Free;
end;
--Olaf 16:21, 1 February 2014 (CET)