AnsiString konvertieren



  • Moin, ist bestimmt eine häufig gestellte Frage die ich nun stelle.

    Gibt es ne möglichkeit einen AnsiString in ein double -Wert zu konvertieren. Vielleicht mit

    StrTorDoubleDef(...., 0);
    

    ?



  • mit StrToFloatDef



  • Probiere mal das hier. Habe es auch nur gefunden, ist aber echt super.

    #define  ERR_VALUE  0.0   // oder was immer du willst
    
    double ConvertToDouble(AnsiString sValueString)
    {
      double dResultValue = ERR_VALUE;
      try
      {
        int iNonDigitCounter = 0, iNonDigitPosition = 0;
        for(int iCharNo = 1; iCharNo <= sValueString.Length(); iCharNo++)
        {
          if(!isdigit(sValueString[iCharNo]))
          {
            if(sValueString[iCharNo] != '+' && sValueString[iCharNo] != '-')
            {
              iNonDigitPosition = iCharNo;
              iNonDigitCounter++;
            }
          }
        }
        if(iNonDigitCounter < 2 && iNonDigitCounter > 0)
        {
          if(sValueString[iNonDigitPosition] == DecimalSeparator)
          { dResultValue = sValueString.ToDouble(); }
          else if (sValueString[iNonDigitPosition] == '.' ||
            sValueString[iNonDigitPosition] == ',')
          {
            sValueString[iNonDigitPosition] = DecimalSeparator;
            dResultValue = sValueString.ToDouble();
          }
        }
        else if (!iNonDigitCounter)
        {
          dResultValue = sValueString.ToDouble();
        }
        return dResultValue;
      }
      catch(...) { return ERR_VALUE; }
    }
    


  • Hallo

    @radian : Und was soll der Vorteil deiner Funktion gegenüber der bereits in der VCL enthaltenen Funktikn StrToFloat...() sein?

    bis bald
    akari



  • Das sorry, hatte es vergessen zu sagen.
    Wollte ihm einfach nur zeigen, wie eine Quelltextlösung ausehen könnte. Zusätzlich erlaubt diese Funktion das Konvertieren unabhängig von Punkt und Komma.
    Fand das ganz nett zu sehen wie so etwas funktionieren kann.

    Wollte mich nicht in den Vordergrund setllen 😉 damit.
    Es geht ja auch einfacher.



  • Ey, erstmal danke. Das ist nett mit der schnellen Hilfe.

    @radian: Das mit dem komplexen Quelltext ist keine schlechte Idee um sich das zu verdeutlichen. Aber im Programm selber werde ich das so wohl nicht einbringen.


Log in to reply