{*******************************************************}
{ }
{ Простой модуль для работы с DBF файлами }
{ }
{ Copyright (c) 2003-2008 Серга Плотников }
{ zoth@bk.ru }
{ }
{*******************************************************}
UNIT DBFLite;
// DBFLite - Простой модуль для работы с DBF файлами
// Copyright (c) 2003-2008 Серга Плотников
// Почта: zoth@bk.ru
// Сайт : www.autoaf.ru
// ICQ : 235846782
// Условия распространения - Open Source
// Вы можете свободно использовать исходный файл этого модуля
// в каких угодно целях, необязательно даже ставить ссылку
// Модуль используется в работе достаточно давно,
// тем не менее, никаких гарантий правильной работы
// не даётся. Вы используете его на свой страх и риск
// Автор не несёт никакой ответственности ни за какие
// последствия использования данного модуля
// Основные возможности
// – Чтение, запись строковых, целочисленных,
// логических, MEMO и дата полей
// – Восстановление, удаление записей
// – Признак удалённой записи
// – Полная очистка таблицы
//
// Не поддерживаются (и не будут) никакие индексы.
// После исправления данных индексы лучше удалить
// и восстановить программой, предназначенной для этого
// Нет (и не будет) процедуры упаковки таблицы.
// Нет (и не будет) процедур для создания таблиц
// Для создания новой таблицы можно скопировать
// её структуру из готовой таблицы
// Конвертацию кодировок DOS <--> WIN написать несложно
// Готовые решения есть на сайте Королевства Дельфи
// Модуль тестировался на базе, созданной в FoxPro для Windows
// открываем базу, считываем заголовок
constructor Init(const FN: string; const ReadOnly: Boolean = false);
// закрываем базу
destructor Done;
// признак удалённой записи
function Deleted(const aRec: integer): boolean;
// удаление записи
procedure Delete(const aRec: integer);
// восстановление записи
procedure UnDelete(const aRec: integer);
// быстрая очистка таблицы
procedure Zap;
// номер поля по названию
function FieldByName(const FieldName: string): integer;
// чтение текста ячейки как есть по номеру записи, номеру поля
function ReadCell (const aRec, aField: integer): string;
// чтение строкового значения поля
function Readstring (const aRec, aField: integer): string;
// чтение числового значения поля
function ReadInteger(const aRec, aField: integer): integer;
// чтение логического значения поля
function ReadBool (const aRec, aField: integer): boolean;
// чтение значения поля типа дата
function ReadDate (const aRec, aField: integer): TDate;
// чтение MEMO значения поля
function ReadMemo (const aRec, aField: integer): string;
// вставка пустой записи в конец
procedure Insert;
// запись в ячейку строки как есть
procedure WriteCell (const aRec, aField: integer; const S: string);
// запись строкового значения поля
procedure Writestring (const aRec, aField: integer; const S: string);
// запись числового значения поля
procedure WriteInteger(const aRec, aField, x: integer);
// запись логического значения поля
procedure WriteBool (const aRec, aField: integer; b: boolean);
// запись значения поля типа дата
procedure WriteDate (const aRec, aField: integer; d: TDate);
// запись MEMO значения поля
procedure WriteMEMO (const aRec, aField: integer; const S: string);
// конвертация строковой даты в TDate
function StringDBFToDate(const S: string): TDate;
Понравилась статья? Расскажите о ней друзьям! назад на главную