Type Helper/de
From Lazarus wiki
Zurück zu den reservierten Wörtern.
Type Helper
Mit dieser Funktion kann man Bezeichner um Funktionen erweitern.
Die Funktion Type Helper wird zum Teil auch bei Standard-Typen von FPC verwendet. ZB. String.Split
Type Helper steht erst ab FPC 3.0 zu Verfügung.
Beispiel
Der Vektor wird um folgende Funktionen erweitert
- Vektor skalieren.
- Über .x auf den Ersten Wert des Vektors zugreifen.
Man sieht, ein Type-Helper ist eine sehr mächtige Funktion. Dieses Beispiel hier ist für OpenGL eine grosse Hilfe.
program Project1;
{$modeswitch typehelpers} // "Type Helper" aktivieren.
type
TVector2f = array[0..1] of Single; // Ein einfacher Vektor.
// Type-Helper für TVector2f.
TVector2fHelper = Type Helper for TVector2f // Schlüssel "Type Helper" verwenden.
private
function GetX: Single; // Getter für Y
procedure SetX(AValue: Single); // Setter für X
public
property x: Single read GetX write SetX; // Property für X
procedure Scale(x, y: Single); // Die Erweiterungs-Funktion.
end;
function TVector2fHelper.GetX: Single; inline;
begin
Result := Self[0];
end;
procedure TVector2fHelper.SetX(AValue: Single); inline;
begin
Self[0] := AValue;
end;
procedure TVector2fHelper.Scale(x, y: Single); inline;
begin
Self[0] *= x;
Self[1] *= y;
end;
// Hauptprogramm
var
vec: TVector2f; // Variable normal definieren.
begin
vec[0] := 1.5;
vec[1] := 2.5;
vec.Scale(2.0, 3.0); // Erweiterte Funktion aufrufen.
WriteLn('X: ', vec[0]:10:5);
WriteLn('Y: ', vec[1]:10:5);
WriteLn;
vec.x := vec.x + 1.0;
WriteLn('X: ', vec[0]:10:5);
end.
Ausgabe:
X: 3.00000
Y: 7.50000
X: 4.00000
Siehe auch
- Übersichtseite Type
Autor: Mathias