Hi again. I've written a small unit to work with 3D vectors. It compiles without errors, but when I'm trying to use the operators I defined from a program I get the "invalid operands to binary" error. But I can use the type defined in the unit without problems. The source code is the following: *************************** Unit vectores; Interface {$X+} {$W-} Type TVector = Record x, y, z: Real; End; Operator + ( a, b: TVector ) c : TVector; Operator - ( a, b : TVector ) c : TVector; Operator * ( a, b : TVector ) c : Real; Operator / ( a : TVector; b : Real ) c : TVector; Operator * ( a : TVector; b : Real) c : TVector; Operator * ( a : Real; b : TVector) c : TVector; Function modu ( a : TVector ) : real; Implementation Operator + ( a, b: TVector ) c : TVector; Begin c.x := a.x + b.x; c.y := a.y + b.y; c.z := a.z + b.z; End; Operator - ( a, b : TVector ) c : TVector; Begin c.x := a.x - b.x; c.y := a.y - b.y; c.z := a.z - b.z; End; Operator * ( a, b : TVector ) c : Real; Begin c := (a.x * b.x) + (a.y * b.y) + (a.z * b.z); End; Operator / ( a : TVector; b : Real ) c : TVector; Begin c.x:=a.x / b; c.y:=a.y / b; c.z:=a.z / b; End; Operator * ( a : TVector; b : Real) c : TVector; Begin c.x:=a.x*b; c.y:=a.y*b; c.z:=a.z*b; End; Operator * ( a : Real; b : TVector) c : TVector; Begin c.x:=a*b.x; c.y:=a*b.y; c.z:=a*b.z; End; Function modu ( a : TVector ) : real; Begin modu := sqrt(sqr(a.x)+sqr(a.y)+sqr(a.z)); End; {$W+} End. *************************** Does anybody know what's wrong? Thank you, Ariel --- Ariel Bendersky bender@einstein.com.ar
participants (2)
-
Bendersky -
Peter Gerwinski