Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

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

Re: Mathe mit Strings (die deutsche StringMatheLib ._. )

  Alt 1. Jul 2009, 10:27
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;
    ...
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat