Самоучитель по Delphi 7 для профессионалов



             

Типы данных



В среде разработки Delphi можно создавать приложения для работы с самыми разными базами данных. Такая универсальность подразумевает необходимость применения средств, которые бы обеспечили возможность работы со многими типами данных, используемыми в этих базах данных.

Естественно, что существует большая группа типов данных, конкретная реализация которых практически не отличается от платформы к платформе. Это, например, строки, символы, целые и вещественные числа и т. д.

Есть типы данных, которые реализованы далеко не на каждой платформе. Есть, наконец, просто уникальные типы данных.

Для удовлетворения потребностей разработчиков в Delphi применен следующий способ работы с типами данных.

Тип данных однозначно связан с конкретным полем таблицы базы данных. Без этого поля само понятие типа данных не имеет практического смысла. В Delphi свойства абстрактного поля инкапсулирует класс TField, который не имеет заранее определенного типа данных. Уже от этого класса порождено целое семейство классов для типизированных полей (см. рис. 13.1), каждый из которых умеет обращаться со своим типом данных.

 Примечание 

В классе TField имеется свойство DataType, которое отвечает за тип данных, но оно не может быть изменено.

Весь список доступных типов данных содержится в типе TFiieidType:

type TFieldType = (ftUnknown, ftString, ftSmallint, ftlnteger, ftWord, ftBoolean, ftFloat, ftCurrency, ftBCD, ftDate, ftTime, ftDateTime, ftBytes, ftVarBytes, ftAutoInc, ftBlob, ftMemo, ftGraphic, ftFmtMemo, ftParadoxOle, ftDBaseOle, ftTypedBinary, ftCursor, ftFixedChar, ftWideString, ftLargeint, ftADT, ftArray, ftReference, ftDataSet, ftOraBlob, ftOraClob, ftVariant, ftlnterface, ftlDispatch, ftGuid, ftTimeStamp, ftFMTBcd);

В табл. 13.1 рассматриваются все типы данных, которые можно использовать при разработке приложений для работы с базами данных.

Таблица 13.1. Типы данных

Тип

Класс

Описание

Неизвестный (ftUnknown)

Неопределенный тип данных

Строковый (ftString)

TStringField

Строка длиной до 8192 символов

Целый короткий (ftSmallint)

TSmalllntField

16-битное целое в диапазоне от -32 768 до 32 767

Целый (ftlnteger)

TIntegerField

32-битное целое в диапазоне от -2 147 483 648 до 2 147 483 647

Целый положительный

(ftWord)

TWordField

1 6-битное целое в диапазоне от 0 до 65535

Логический (ftBoolean)

TBooleanField

Значения True и False

Вещественный (ftFloat)

TFloatField

Вещественные положительные и отрицательные числа с точностью 15 цифр после запятой в диапазоне от 5,0x1 0"324 до 1,7x1 0308

Денежный

(ftCurrency)

TCurrencyField

Вещественные положительные и отрицательные числа с точностью 15 цифр после запятой в диапазоне от 5,0x1 0"324 до 1,7x1 0308. Дополнительно вставляется символ валюты

Десятичный с двоичным кодированием (ftBCD)

TBCDField

Вещественные числа с повышенной точностью (до 4 знаков перед запятой и до 20 знаков после запятой). Могут храниться в двоичном и десятичном форматах

Дата (ftDate)

TDateField

Дата

Время (ftTime)

TDateTimeField

Время

Календарный (ftDateTime)

TDateTimeField

Комбинированный формат с одновременным хранением даты и времени

Фиксированный буфер

(ftBytes)

TBytesField

Набор байтов фиксированного размера. Для работы с этим типом требуется выделять и освобождать память (методы GetMem И FreeMem)

Переменный буфер

(ftVarBytes)

TVarBytes Field

Набор байтов переменного размера. Текущий размер буфера хранится в первых двух байтах. Для работы с этим типом требуется выделять и освобождать память (методы GetMem И FreeMem)

Автоинкрементный

(ftAutoInc)

TAutoIncField

Значение поля в каждой новой записи автоматически увеличивается на 1 . Целое число в диапазоне от -2 147 483 648 до 2 147 483 647. Применяется для обеспечения уникальности значений ключей

BLOB

(ftBlob)

TBLOBField

Большой двоичный массив. Используется для хранения любых данных, которые можно преобразовать в цифровой массив (Memo, Graphic). В базах данных такие данные хранятся в отдельных файлах, а поле содержит лишь ссылки на них

Memo

(ftMemo)

TMemoField

Набор строк произвольной длины

Графический

(ftGraphic)

TGraphicField

Формат для хранения изображений

Форматированный Memo

(ftFmtMemo)

Форматированный набор строк произвольной длины

OLE Paradox

(ftParadoxOle)

Поле OLE для таблиц Paradox

OLE dBASE

(ftDBaseOle)

Поле OLE для таблиц dBASE

Типизированный двоичный

(ftTypedBinary)

Типизированный двоичный

Курсор Oracle

(ftCursor)

Курсор для хранимых процедур сервера Oracle

Фиксированный символьный

(ftFixedChar)

TStringField

Строка символов с нулевым символом в конце

Расширенный строковый

(ftWideString)

Динамически выделяемая строка 16-битных символов в кодировке Unicode

Целый большой

(ftLargeint)

TLargelntField

64-битное целое число

Абстрактный

(ftADT)

TADTField

Произвольный тип данных, создаваемый пользователем на сервере БД и используемый в приложении

Массив

(ftArray)

TArrayField

Массив полей любого типа, кроме

TarrayField

Ссылочный

(ftReference)

TReferenceField

Указатель на объект, содержащийся в другой таблице

Набор данных

(ftDataSet)

TDataSetField

Содержит набор данных, интегрированный в текущий набор данных

BLOB Oracle 8

(ftOraBlob)

Тип BLOB для сервера Oracle 8

CLOB Oracle 8

(ftOraClob)

Тип CLOB для сервера Oracle 8

Вариант

(ftVariant)

TVariantField

Вариант

Интерфейс

(ftlnterface)

TInterfaceField

Ссылка на интерфейс (потомок от lUnknown)

Ссылка на интерфейс IDispatch

(ftlDispatch)

TIDispatchField

Ссылка на интерфейс (потомок от IDispatch)

Глобальный идентификатор

(ftGuid)

TGuidField

Глобальный идентификатор GUID

Календарный

(ftTimeStamp)

Календарный тип для наборов данных dbExpress

Десятичный с двоичным кодированием

(ftFMTBcd)

TFMTBCDField

Тип BCD повышенной точности




Содержание  Назад  Вперед