refs #77, used locale aware number parsing for command parser

This commit is contained in:
Klaus Basan
2014-11-17 01:47:48 +01:00
committed by Roland Winklmeier
parent c173a30a94
commit eb13c9d4ae
3 changed files with 32 additions and 20 deletions

View File

@@ -44,23 +44,7 @@ namespace BlackMisc
if (unit.isEmpty() || number.isEmpty()) return v;
bool success;
double numberD;
switch (mode)
{
case SeparatorsLocale:
numberD = QLocale::system().toDouble(number, &success);
break;
case SeparatorsCLocale:
numberD = number.toDouble(&success);
break;
case SeparatorsBestGuess:
numberD = number.toDouble(&success);
if (!success) numberD = QLocale::system().toDouble(number, &success);
break;
default:
qFatal("Wrong mode");
break;
}
double numberD = parseNumber(number, success, mode);
if (!success) return v;
if (CMeasurementUnit::isValidUnitSymbol<CAccelerationUnit>(unit))
@@ -119,5 +103,27 @@ namespace BlackMisc
return v;
}
double CPqString::parseNumber(const QString &number, bool &success, CPqString::SeparatorMode mode)
{
double numberD = -1;
switch (mode)
{
case SeparatorsLocale:
numberD = QLocale::system().toDouble(number, &success);
break;
case SeparatorsCLocale:
numberD = number.toDouble(&success);
break;
case SeparatorsBestGuess:
numberD = number.toDouble(&success);
if (!success) numberD = QLocale::system().toDouble(number, &success);
break;
default:
qFatal("Wrong mode");
break;
}
return numberD;
}
} // namespace
} // namespace