protected string StringFieldValue(Enum fieldOrdinal, int recordNumber, bool linkToPhrase = false, bool linkToWp = false) { StringBuilder sb = new StringBuilder(65536); try { if (this.ModernRecordLength == null) { Definition databaseDefinition = LoadDatabaseDefinition(fieldOrdinal); _carsonLib.ReadFieldValueString(_stream.SafeFileHandle, this.TableId, fieldOrdinal, _dataRecords[recordNumber - 1], sb, databaseDefinition.FieldType, _isClassic); } else { AVImarkDataType dataType = AVImarkDataType.AVImarkDynamicString; if (linkToPhrase) { dataType = AVImarkDataType.AVImarkLinkToPhrase; } else if (linkToWp) { dataType = AVImarkDataType.AVImarkLinkToWp; } _carsonLib.ReadFieldValueString(_stream.SafeFileHandle, this.TableId, FieldOffset(fieldOrdinal), _dataRecords[recordNumber - 1], sb, dataType, RecordLength()); } return(sb.ToString()); } catch { return(""); } }
private int ComputeFieldSize(AVImarkDataType dataType) { int fieldSize = 0; switch (dataType) { case AVImarkDataType.AVImarkCharacter: case AVImarkDataType.AVImarkBit: case AVImarkDataType.AVImarkByte: case AVImarkDataType.AVImarkBool: fieldSize = 1; break; case AVImarkDataType.AVImarkDate: case AVImarkDataType.AVImarkTime: case AVImarkDataType.AVImarkWord: case AVImarkDataType.AVImarkInteger: fieldSize = 2; break; case AVImarkDataType.AVImarkSingle: case AVImarkDataType.AVImarkDoubleWord: case AVImarkDataType.AVImarkImpliedDecimal: case AVImarkDataType.AVImarkImpliedDecimal2: case AVImarkDataType.AVImarkSignedImpliedDecimal: case AVImarkDataType.AVImarkLongInteger: case AVImarkDataType.AVImarkLinkToPhrase: case AVImarkDataType.AVImarkLinkToWp: fieldSize = 4; break; case AVImarkDataType.AVImarkDouble: fieldSize = 8; break; case AVImarkDataType.AVImarkDynamicString: fieldSize = 0; break; default: fieldSize = 0; break; } return(fieldSize); }
protected int IntegerFieldValue(Enum fieldOrdinal, int recordNumber) { int intValue = 0; if (this.ModernRecordLength == null) { Definition databaseDefinition = LoadDatabaseDefinition(fieldOrdinal); if (_carsonLib.ReadFieldValueDoubleWord(_stream.SafeFileHandle, this.TableId, fieldOrdinal, _dataRecords[recordNumber - 1], ref intValue, databaseDefinition.FieldType, _isClassic) != 0) { //fieldOrdinal 0 is always the 'ID' field in any object Enum. If this ever returns 0, the call to retrieve the data was not successful if (Convert.ToInt32(fieldOrdinal) == 0) { throw new RecordLockedException(); } } } else { //We need to determine if this is an autonumber if this is a manual AVImarkDataType dataType = AVImarkDataType.AVImarkLongInteger; if (Convert.ToInt32(fieldOrdinal) == -1) { dataType = AVImarkDataType.AVImarkAutoNumber; } if (_carsonLib.ReadFieldValueDoubleWord(_stream.SafeFileHandle, this.TableId, FieldOffset(fieldOrdinal), _dataRecords[recordNumber - 1], ref intValue, dataType, RecordLength()) != 0) { //fieldOrdinal 0 is always the 'ID' field in any object Enum. If this ever returns 0, the call to retrieve the data was not successful if (Convert.ToInt32(fieldOrdinal) == 0) { throw new RecordLockedException(); } } } return(intValue); }
public int ReadFieldValueByte(SafeFileHandle fileHandle, TableInstance table, Enum fieldOrdinal, int recordNumber, ref byte dataPointer, AVImarkDataType dataType, int?fieldLength) { lock (_singleThread) { DatabaseHandles.Main = fileHandle; return(_readFieldValueByte2(DatabaseHandles, table, Convert.ToInt32(fieldOrdinal), recordNumber, ref dataPointer, dataType, (int)fieldLength)); } }
public int ReadFieldValueWord(SafeFileHandle fileHandle, TableInstance table, Enum fieldOrdinal, int recordNumber, ref ushort dataPointer, AVImarkDataType dataType, bool isClassic) { lock (_singleThread) { DatabaseHandles.Main = fileHandle; return(_readFieldValueWord(DatabaseHandles, table, Convert.ToInt32(fieldOrdinal), recordNumber, ref dataPointer, dataType, isClassic)); } }
public int ReadFieldValueFloat(SafeFileHandle fileHandle, TableInstance table, int fieldOrdinal, int recordNumber, ref float dataPointer, AVImarkDataType dataType, int?fieldLength) { lock (_singleThread) { DatabaseHandles.Main = fileHandle; return(_readFieldValueFloat2(DatabaseHandles, table, fieldOrdinal, recordNumber, ref dataPointer, dataType, (int)fieldLength)); } }