All pastes #218929 Raw Edit

Macca

public text v1 · immutable
#218929 ·published 2006-10-24 12:42 UTC
rendered paste body
	public class Row
	{
		private DbfFile m_Dbf;
		private byte[] m_RawData;
		public bool Deleted;
		public Dictionary<string, object> Data;
		public int Offset;

		public Row(DbfFile Dbf, int RecordNumber)
		{
			m_Dbf = Dbf;

			Data = new Dictionary<string, object>();

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