/// <summary>Returns a <see langword="Single" /> value that corresponds to the specified string and number format information. </summary> /// <param name="Value">Required. String to convert to a <see langword="Single" /> value.</param> /// <param name="NumberFormat">A <see cref="T:System.Globalization.NumberFormatInfo" /> object that defines how numeric values are formatted and displayed, depending on the culture.</param> /// <returns>The <see langword="Single" /> value corresponding to <paramref name="Value" />.</returns> public static float FromString(string Value, NumberFormatInfo NumberFormat) { if (Value == null) { return(0.0f); } try { long i64Value = 0; if (Utils.IsHexOrOctValue(Value, ref i64Value)) { return((float)i64Value); } double d = DoubleType.Parse(Value, NumberFormat); if ((d < -3.40282346638529E+38 || d > 3.40282346638529E+38) && !double.IsInfinity(d)) { throw new OverflowException(); } return((float)d); } catch (FormatException ex) { throw new InvalidCastException(Utils.GetResourceString("InvalidCast_FromStringTo", Strings.Left(Value, 32), "Single"), (Exception)ex); } }
/// <summary>Returns a <see langword="Boolean" /> value that corresponds to the specified string. </summary> /// <param name="Value">Required. String to convert to a <see langword="Boolean" /> value.</param> /// <returns>The <see langword="Boolean" /> value that corresponds to <paramref name="Value" />.</returns> public static bool FromString(string Value) { if (Value == null) { Value = ""; } try { CultureInfo cultureInfo = Utils.GetCultureInfo(); if (string.Compare(Value, bool.FalseString, true, cultureInfo) == 0) { return(false); } if (string.Compare(Value, bool.TrueString, true, cultureInfo) == 0) { return(true); } long i64Value = 0; if (Utils.IsHexOrOctValue(Value, ref i64Value)) { return((ulong)i64Value > 0UL); } return(DoubleType.Parse(Value) != 0.0); } catch (FormatException ex) { throw new InvalidCastException(Utils.GetResourceString("InvalidCast_FromStringTo", Strings.Left(Value, 32), "Boolean"), (Exception)ex); } }
/// <summary>Returns a <see langword="Byte" /> value that corresponds to the specified string. </summary> /// <param name="Value">Required. String to convert to a <see langword="Byte" /> value.</param> /// <returns>The <see langword="Byte" /> value that corresponds to <paramref name="Value" />.</returns> public static byte FromString(string Value) { if (Value == null) { return(0); } try { long i64Value = 0; if (Utils.IsHexOrOctValue(Value, ref i64Value)) { return(checked ((byte)i64Value)); } return(checked ((byte)Math.Round(DoubleType.Parse(Value)))); } catch (FormatException ex) { throw new InvalidCastException(Utils.GetResourceString("InvalidCast_FromStringTo", Strings.Left(Value, 32), "Byte"), (Exception)ex); } }
/// <summary>Returns a <see langword="Double" /> value that corresponds to the specified string and number format information. </summary> /// <param name="Value">Required. String to convert to a <see langword="Double" /> value.</param> /// <param name="NumberFormat">A <see cref="T:System.Globalization.NumberFormatInfo" /> object that defines how numeric values are formatted and displayed, depending on the culture.</param> /// <returns>The <see langword="Double" /> value corresponding to <paramref name="Value" />.</returns> public static double FromString(string Value, NumberFormatInfo NumberFormat) { if (Value == null) { return(0.0); } try { long i64Value = 0; if (Utils.IsHexOrOctValue(Value, ref i64Value)) { return((double)i64Value); } return(DoubleType.Parse(Value, NumberFormat)); } catch (FormatException ex) { throw new InvalidCastException(Utils.GetResourceString("InvalidCast_FromStringTo", Strings.Left(Value, 32), "Double"), (Exception)ex); } }
internal override void PutObject(object Value, long RecordNumber = 0, bool ContainedInVariant = true) { this.ValidateWriteable(); if (Value == null) { this.PutEmpty(RecordNumber); } else { Type type = Value.GetType(); if (type == null) { throw ExceptionUtils.VbMakeException((Exception) new ArgumentException(Utils.GetResourceString("Argument_UnsupportedIOType1", new string[1] { "Empty" })), 5); } if (type.IsArray) { this.PutDynamicArray(RecordNumber, (Array)Value, true, -1); } else { if (type.IsEnum) { type = Enum.GetUnderlyingType(type); } switch (Type.GetTypeCode(type)) { case TypeCode.DBNull: this.PutShort(RecordNumber, (short)1, false); break; case TypeCode.Boolean: this.PutBoolean(RecordNumber, BooleanType.FromObject(Value), ContainedInVariant); break; case TypeCode.Char: this.PutChar(RecordNumber, CharType.FromObject(Value), ContainedInVariant); break; case TypeCode.Byte: this.PutByte(RecordNumber, ByteType.FromObject(Value), ContainedInVariant); break; case TypeCode.Int16: this.PutShort(RecordNumber, ShortType.FromObject(Value), ContainedInVariant); break; case TypeCode.Int32: this.PutInteger(RecordNumber, IntegerType.FromObject(Value), ContainedInVariant); break; case TypeCode.Int64: this.PutLong(RecordNumber, LongType.FromObject(Value), ContainedInVariant); break; case TypeCode.Single: this.PutSingle(RecordNumber, SingleType.FromObject(Value), ContainedInVariant); break; case TypeCode.Double: this.PutDouble(RecordNumber, DoubleType.FromObject(Value), ContainedInVariant); break; case TypeCode.Decimal: this.PutDecimal(RecordNumber, DecimalType.FromObject(Value), ContainedInVariant); break; case TypeCode.DateTime: this.PutDate(RecordNumber, DateType.FromObject(Value), ContainedInVariant); break; case TypeCode.String: this.PutVariantString(RecordNumber, Value.ToString()); break; default: if (type == typeof(Missing)) { throw ExceptionUtils.VbMakeException((Exception) new ArgumentException(Utils.GetResourceString("Argument_UnsupportedIOType1", new string[1] { "Missing" })), 5); } if (type.IsValueType && !ContainedInVariant) { this.PutRecord(RecordNumber, (ValueType)Value); break; } if (ContainedInVariant && type.IsValueType) { throw ExceptionUtils.VbMakeException((Exception) new ArgumentException(Utils.GetResourceString("Argument_PutObjectOfValueType1", new string[1] { Utils.VBFriendlyName(type, Value) })), 5); } throw ExceptionUtils.VbMakeException((Exception) new ArgumentException(Utils.GetResourceString("Argument_UnsupportedIOType1", new string[1] { Utils.VBFriendlyName(type, Value) })), 5); } } } }
public bool Callback(FieldInfo field_info, ref object vValue) { Type fieldType = field_info.FieldType; if (fieldType == null) { throw ExceptionUtils.VbMakeException((Exception) new ArgumentException(Utils.GetResourceString("Argument_UnsupportedFieldType2", field_info.Name, "Empty")), 5); } if (fieldType.IsArray) { int FixedStringLength = -1; object[] customAttributes1 = field_info.GetCustomAttributes(typeof(VBFixedArrayAttribute), false); VBFixedArrayAttribute fixedArrayAttribute = customAttributes1 == null || customAttributes1.Length == 0 ? (VBFixedArrayAttribute)null : (VBFixedArrayAttribute)customAttributes1[0]; Type elementType = fieldType.GetElementType(); if (elementType == typeof(string)) { object[] customAttributes2 = field_info.GetCustomAttributes(typeof(VBFixedStringAttribute), false); FixedStringLength = customAttributes2 == null || customAttributes2.Length == 0 ? -1 : ((VBFixedStringAttribute)customAttributes2[0]).Length; } if (fixedArrayAttribute == null) { this.m_oFile.PutDynamicArray(0L, (Array)vValue, false, FixedStringLength); } else { this.m_oFile.PutFixedArray(0L, (Array)vValue, elementType, FixedStringLength, fixedArrayAttribute.FirstBound, fixedArrayAttribute.SecondBound); } } else { switch (Type.GetTypeCode(fieldType)) { case TypeCode.DBNull: throw ExceptionUtils.VbMakeException((Exception) new ArgumentException(Utils.GetResourceString("Argument_UnsupportedFieldType2", field_info.Name, "DBNull")), 5); case TypeCode.Boolean: this.m_oFile.PutBoolean(0L, BooleanType.FromObject(vValue), false); break; case TypeCode.Char: this.m_oFile.PutChar(0L, CharType.FromObject(vValue), false); break; case TypeCode.Byte: this.m_oFile.PutByte(0L, ByteType.FromObject(vValue), false); break; case TypeCode.Int16: this.m_oFile.PutShort(0L, ShortType.FromObject(vValue), false); break; case TypeCode.Int32: this.m_oFile.PutInteger(0L, IntegerType.FromObject(vValue), false); break; case TypeCode.Int64: this.m_oFile.PutLong(0L, LongType.FromObject(vValue), false); break; case TypeCode.Single: this.m_oFile.PutSingle(0L, SingleType.FromObject(vValue), false); break; case TypeCode.Double: this.m_oFile.PutDouble(0L, DoubleType.FromObject(vValue), false); break; case TypeCode.Decimal: this.m_oFile.PutDecimal(0L, DecimalType.FromObject(vValue), false); break; case TypeCode.DateTime: this.m_oFile.PutDate(0L, DateType.FromObject(vValue), false); break; case TypeCode.String: string s = vValue == null ? (string)null : vValue.ToString(); object[] customAttributes = field_info.GetCustomAttributes(typeof(VBFixedStringAttribute), false); if (customAttributes == null || customAttributes.Length == 0) { this.m_oFile.PutStringWithLength(0L, s); break; } int lengthToWrite = ((VBFixedStringAttribute)customAttributes[0]).Length; if (lengthToWrite == 0) { lengthToWrite = -1; } this.m_oFile.PutFixedLengthString(0L, s, lengthToWrite); break; default: if (fieldType == typeof(object)) { this.m_oFile.PutObject(vValue, 0L, true); break; } if (fieldType == typeof(Exception)) { throw ExceptionUtils.VbMakeException((Exception) new ArgumentException(Utils.GetResourceString("Argument_UnsupportedFieldType2", field_info.Name, "Exception")), 5); } if (fieldType == typeof(Missing)) { throw ExceptionUtils.VbMakeException((Exception) new ArgumentException(Utils.GetResourceString("Argument_UnsupportedFieldType2", field_info.Name, "Missing")), 5); } throw ExceptionUtils.VbMakeException((Exception) new ArgumentException(Utils.GetResourceString("Argument_UnsupportedFieldType2", field_info.Name, fieldType.Name)), 5); } } bool flag = false; return(flag); }
/// <summary>Returns a <see langword="Double" /> value that corresponds to the specified object. </summary> /// <param name="Value">Required. Object to convert to a <see langword="Double" /> value.</param> /// <param name="NumberFormat">A <see cref="T:System.Globalization.NumberFormatInfo" /> object that defines how numeric values are formatted and displayed, depending on the culture.</param> /// <returns>The <see langword="Double" /> value corresponding to <paramref name="Value" />.</returns> public static double FromObject(object Value, NumberFormatInfo NumberFormat) { if (Value == null) { return(0.0); } IConvertible ValueInterface = Value as IConvertible; if (ValueInterface != null) { switch (ValueInterface.GetTypeCode()) { case TypeCode.Boolean: return((double)-(ValueInterface.ToBoolean((IFormatProvider)null) ? 1 : 0)); case TypeCode.Byte: if (Value is byte) { return((double)(byte)Value); } return((double)ValueInterface.ToByte((IFormatProvider)null)); case TypeCode.Int16: if (Value is short) { return((double)(short)Value); } return((double)ValueInterface.ToInt16((IFormatProvider)null)); case TypeCode.Int32: if (Value is int) { return((double)(int)Value); } return((double)ValueInterface.ToInt32((IFormatProvider)null)); case TypeCode.Int64: if (Value is long) { return((double)(long)Value); } return((double)ValueInterface.ToInt64((IFormatProvider)null)); case TypeCode.Single: if (Value is float) { return((double)(float)Value); } return((double)ValueInterface.ToSingle((IFormatProvider)null)); case TypeCode.Double: if (Value is double) { return((double)Value); } return(ValueInterface.ToDouble((IFormatProvider)null)); case TypeCode.Decimal: return(DoubleType.DecimalToDouble(ValueInterface)); case TypeCode.String: return(DoubleType.FromString(ValueInterface.ToString((IFormatProvider)null), NumberFormat)); } } throw new InvalidCastException(Utils.GetResourceString("InvalidCast_FromTo", Utils.VBFriendlyName(Value), "Double")); }
/// <summary>Returns a <see langword="Double" /> value that corresponds to the specified object. </summary> /// <param name="Value">Required. Object to convert to a <see langword="Double" /> value.</param> /// <returns>The <see langword="Double" /> value corresponding to <paramref name="Value" />.</returns> public static double FromObject(object Value) { return(DoubleType.FromObject(Value, (NumberFormatInfo)null)); }
/// <summary>Returns a <see langword="Double" /> value that corresponds to the specified string. </summary> /// <param name="Value">Required. String to convert to a <see langword="Double" /> value.</param> /// <returns>The <see langword="Double" /> value corresponding to <paramref name="Value" />.</returns> public static double FromString(string Value) { return(DoubleType.FromString(Value, (NumberFormatInfo)null)); }
/// <summary>Returns a <see langword="Double" /> value that corresponds to the specified string. </summary> /// <param name="Value">Required. String to convert to a <see langword="Double" /> value.</param> /// <returns>The <see langword="Double" /> value corresponding to <paramref name="Value" />.</returns> public static double Parse(string Value) { return(DoubleType.Parse(Value, (NumberFormatInfo)null)); }
internal override void Input(ref double Value) { Value = DoubleType.FromObject(this.InputNum(VariantType.Double)); }