bin neu hier im Forum und in FPC sowieso. ich versuche mich mal darin die generics zu verstehen.
die generischen Listen sind ja in der Unit fgl und man erkennt darin auch die zu verwendende Syntax.
meine instalölierte Version ist:
Version # : 0.9.29
Datum : 2010-10-17
FPC-Version : 2.4.3
SVN-Revision : 27722
Meine ersten Versuche:
in einer Unit Unit2 eine Klasse
Code: Alles auswählen
type
generic TMyPoint<T> = class(TObject)
private
FX: T;
FY: T;
function get_X: T;
function get_Y: T;
procedure set_X(value: T);
procedure set_Y(value: T);
public
constructor Create; overload;
constructor Create(x: T; y: T); overload;
property X: Double read get_X write set_X;
property Y: Double read get_Y write set_Y;
function ToStr: String;
end;
constructor TMyPoint.Create;
begin
inherited Create;
end;
constructor TMyPoint.Create(x: T; y: T);
begin
self.FX := x; self.FY := y;
end;
function TMyPoint.get_X: T;
begin
result := self.FX;
end;
procedure TMyPoint.set_X(value: T);
begin
self.FX := value;
end;
function TMyPoint.get_Y: T;
begin
result := self.FY;
end;
procedure TMyPoint.set_Y(value: T);
begin
self.FY := value;
end;
function TMyPoint.ToStr: String;
var
extX: Extended;
extY: Extended;
begin
extX := Extended(self.FX);
extY := Extended(self.FY);
result := 'TMyPoint{' + FloatTostr(extX) + '; ' + FloatTostr(extY) + '}';
end;
Code: Alles auswählen
uses ... fgl;
...
procedure TForm1.Button1Click(Sender: TObject);
type
TMyPointDbl = specialize TMyPoint<Double>;
TMyPointDblList = specialize TFPGList<TMyPointDbl>; //Syntax error ";" expected but ">" found
var
i: Integer;
p: TMyPointDbl;
l: TMyPointDblList;
begin
l := TMyPointDblList.Create;
for i := 0 to 9 do begin
p := TMyPointDbl.Create(1.2 + i, 3.4 + i);
//l.Add(p);
end;
//p := TMyPointDbl(l[0]);
MsgBox(p.ToStr);
for p in l do begin
p := TMyPoint(pp);
MsgBox(p.ToStr);
end;
end;
kann mir jemand helfen?
braucht man eine neuere FPC-Version?
vielen dank im voraus
OlimilO