ich schreibe gerade an einer Unit, die mit Polynomen rechnen kann. Weil ich mich nicht auf eine Genauigkeit festlegen wollte, habe ich einen generischen Typ verwendet, der dann später, je nach Anwendung, durch Single, Double oder Extendet ersetzt werden soll.
Aber Zum Beispiel FloatToStr kann nicht auf den generischen Typ angewendet werden, ich bekomme den Fehler "Error: Can't determine which overloaded function to call".
Man beachte folgenden Code:
Code: Alles auswählen
unit PolynomUtil;
{$mode objfpc}{$H+}
{$modeswitch advancedrecords}
interface
uses
Classes, SysUtils, StrTransformErr;
type
generic Polynom<Precision> = class
public
type TPolynom = Array of Precision;
class function ToString(const P : TPolynom) : String; overload;
end;
generic TPolynom<Precision> = Array of Precision;
implementation
class function Polynom.ToString(const P :TPolynom) : String;
var i : integer;
begin
Result := '';
i := Length(P)-1;
if (i = -1) then exit;
if (P[i] >= 0) then begin
Result := FloatToStr(P[i]) + ' X^' + IntToStr(i);
i := i-1;
end;
for i := i downto 0 do if (P[i] < 0) then Result := Result + ' - ' + FloatToStr(-P[i]) + ' X^' + IntToStr(i)
else Result := Result + ' + ' + FloatToStr(P[i]) + ' X^' + IntToStr(i);
end;
end.
Bestimmt gibt es dafür eine Lösung. Wer weiß Rat?