public class Row { private DbfFile m_Dbf; private byte[] m_RawData; public bool Deleted; public Dictionary Data; public int Offset; public Row(DbfFile Dbf, int RecordNumber) { m_Dbf = Dbf; Data = new Dictionary(); m_RawData = Dbf.RawReadRecord(RecordNumber); Offset = Dbf.Header.NumBytesHdr + (Dbf.Header.NumBytesRcd * (RecordNumber - 1)); Deleted = (m_RawData[0] == 0x2A); foreach (Field field in Dbf.Header.FieldList) { Data.Add(field.Name, Translator.TranslateValueToNET(field.Type, field.Offset, field.Length, field.Decimal, m_RawData)); } } public void Write() { byte[] RawData = new byte[m_Dbf.Header.NumBytesRcd]; RawData[0] = (byte)(Deleted ? 0x2A : 0x20); foreach (Field field in m_Dbf.Header.FieldList) { byte[] fieldData = Translator.TranslateValueToDBF(field.Type, field.Length, field.Decimal, Data[field.Name]); fieldData.CopyTo(RawData, field.Offset); } } }