Sign in Join
Wiki copytemporary

Type Helper/de: what changed

Revision 0 to 1. Removed lines have a minus sign; added lines have a plus sign.

Title: Type Helper/de

OldNewLine
1+Zurück zu den [[Reserved words/de|reservierten Wörtern]].\
2+
3+=Type Helper= Mit dieser Funktion kann man Bezeichner um Funktionen erweitern.\
4+Die Funktion **Type Helper** wird zum Teil auch bei Standard-Typen von FPC verwendet. ZB. **`String.Split`**\
5+**Type Helper** steht erst ab FPC 3.0 zu Verfügung.
6+
7+## Beispiel
8+
9+Der Vektor wird um folgende Funktionen erweitert
10+
11+- Vektor skalieren.
12+- Über **.x** auf den Ersten Wert des Vektors zugreifen.
13+
14+Man sieht, ein **Type-Helper** ist eine sehr mächtige Funktion. Dieses Beispiel hier ist für OpenGL eine grosse Hilfe.
15+
16+``` pascal
17+program Project1;
18+
19+{$modeswitch typehelpers} // "Type Helper" aktivieren.
20+
21+type
22+ TVector2f = array[0..1] of Single; // Ein einfacher Vektor.
23+
24+ // Type-Helper für TVector2f.
25+ TVector2fHelper = Type Helper for TVector2f // Schlüssel "Type Helper" verwenden.
26+ private
27+ function GetX: Single; // Getter für Y
28+ procedure SetX(AValue: Single); // Setter für X
29+ public
30+ property x: Single read GetX write SetX; // Property für X
31+ procedure Scale(x, y: Single); // Die Erweiterungs-Funktion.
32+ end;
33+
34+function TVector2fHelper.GetX: Single; inline;
35+begin
36+ Result := Self[0];
37+end;
38+
39+procedure TVector2fHelper.SetX(AValue: Single); inline;
40+begin
41+ Self[0] := AValue;
42+end;
43+
44+procedure TVector2fHelper.Scale(x, y: Single); inline;
45+begin
46+ Self[0] *= x;
47+ Self[1] *= y;
48+end;
49+
50+// Hauptprogramm
51+var
52+ vec: TVector2f; // Variable normal definieren.
53+begin
54+ vec[0] := 1.5;
55+ vec[1] := 2.5;
56+
57+ vec.Scale(2.0, 3.0); // Erweiterte Funktion aufrufen.
58+
59+ WriteLn('X: ', vec[0]:10:5);
60+ WriteLn('Y: ', vec[1]:10:5);
61+ WriteLn;
62+ vec.x := vec.x + 1.0;
63+ WriteLn('X: ', vec[0]:10:5);
64+end.
65+```
66+
67+Ausgabe:
68+
69+``` pascal
70+X: 3.00000
71+Y: 7.50000
72+
73+X: 4.00000
74+```
75+
76+## Siehe auch
77+
78+- Übersichtseite [[Type/de|Type]]
79+
80+Autor: Mathias
81+
82+---
83+*From the Free Pascal wiki, page "Type Helper/de", as it stood on 2018-01-23 after a change by Mathias, out of the wiki's dump of 2024-05-26. Copyright stays with the author who wrote it, according to the old wiki's [[Licensing]] page. If you have concerns about this material, [message the admin](/wiki-contact).*
84+Category: Reserved words/de

Back to history