C++ Builder Snippets  

String in Double konvertieren (unabhängig vom Dezimaltrennzeichen):
 
//-------------------------------------------------------------------
//  Konvertiert String zu Double unabhängig davon, ob Punkt oder Komma
//  als Dezimaltrennzeichen verwendet wird
//-------------------------------------------------------------------
#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; }
}



© '99-2000 by S. Kreutzmann