//////////////////////////////////////////////////////////////////////////// //--------------------------------- REVISIONS ------------------------------ // Date Name Tracking # Description // --------- ------------------- ------------- ---------------------- // 21JUN2009 James Shen Initial Creation //////////////////////////////////////////////////////////////////////////// /** * Get one record (index) of give mapInfo ID. */ public DataRowValue GetRecord(int mapInfoID) { int recordID = mapInfoID - 1; if (mapInfoID < 1) { throw new IOException("MapInfo ID starts from 1"); } DataReader.Seek(_reader, _offset + recordID * _recordSize); string[] fieldValues = new string[_fields.Length]; int intValue; int shortValue; int stringID; byte boolValue; double doubleValue; for (int i = 0; i < fieldValues.Length; i++) { switch (_fields[i].GetFieldType()) { case DataField.TYPE_CHAR: //char case DataField.TYPE_DATE: //date stringID = DataReader.ReadInt(_reader); fieldValues[i] = stringID.ToString(); break; case DataField.TYPE_INTEGER: //int intValue = DataReader.ReadInt(_reader); fieldValues[i] = intValue.ToString(); break; case DataField.TYPE_SMALLINT: //short shortValue = DataReader.ReadShort(_reader); fieldValues[i] = shortValue.ToString(); break; case DataField.TYPE_DECIMAL: //short case DataField.TYPE_FLOAT: //float doubleValue = DataReader.ReadDouble(_reader); fieldValues[i] = doubleValue.ToString(); break; case DataField.TYPE_LOGICAL: //bool boolValue = _reader.ReadByte(); fieldValues[i] = boolValue.ToString(); break; } } //read string data. for (int i = 0; i < fieldValues.Length; i++) { switch (_fields[i].GetFieldType()) { case DataField.TYPE_CHAR: //char case DataField.TYPE_DATE: //date stringID = int.Parse(fieldValues[i]); if (stringID != -1) { _stringIndex.GetRecord(stringID); fieldValues[i] = _stringData.GetRecord(_stringIndex.RecordOffset); } else { fieldValues[i] = ""; } break; } } var ret = new DataRowValue(fieldValues); return(ret); }
//////////////////////////////////////////////////////////////////////////// //--------------------------------- REVISIONS ------------------------------ // Date Name Tracking # Description // --------- ------------------- ------------- ---------------------- // 21JUN2009 James Shen Initial Creation //////////////////////////////////////////////////////////////////////////// /** * Get one record (index) of give mapInfo ID. */ public DataRowValue GetRecord(int mapInfoID) { int recordID = mapInfoID - 1; if (mapInfoID < 1) { throw new IOException("MapInfo ID starts from 1"); } DataReader.Seek(_reader, _offset + recordID * _recordSize); string[] fieldValues = new string[_fields.Length]; int intValue; int shortValue; int stringID; byte boolValue; double doubleValue; for (int i = 0; i < fieldValues.Length; i++) { switch (_fields[i].GetFieldType()) { case DataField.TYPE_CHAR://char case DataField.TYPE_DATE://date stringID = DataReader.ReadInt(_reader); fieldValues[i] = stringID.ToString(); break; case DataField.TYPE_INTEGER://int intValue = DataReader.ReadInt(_reader); fieldValues[i] = intValue.ToString(); break; case DataField.TYPE_SMALLINT://short shortValue = DataReader.ReadShort(_reader); fieldValues[i] = shortValue.ToString(); break; case DataField.TYPE_DECIMAL://short case DataField.TYPE_FLOAT://float doubleValue = DataReader.ReadDouble(_reader); fieldValues[i] = doubleValue.ToString(); break; case DataField.TYPE_LOGICAL://bool boolValue = _reader.ReadByte(); fieldValues[i] = boolValue.ToString(); break; } } //read string data. for (int i = 0; i < fieldValues.Length; i++) { switch (_fields[i].GetFieldType()) { case DataField.TYPE_CHAR://char case DataField.TYPE_DATE://date stringID = int.Parse(fieldValues[i]); if (stringID != -1) { _stringIndex.GetRecord(stringID); fieldValues[i] = _stringData.GetRecord(_stringIndex.RecordOffset); } else { fieldValues[i] = ""; } break; } } var ret = new DataRowValue(fieldValues); return ret; }