Hallo alle zusammen,
ich ahbe mir den folgenden Typ definiert:
Delphi-Quellcode:
TVector = record
first : PElement;
class Operator Multiply(c:Real;u:TVector) : TVector;Overload;
class Operator Multiply(u:TVector;c:Real) : TVector;Overload;
class Operator Multiply(v,u:TVector): Double;
class Operator Add(v,u:TVector) : TVector; Overload;
end;
alle Class Operatoren funktionieren ausser der 3. mit
class Operator Multiply(v,u:TVector): Double;
dieser Rechnet das richtige ergebnis aus und Übergibt dann einfach das flasche. Ich verstehe einfach nicht warum hier mal kurz die funktion
Delphi-Quellcode:
Class Operator TVector.Multiply(v,u:TVector): Double;
var s,r:PElement; // Liste aus real werten die eine Eigenschaft x:real , next :Pelement hat.
summe : Real;
begin
s:= v.first;
r:= u.first;
Result := 0;
if not Dimension(v) = Dimension(u) then begin Result := -1; Exit; end;
while s.next <> nil do
begin
Result := Result + s^.x*r^.x;
s := s^.next;
r := r^.next;
end;
Result := Result + s^.x*r^.x;
end;
Es handelt sich dabei um ein Skalarprodukt von Vektoren. Der Witz ist einfach, das der Result genau das Richtige ergebniss liefer, wenn man ihn innerhalb der Procedure abfrag (also nach der letzten Zeile eine MSgBox). Der Aufruf sieht wie folgt aus:
S := Vec*Vec2;
Gruß und schonmal danke fürs lesen, Timb00