コード例 #1
0
        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("");
            }
        }
コード例 #2
0
        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);
        }
コード例 #3
0
        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);
        }
コード例 #4
0
 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));
     }
 }
コード例 #5
0
 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));
     }
 }
コード例 #6
0
 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));
     }
 }