Einzelnen Beitrag anzeigen

Benutzerbild von stoxx
stoxx

Registriert seit: 13. Aug 2003
1.111 Beiträge
 
#9

Re: Interface + (Record)Operatoren [MiniMathLib]

  Alt 1. Feb 2009, 23:21
aber da isses recht aufwendig dort mehrere Typen miteinander zu verknüpten, da jeder Record ein eigener Datentyp ist hmm .. war das Dein Hauptgrund?
das ist doch eigenltich einfach ... entweder Du lässt es von der impliziten Typumwandlung erledigen.

etwa so dann ...

Delphi-Quellcode:
    // Kategorie: Unäre Operatoren
    class operator Negative(const AValue: FIXCOMMA64): FIXCOMMA64;
    class operator Positive(const AValue: FIXCOMMA64): FIXCOMMA64;
    class operator Trunc(const AValue: FIXCOMMA64): Int64;
    class operator Round(const AValue: FIXCOMMA64): Int64;
    class operator Inc(const AValue: FIXCOMMA64): FIXCOMMA64;
// class operator Inc(const AValue1, AValue2: FIXCOMMA64): FIXCOMMA64;
    class operator Dec(const AValue: FIXCOMMA64): FIXCOMMA64;

    // Kategorie: Binäre Operatoren
    class operator Add(const Left, Right: FIXCOMMA64): FIXCOMMA64;
    class operator Subtract(const Left, Right: FIXCOMMA64): FIXCOMMA64;
    class operator Multiply(const Left, Right: FIXCOMMA64): FIXCOMMA64;
    class operator Divide(const Left, Right: FIXCOMMA64): FIXCOMMA64;
    class operator IntDivide(const Left, Right: FIXCOMMA64): FIXCOMMA64;
    class operator Modulus(const Left, Right: FIXCOMMA64): FIXCOMMA64;

    // Kategorie: Vergleichsoperatoren
    class operator Equal(const Left, Right: FIXCOMMA64): Boolean; inline;
    class operator NotEqual(const Left, Right: FIXCOMMA64): Boolean; inline;
    class operator LessThan(const Left, Right: FIXCOMMA64): Boolean; inline;
    class operator LessThanOrEqual(const Left, Right: FIXCOMMA64): Boolean; inline;
    class operator GreaterThan(const Left, Right: FIXCOMMA64): Boolean; inline;
    class operator GreaterThanOrEqual(const Left, Right: FIXCOMMA64): Boolean; inline;

    // Kategorie: implicite Konvertierung
    class operator Implicit(const AValue: FIXCOMMA64) : FIXCOMMA40; inline;
    class operator Implicit(const AValue: FIXCOMMA40): FIXCOMMA64; inline;
    class operator Implicit(const AValue: FIXCOMMA64) : FIXCOMMA32; inline;
    class operator Implicit(const AValue: FIXCOMMA32): FIXCOMMA64; inline;
    class operator Implicit(const AValue: FIXCOMMA64) : FIXCOMMA24; inline;
    class operator Implicit(const AValue: FIXCOMMA24): FIXCOMMA64; inline;

    class operator Implicit(const AValue: DWORD): FIXCOMMA64;inline;
    class operator Implicit(const AValue: Integer): FIXCOMMA64; inline;
    class operator Implicit(const AValue: Int64): FIXCOMMA64; inline;

    class operator Implicit(const AValue: FIXCOMMA64) : Single;inline;
    class operator Implicit(const AValue: Single): FIXCOMMA64; inline;
    class operator Implicit(const AValue: FIXCOMMA64) : double;inline;
    class operator Implicit(const AValue: double): FIXCOMMA64; inline;
    class operator Implicit(const AValue: FIXCOMMA64) : extended; inline;
    class operator Implicit(const AValue: extended): FIXCOMMA64; inline;

    class operator Implicit(const AValue: FIXCOMMA64) : TFLOAT;inline;
    class operator Implicit(const AValue: TFLOAT): FIXCOMMA64; inline;
    class operator Implicit(const AValue: TINT32): FIXCOMMA64; inline;
    class operator Implicit(const AValue: TDWORD): FIXCOMMA64; inline;
    class operator Implicit(const AValue: String): FIXCOMMA64; inline;
end; // FixComma64

oder aber, Du definierst Dir für jeden Datentyp die Operatiren neu...
Für jede Seite ..
aber wie gesagt, mit der impliziten Typumwandlung kommt man doch schon recht weit eigentlich?
Delphi-Quellcode:
class operator Add(const Left : Double, Right: FIXCOMMA64): FIXCOMMA32;
class operator Add(const Left : FIXCOMMA64, Right: Double): FIXCOMMA32;
Phantasie ist etwas, was sich manche Leute gar nicht vorstellen können.
  Mit Zitat antworten Zitat