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); }
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); }
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; }
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; }
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; }