Einzelnen Beitrag anzeigen

Timb0

Registriert seit: 2. Apr 2008
19 Beiträge
 
#1

Calss operator liefert das falsche Ergebnis

  Alt 12. Dez 2008, 08:35
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
  Mit Zitat antworten Zitat