Esempio n. 1
0
        internal static DbfFileHeader ReadHeader(Stream str)
        {
            DbfFileHeader header = new DbfFileHeader();

            header.Version = (byte)str.ReadByte();
            if (header.Version != 3)
            {
                return(null);
            }
            str.Read(header.LastEdited, 0, 3);

            byte[] numRecs = new byte[4];
            str.Read(numRecs, 0, 4);
            header.NumberOfRecords = BitConverter.ToInt32(numRecs, 0);

            byte[] lenHeader = new byte[2];
            str.Read(lenHeader, 0, 2);
            header.LengthOfHeader = BitConverter.ToInt16(lenHeader, 0);

            byte[] lenRecord = new byte[2];
            str.Read(lenRecord, 0, 2);
            header.LengthOfRecord = BitConverter.ToInt16(lenRecord, 0);

            str.Read(header.ReservedOne, 0, 2);
            header.IncompleteTransaction = (byte)str.ReadByte();
            header.EncryptionFlag        = (byte)str.ReadByte();
            str.Read(header.FreeRecordThread, 0, 4);
            str.Read(header.ReservedMultiUser, 0, 8);
            header.MdxFlag  = (byte)str.ReadByte();
            header.Language = (byte)str.ReadByte();
            str.Read(header.ReservedTwo, 0, 2);

            return(header);
        }
Esempio n. 2
0
            public static DbfFileHeader GetDefaultHeader()
            {
                DbfFileHeader header = new DbfFileHeader();

                header.Version    = 0x3;
                header.LastEdited = new byte[3] {
                    0x62, 0x03, 0x12
                };
                //header.NumberOfRecords = 0x0;
                //header.LengthOfHeader = BitConverter.ToInt16(new byte[] { 0x61, 0x01 }, 0);
                //header.LengthOfRecord = ResourceDatabase.DefinitionSize;
                header.ReservedOne = new byte[2] {
                    0x0, 0x0
                };
                header.IncompleteTransaction = 0x0;
                header.EncryptionFlag        = 0x0;
                header.FreeRecordThread      = new byte[4] {
                    0x0, 0x0, 0x0, 0x0
                };
                header.ReservedMultiUser = new byte[8] {
                    0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0
                };
                header.MdxFlag     = 0x0;
                header.Language    = 0x0;
                header.ReservedTwo = new byte[2] {
                    0x0, 0x0
                };

                return(header);
            }
Esempio n. 3
0
        public DbfFile(DataTable dt)
        {
            int millenium = 2000; //Free Y3K bug

            this.Header = DbfFileHeader.GetDefaultHeader();
            this.Header.NumberOfRecords = dt.Rows.Count;// + 1;
            this.Header.LastEdited      = new byte[] { (byte)(DateTime.Today.Year - millenium), (byte)DateTime.Today.Month, (byte)DateTime.Today.Day };

            this.Header.LengthOfHeader = (short)
                                         (sizeof(byte)    //version
                                          + this.Header.LastEdited.Length
                                          + sizeof(int)   //NumberOfRecords
                                          + sizeof(short) //LengthOfHeader
                                          + sizeof(short) //LengthOfRecord
                                          + this.Header.ReservedOne.Length
                                          + sizeof(byte)  //IncompleteTransaction
                                          + sizeof(byte)  //EncryptionFlag
                                          + this.Header.FreeRecordThread.Length
                                          + this.Header.ReservedMultiUser.Length
                                          + sizeof(byte) //MdxFlag
                                          + sizeof(byte) //Language
                                          + this.Header.ReservedTwo.Length
                                                         //+ (this.Header.NumberOfRecords * this.Header.LengthOfRecord)
                                                         //+ (this.Header.NumberOfRecords * FieldDescriptor.Size)
                                          + sizeof(byte) //Terminator
                                         );

            this._dataTable = dt;
        }
Esempio n. 4
0
            public static DbfFileHeader GetDefaultHeader()
            {
                DbfFileHeader header = new DbfFileHeader();

                header.Version = 0x3;
                header.LastEdited = new byte[3] { 0x62, 0x03, 0x12 };
                //header.NumberOfRecords = 0x0;
                //header.LengthOfHeader = BitConverter.ToInt16(new byte[] { 0x61, 0x01 }, 0);
                //header.LengthOfRecord = ResourceDatabase.DefinitionSize;
                header.ReservedOne = new byte[2] { 0x0, 0x0 };
                header.IncompleteTransaction = 0x0;
                header.EncryptionFlag = 0x0;
                header.FreeRecordThread = new byte[4] { 0x0, 0x0, 0x0, 0x0 };
                header.ReservedMultiUser = new byte[8] { 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0 };
                header.MdxFlag = 0x0;
                header.Language = 0x0;
                header.ReservedTwo = new byte[2] { 0x0, 0x0 };

                return header;
            }
Esempio n. 5
0
        internal static DbfFileHeader ReadHeader(Stream str)
        {
            DbfFileHeader header = new DbfFileHeader();

            header.Version = (byte)str.ReadByte();
            if (header.Version != 3)
                return null;
            str.Read(header.LastEdited, 0, 3);

            byte[] numRecs = new byte[4];
            str.Read(numRecs, 0, 4);
            header.NumberOfRecords = BitConverter.ToInt32(numRecs, 0);

            byte[] lenHeader = new byte[2];
            str.Read(lenHeader, 0, 2);
            header.LengthOfHeader = BitConverter.ToInt16(lenHeader, 0);

            byte[] lenRecord = new byte[2];
            str.Read(lenRecord, 0, 2);
            header.LengthOfRecord = BitConverter.ToInt16(lenRecord, 0);

            str.Read(header.ReservedOne, 0, 2);
            header.IncompleteTransaction = (byte)str.ReadByte();
            header.EncryptionFlag = (byte)str.ReadByte();
            str.Read(header.FreeRecordThread, 0, 4);
            str.Read(header.ReservedMultiUser, 0, 8);
            header.MdxFlag = (byte)str.ReadByte();
            header.Language = (byte)str.ReadByte();
            str.Read(header.ReservedTwo, 0, 2);

            return header;
        }