Type Helper/de
From Lazarus wiki
Jump to navigationJump to search
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