Zitat von
xZise:
Naja ich weiß nicht
Weil P10 macht mehr als an a eine 0 dran zuhängen. Weil P10 halt universell ist.
ein sinnvoller Grund für P10 ist, daß der "Rechenweg" dann "versändlicher" wäre,
(es ist ja eigentlich ein *10 und im Code sieht es nach +0 aus)
nja und daß es sozusagen Insert, statt Concat (+) nutzt
weißt du, was eine langsame Multiplikation ist?
Delphi-Quellcode:
// für c := a * b;
c := 0;
while b > 0 do
begin
c := c + a;
b := b - 1;
end;
so ähnlich sahen Produkt_langsam, QuotientModulo_langsam und Potenz_langsam aus
Zitat von
xZise:
Aber ganz von der Hand zu weisen ist das Bestreben nach schnelleren Code ja auch nicht
ich hatte anfangs ja die "langsamen" Versionen noch als zusätzliche Extraversionen drin
und nun existieren sie nur noch virtuell als Kommantare
Zitat von
gammatester:
In Ord(TMatheParserFListe(Liste[i + 1].Operanden)[i3].Operand) wendest Du ord auf einen String. Kann mir eigentlich keine Delphiversion vorstellen, die das erlaubt.
String ist ein Zeiger und per Ord würde man wohl den "Pointer" in einen Integer casten
sooo, nun müßte nur noch irgendwer alle möglichen restlichen Testfälle zusammenstellen
Delphi-Quellcode:
// Function StringMatheLib.UnitTest:
With TMathe.Create do
Try
_Test(Normalisieren( '123') = '123');
_Test(Normalisieren( '+123') = '123');
_Test(Normalisieren( '-123') = '-123');
_Test(Normalisieren('--123') = '123');
Try
_Test(Normalisieren('a123') <> '123');
_Test(False);
Except
End;
_Test(Formatieren('+1234567', False, False) = '1234567');
_Test(Formatieren('-1234567', False, False) = '-1234567');
_Test(Formatieren('+1234567', True, False) = '1.234.567');
_Test(Formatieren('-1234567', True, False) = '-1.234.567');
_Test(Formatieren('+1234567', True, True) = '+1.234.567');
_Test(Formatieren('-1234567', True, True) = '-1.234.567');
_Test(Formatieren('+1234567', True, False, 15) = '0000001.234.567');
_Test(Formatieren('+1234567', True, True, 15) = '+000001.234.567');
_Test(Formatieren('-1234567', True, False, 15) = '-000001.234.567');
_Test(Formatieren('-1234567', True, True, 15) = '-000001.234.567');
//
//Function Vergleich (a, b: String): TValueRelationship; Overload;
//Function Vergleich (a, b: String; Art: TVergleich): Boolean; Overload;
//Function istPositiv (a: String): Boolean;
//Function istNegativ (a: String): Boolean;
...