Esempio n. 1
0
        public XField(BinaryReader br)
        {
            //获得DBF字段
            dbfField = (DBFField)XTools.FromBytes(br, typeof(DBFField));
            //字段名
            byte[] bs = new byte[] { dbfField.b1, dbfField.b2, dbfField.b3, dbfField.b4, dbfField.b5,
                                     dbfField.b6, dbfField.b7, dbfField.b8, dbfField.b9, dbfField.b10, dbfField.b11 };
            name = XTools.BytesToString(bs).Trim();
            //字段类型
            switch (dbfField.FieldType)
            {
            case 'C':      //字符型  允许输入各种字符
                datatype = Type.GetType("System.String");
                break;

            case 'D':      //日期型  用于区分年、月、日的数字和一个字符,按照YYYYMMDD格式。
                datatype = Type.GetType("System.String");
                break;

            case 'N':      //数值型
                if (dbfField.NumberOfDecimalPlaces == 0)
                {
                    datatype = Type.GetType("System.Int32");
                }
                else
                {
                    datatype = Type.GetType("System.Double");
                }
                break;

            case 'F':
                datatype = Type.GetType("System.Double");
                break;

            case 'B':      //二进制 允许输入各种字符
                datatype = Type.GetType("System.String");
                break;

            case 'G':      //General or OLE
                datatype = Type.GetType("System.String");
                break;

            case 'L':      //逻辑型,表示没有初始化
                datatype = Type.GetType("System.String");
                break;

            case 'M':     //Memo
                datatype = Type.GetType("System.String");
                break;

            default:
                break;
            }
        }
Esempio n. 2
0
        internal object DBFValueToObject(BinaryReader br)
        {
            byte[] temp = br.ReadBytes(dbfField.LengthOfField);
            string sv   = XTools.BytesToString(temp).Trim();

            if (datatype == Type.GetType("System.String"))
            {
                return(sv);
            }
            else if (datatype == Type.GetType("System.Double"))
            {
                return(double.Parse(sv));
            }
            else if (datatype == Type.GetType("System.Int32"))
            {
                return(int.Parse(sv));
            }
            return(sv);
        }