public bool GetDimension(string DigitalString, ref double dDimension) { if (!IsValidDigital(DigitalString)) return false; DigitalStringContext ctx = new DigitalStringContext(); ctx.m_OriginalString = DigitalString; ctx.m_Period = m_Period; // Parse the string. bool result = DigitalParser.Parse(ctx); string StrValue = ctx.m_NBP.ToString() + ctx.m_Period.ToString() + ctx.m_NAP.ToString(); try { double dValue = double.Parse(StrValue); dDimension = GetSign(ctx.m_CBN.ToString()) * dValue; } catch { Debug.Assert(false); return false; } return true; }
// Check whether the sting can be parsed to a valid dimension public bool IsValidDigital(string DigitalString) { Debug.Assert(DigitalString != null); if (null == DigitalString) return false; if (DigitalString.Trim().Length == 0) return false; DigitalStringContext ctx = new DigitalStringContext(); ctx.m_OriginalString = DigitalString.Trim(); ctx.m_Period = m_Period; // Parse the string. bool result = DigitalParser.Parse(ctx); // Analyze the result if (!IsSign(ctx.m_CBN.ToString())) return false; if (!IsValidUnit(ctx.m_CAN.ToString())) return false; return true; }