Валентин Озеров - Советы по Delphi. Версия 1.0.6

Тут можно читать онлайн Валентин Озеров - Советы по Delphi. Версия 1.0.6 - бесплатно полную версию книги (целиком). Жанр: comp-programming. Здесь Вы можете читать полную версию (весь текст) онлайн без регистрации и SMS на сайте LibKing.Ru (ЛибКинг) или прочесть краткое содержание, предисловие (аннотацию), описание и ознакомиться с отзывами (комментариями) о произведении.
Валентин Озеров - Советы по Delphi. Версия 1.0.6
  • Название:
    Советы по Delphi. Версия 1.0.6
  • Автор:
  • Жанр:
  • Издательство:
    неизвестно
  • Год:
    неизвестен
  • ISBN:
    нет данных
  • Рейтинг:
    5/5. Голосов: 81
  • Избранное:
    Добавить в избранное
  • Отзывы:
  • Ваша оценка:
    • 100
    • 1
    • 2
    • 3
    • 4
    • 5

Валентин Озеров - Советы по Delphi. Версия 1.0.6 краткое содержание

Советы по Delphi. Версия 1.0.6 - описание и краткое содержание, автор Валентин Озеров, читайте бесплатно онлайн на сайте электронной библиотеки LibKing.Ru

Советы по Delphi. Версия 1.0.6 - читать онлайн бесплатно полную версию (весь текст целиком)

Советы по Delphi. Версия 1.0.6 - читать книгу онлайн бесплатно, автор Валентин Озеров
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

Result := True;

Break;

end;

end;

if Result then Break else TheTable.Prior;

end;

end else begin

TheTable.Next;

while not TheTable.EOF do begin

for i:= LowTheFields to HighTheFields do begin

if DoFindIn(TheTable.Fields[TheFields[i]], SFor) then begin

Result:= True;

Break;

end;

end;

if Result then Break else TheTable.Next;

end;

end;

finally

TheTable.EnableControls;

if not Result then TheTable.GotoBookmark(BM);

TheTable.FreeBookmark(BM);

end;

end;

end.

Калькуляция

Хитрость OnCalcFields

Событие OncalcFields генерится ОЧЕНЬ часто и может быть необязательным и занимать большое количество времени, например, у вас есть таблица с неким вычисляемым полем, и при каждом редактировании таблицы вызывается следующий код:

MyCalcField.AsInteger:= Table1Field1.AsInteger + 10;

Теперь, если Вы решили пройти последовательно каждую запись огромной таблицы, вы можете представить, какое количество таких событий будет сгенерировано! Они будут необязательны в случае, если вы сделаете обработку полей в отдельной процедуре.

Мой совет следующий: выключите генерацию события OnCalcFields, обработайте все поля и снова включите генерацию данного события, к примеру так:

Procedure TForm1.BigProcessingFunction;

begin

Table1.OnCalcFields:= nil;

<���Включите любые по сложности вычисления в этом месте!>

Table1.OnCalcFields:= Table1OnCalcFields;

end;

Поля не вычисляются в течение времени обработки, которое может быть достаточно велико, но при наличие громоздких вычислений специфического поля (или даже нескольких полей), все вычисляется за один проход!

Данный метод позволяет исключить необязательный код и может быть использован повсюду, где применяются большие таблицы или сложный алгоритм калькуляции поля. Разница в скорости обработки таблицы довольно ощутима.

dBASE

Таблицы dBASE: Структура .DBF-файла

Иногда возникает необходимость поработать с таблицей dBASE напрямую, без Borland Database Engine (BDE). К примеру, если .DBT-файл (содержащий MEMO-данные) для данной таблицы безвозвратно потерян, .DBF-файл становится абсолютно непригодным, поскольку байт в заголовке .DBF-файла указывает, что таблица должна содержать соответствующий MEMO-файл. Решение этой проблемы потребует обнуление этого байта, для того чтобы таблица не указывала на сопутствующий MEMO-файл. Или, если Вам захотелось написать собственную программу для работы с данными.

Ниже приводяся структуры .DBF-файлов для таблиц dBASE. Представлены структуры файлов для различных версий dBASE: dBASE III PLUS 1.1, dBASE IV 2.0, dBASE 5.0 под DOS и dBASE 5.0 для Windows.

Структура заголовка файла данных для таблицы dBASE III PLUS.
Заголовок табличного файла
Байт Содержание Описание
0 1-й байт Определение наличия MEMO-файла в таблице dBASE III PLUS (03h без MEMO-файла (.DBT-файл;) 83h с MEMO-файлом).
1-3 3 байта Дата последнего обновления в формате YYMMDD
4-7 32-битное число Количество записей в таблице
8-9 16-битное число Количество байтов, занимаемых заголовком
10-11 16-битное число Количество байтов, занимаемых записью
12-14 3 байта Зарезервированная область
15-27 13 байт Зарезервировано для сетевой версии dBASE III PLUS
28-31 4 байта Зарезервированная область
32-n 32 байта Массив с описаниями полей (структура каждого такого описания показана ниже)
n+1 1 байт Хранится значение 0Dh, выполняющее роль терминатора описаний полей

