internal static bool TryParseDouble(string Expression, double[] UnitFactors, out double Value) {
double a;
if (double.TryParse(Expression, NumberStyles.Any, CultureInfo.InvariantCulture, out a)) {
Value = a * UnitFactors[UnitFactors.Length - 1];
return true;
} else {
string[] parameters = Expression.Split(':');
if (parameters.Length <= UnitFactors.Length) {
Value = 0.0;
for (int i = 0; i < parameters.Length; i++) {
if (double.TryParse(parameters[i].Trim(), NumberStyles.Float, CultureInfo.InvariantCulture, out a)) {
int j = i + UnitFactors.Length - parameters.Length;
Value += a * UnitFactors[j];
} else {
return false;
}
}
return true;
} else {
Value = 0.0;
return false;
}
}
}
internal static bool TryParseDoubleVb6(string Expression, double[] UnitFactors, out double Value) {