ASCII import dialog. Determine default decimal separator

This commit is contained in:
Bjørn Erik Jensen
2017-11-27 12:39:12 +01:00
parent e53059e2c8
commit bdc680bc03
3 changed files with 72 additions and 2 deletions

View File

@@ -371,6 +371,55 @@ QString RifCsvUserDataParser::tryDetermineCellSeparator()
return "";
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
QString RifCsvUserDataParser::tryDetermineDecimalSeparator(const QString& cellSeparator)
{
QTextStream* dataStream = openDataStream();
std::vector<QString> lines;
int iLine = 0;
int successfulParsesDot = 0;
int successfulParsesComma = 0;
while (iLine < 10 && !dataStream->atEnd())
{
QString line = dataStream->readLine();
if (line.isEmpty()) continue;
for (QString cellData : splitLineAndTrim(line, cellSeparator))
{
bool parseOk;
QLocale locale;
locale = localeFromDecimalSeparator(".");
locale.toDouble(cellData, &parseOk);
if (parseOk) successfulParsesDot++;
locale = localeFromDecimalSeparator(",");
locale.toDouble(cellData, &parseOk);
if (parseOk) successfulParsesComma++;
}
}
closeDataStream();
if (successfulParsesComma > successfulParsesDot) return ",";
else return ".";
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
QLocale RifCsvUserDataParser::localeFromDecimalSeparator(const QString& decimalSeparator)
{
if (decimalSeparator == ",")
{
return QLocale::Norwegian;
}
return QLocale::c();
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------