n – последний байт массива с описаниями полей. Размер массива зависит от количества полей в табличном файле.

Описание поля таблицы
Байт Содержание Описание
0-10 11 байт Имя поля в ASCII (заполнено нулями).
11 1 байт Тип поля в ASCII (C, D, L, M или N)
12-15 4 байта Адрес данных поля (ссылка на память, а не на диск)
16 1 байт Размер поля в бинарном формате
17 1 байт Порядковый номер поля в бинарном формате
18-19 2 байта Зарезервировано для сетевой версии dBASE III PLUS
20 1 байт ID рабочей области
21-22 2 байта Зарезервировано для сетевой версии dBASE III PLUS
23 1 байт Флаг установки поля
24-31 1 байт Зарезервированная область
Записи таблицы

Записи в табличном файле располагаются непосредственно за заголовком таблицы. Данным записи предшествует байт, указывающий на удаленность записи: значение 20h (пробел) указывает что запись не удалена, значение 2Ah (звездочка) – запись была удалена. Поля упаковываются записями без разделителей полей или терминаторов записи. Конец файла помечается единственным байтом (с EOF-маркером), OEM-код которого соответствует значению 26 (1Ah). Вы можете ввести данные в кодовой странице OEM как показано ниже.

Допустимый тип данных таблиц dBASE
Тип данных Возможные значения
C (Символы) Все символы кодовой страницы OEM
D (Дата) Числа и символ-разделитель для месяца, дня и года (внутренний формат записи – 8 цифр в формате YYYYMMDD)
N (Числовой) – . 0 1 2 3 4 5 6 7 8 9
L (Логический) ? Y y N n T t F f (? – не инициализировано)
M (Мемо) Все символы кодовой страницы OEM (внутренний формат записи – 10 цифр, содержащих номер .DBT-блока)
Бинарные-, MEMO-, OLE-поля и .DBT-файлы

MEMO-поля хранят данные в .DBT-файлах, состоящих из перечисляемых последовательных блоков (0, 1, 2 и т.д.). Размер блока равен 512 байт. Первый блок в .DBT-файле (нулевой блок) – заголовок .DBT-файла.

MEMO-поле каждой записи .DBF-файла содержит номер (значение указывается в кодовой странице OEM), указывающий на блок с хранимыми данными. Если поле не содержит никаких данных, .DBF-файл будет заполнен пробелами (20h) (а не числами).

В случае изменения данных какого-либо поля, блоки могут изменить свои порядковые номера для отображения новой позиции данных в .DBT-файле.

Данная информация взята из руководства по использованию dBASE III Plus ("Using dBASE III PLUS", Appendix C).

Структура заголовка файла данных для таблицы dBASE IV 2.0.
Заголовок табличного файла
Байт Содержание Описание
0 1-й байт Контроль файла dBASE под Windows: биты 0-2 указывают номер версии, бит 3 - наличие MEMO-файла dBASE IV или dBASE под Windows, биты 4-6 - наличие dBASE IV SQL-таблицы, бит 7 - наличие любого .DBT MEMO-файла (MEMO-файл таблицы dBASE III Plus, dBASE IV или dBASE под Windows)
1-3 3 байта Дата последнего обновления в формате YYMMDD
4-7 32-битное число Количество записей в таблице
8-9 16-битное число Количество байтов, занимаемых заголовком
10-11 16-битное число Количество байтов, занимаемых записью
12-13 2 байта Зарезервированная область, заполнена нулями
14 1 байт Флаг, указывающий на наличие незавершенной транзакции dBASE IV
15 1 байт Флаг кодировки таблицы dBASE IV
16-27 12 байт Зарезервированная область для многопользовательского использования dBASE IV
28 1 байт Флаг наличия MDX-файла: 01H - файл для данной таблицы присутствует, 00H - файл отсутствует
29 1 байт ID драйвера языка
30-31 2 байта Зарезервированная область, заполнена нулями
32-n по 32 байта Массив с описаниями полей (структура данного массива показана ниже)
n+1 1 байт 0DH в качестве терминатора

n - последний байт массива с описаниями полей. Размер массива зависит от количества полей в табличном файле.

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать


Валентин Озеров читать все книги автора по порядку

Валентин Озеров - все книги автора в одном месте читать по порядку полные версии на сайте онлайн библиотеки LibKing.




Советы по Delphi. Версия 1.0.6 отзывы


Отзывы читателей о книге Советы по Delphi. Версия 1.0.6, автор: Валентин Озеров. Читайте комментарии и мнения людей о произведении.


Понравилась книга? Поделитесь впечатлениями - оставьте Ваш отзыв или расскажите друзьям

Напишите свой комментарий
x