Was für eine Unit muss ich einbinden.
Als Muster habe ich syshelph.inc genommen, das es aber eine inc ist, kann ich die Uses nicht finden.
Code: Alles auswählen
type
TStringHelper = Type Helper for AnsiString
end;
Code: Alles auswählen
type
TStringHelper = Type Helper for AnsiString
end;
Code: Alles auswählen
{$modeswitch typehelpers}
Danke das wars.theo hat geschrieben:Steht eig. hier http://wiki.freepascal.org/FPC_New_Feat ... pe_helpersCode: Alles auswählen
{$modeswitch typehelpers}
Code: Alles auswählen
type
TIntHelper = Type Helper for Integer
public
procedure Add;
end;
procedure TIntHelper.Add;
begin
self += 1;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
i:Integer;
begin
i:=1;
i.Add;
ShowMessage(IntToStr(i));
end;
Code: Alles auswählen
type
TVector = array[0..2] of Single;
TVectorHelper = Type Helper for TVector
public
procedure Add;
end;
procedure TVectorHelper.Add;
begin
self[0] += 1.0;
self[1] += 1.0;
self[2] += 1.0;
end;
{ TIntHelper }
procedure TIntHelper.Add;
begin
self += 1;
end;
{ TForm1 }
procedure TForm1.Button1Click(Sender: TObject);
var
i:Integer;
v:TVector;
begin
i:=1;
i.Add; // Ohne Probleme.
ShowMessage(IntToStr(i));
v.Add; // Da kommt der Fehler.
end;
Kommt glaube ich nur an, wenn du dich vorher registriert hast mit deinem Absender.Mathias hat geschrieben:Ich habe denen eine Mail geschrieben, ich hoffe Google hat gut übersetzt.
Nicht einen Bug Tracker, aber einen Eintrag in den Bug Tracker, mit einem möglichst einfachen Beispiel, welches das Problem zeigt und der Fehlermeldung. http://bugs.freepascal.org/Mathias hat geschrieben:Habe ich das richtig verstanden, ich sollte einen Bug-Tracker erstellen ?
http://lists.freepascal.org/pipermail/f ... hread.html
Code: Alles auswählen
type
TVector0 = array[0..2] of Single; // Fehler bei v.Add. "unit1.pas(67,5) Error: Illegal qualifier"
TVector1 = array of Single; // geht
TVector2 = record // Fehler bei public, "unit1.pas(44,3) Error: Type "TVector2" cannot be extended by a type helper"
a, b, c:single;
end;
TVector3 = array of TVector0; // geht
TVector4 = string; // geht
TVector5 = TButton; // Fehler bei public, "unit1.pas(45,3) Error: Type "TButton" cannot be extended by a type helper"
TVector6 = array of TButton; // geht
TVector = TVector1;
{ TVectorHelper }
TVectorHelper = Type Helper for TVector
public
procedure Add;
end;
implementation
{$R *.lfm}
{ TVectorHelper }
procedure TVectorHelper.Add;
begin
self[0] += 1.1;
self[1] += 1.1;
self[2] += 1.1;
end;
{ TForm1 }
procedure TForm1.Button1Click(Sender: TObject);
var
v:TVector;
begin
SetLength(v, 3);
v.Add;
ShowMessage(FloatToStr(v[0]));
end;
Code: Alles auswählen
type
TVector = array[0..2] of Single;
TVectorHelper = Type Helper for TVector
public
procedure Add;
end;
procedure TVectorHelper.Add;
begin
end;
procedure TForm1.Button1Click(Sender: TObject);
var
v:TVector;
begin
v.Add; // "unit1.pas(53,5) Error: Illegal qualifier"
end;