Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.149 Beiträge
 
Delphi 12 Athens
 
#26

Re: qwertz543221 kleine String-Math-Lib

  Alt 14. Jun 2009, 18:23
also das sollte jetzt bei dir Laufen ...
Delphi-Quellcode:
function tform1.Quotient(a, b: AnsiString): AnsiString;
var
  c: Int64;
begin
  if b = '0then System.Error(reDivByZero);
  Result := '0';
  c := 0;
  while Length(b) < Length(a) do
  begin
    c := c + 1;
    b := b + '0'; // b := produkt(b, '10');
  end;
  while c >= 0 do
  begin
    while vergleich(b, a) <> 0 do
    begin
      Result := summe(Result, inttostr(trunc(power(10, c))));
      a := differenz(a, b);
    end;
    c := c - 1;
    Delete(b, Length(b), 1); // b := quotient(b, '10');
  end;
end;
es gibt nur ein Problem ...
die Funktion summe rechnet falsch ...
und zwar wenn man sie einzeln benutzt, dann 1+1=2
aber in der schleife 0+1=1 ... 1+1=21 ... 21+1=221 .....
da ich aber bei deiner Summenfunktion einfach nicht durchseh, mußt'e den Fehler da wohl selber finden (hat vielleicht was mit den gloablen Variablen zu tun? )

[add]
Problem gefunden ... du hast in Summe das result nicht initialisiert
ein result:=''; vor der Berechnung liefert Abhilfe.

und noch einen Tipp: das result wurde auch in anderen Funktionen nicht initialisert
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat