Скачать DbfProc v1.9 beta - Библиотека для DBF

19.08.1995
Скачать файл (22,09 Кб)

Библиотека для работы в ТР/BP с файлами типа .DBF (формат dBase).

Данная библиотека распространяется свободно в том виде как она есть.

Изменения кода можно выполнять в том случае, если не будет затронута 
авторская метка и заголовок. При изменении кода прошу отмечать в
комментариях блоки, которые Вы добавили или помечать изменения в уже
существующем тексте. 
---------------------------------------------------------------------

В библиотеке использованы возможности ООП Turbo/Borland Pascal.
Основной объект это TDBF -  в нем реализованы основные процедуры и
функции. Для каждого файла базы данных нужно создавать свой экземпляр
объекта TDBF, для этой цели можно использовать динамическое
распределение через указатель на объект

                 PBase := New(PDBF,Init(...));

или использовать статический экземпляр объекта  

                 Base : TDBF;
                 ...
                 Base.Init(...);

  При завершении программы необходимо закрыть файл базы, выполняется 
это в деструкторе объекта:

                 Dispose(PBase,Done) 
                или 
                 Base.Done;

----------------------------------------------------------------------
Описание процедур и функций:

constructor Init(Name : String);  { Открытие базы данных }

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

destructor  Done; virtual;        { Закрытие БД }

 Предназначен для удаления всех динамически распределенных служебных
объектов, сохранения заголовка файла и его закрытия.


procedure CreateHeader(FType : Byte); { Подготовка пустого заголовка }
                            { FType - тип файла dBase,dBaseIIIMemo...}

 Создает пустой заголовок файла в том случае, если структура базы
еще не определена. FType - тип файла dBase,dBaseIIIMemo...
 

procedure WriteHeader;  { Запись заголовка в файл }

 Записывает созданый или измененный заголовок в файл базы данных.

procedure AppendField(Name : String; FTp : Char; LenI,LenD : Byte);

 Добавляет поле Name в заголовок пустой базы. FTp - тип поля,
   N - Число,
   C - Массив символов (строка),
   D - Дата,
   M - Мемо (пока не используется),
   B - Логическое

LenI - длина поля, LenD - число символов после точки (относится только
к типу 'N'); 

function  GetNumField(Name : String) :Integer;

 Найти поле по имени Name и получить его номер. 

function  GetFieldName(Num : Integer) :String;

 Найти поле по номеру Num и получить его имя.

function  GetFieldNum(Num : Integer) :String;

 Найти поле но номеру Num и прочесть значение.

function  GetField(Name : String) :String;

 Прочесть значение поля Name. Предварительно должна быть считана
логическая запись, иначе функция вернет пустое значение.  

function  GetTypeNum(Num : Integer) :Char;

  Прочесть тип поля номер Num.

function  GetType(Name : String) :Char;

  Прочесть тип поля Name.

function  GetLengthNum(Num : Integer): Integer;

  Прочесть длину поля Num.

function  GetLength(Name : String): Integer;

  Прочесть длину поля по имени Name.

function  GetDispNum(Num : Integer): Integer;

  Прочесть смещение поля Num в логической записи.

function  GetDisp(Name : String): Integer;

  Прочесть смещение поля Name в логической записи.

procedure ModifyFieldNum(Num :Integer; Par:String);

  Записать в поле Num значение Par.

procedure ModifyField(Name :String; Par:String);

  Записать в поле Name значение Par.

procedure SetPosition(Num : LongInt);

  Установить файл на запись Num;
   0-следующая, nnn - на запись nnn; 

procedure ReadRecord(Num : LongInt);

  Прочесть запись 0 - очередную, nnn- по номеру.

procedure WriteRecord(Num : LongInt);

  Записать  0 - в текущую запись, nn- по номеру.

procedure TruncateBase(Num : LongInt);
  
  Обрезать все за записью Num, если Num = 0 - за текущей записью.

procedure DeleteRecord(Num : LongInt);

  Пометить запись как удаленную.
  0 - в текущую запись, nn- по номеру.

procedure RestoreRecord(Num : LongInt);
  
  Снять пометку удаления с записи }
  0 - в текущую запись, nn- по номеру .

function  SearchRecord(Field,Key :String; Start : Boolean) :LongInt;
  Найти запись по ключу Key в поле Field.
  Start = First - поиск с первой записи,
  Start = Next - поиск от текущей записи.

function  CountRecs :LongInt;

  Прочесть число записей в базе.

function  GetFileSize : LongInt;

  Получить абсолютный размер базы в байтах.

function  CountDescriptors : Word;

Прочесть число дескрипторов в заголовке. Позволяет узнать сколько
полей входит в логическую запись.

procedure GetLastMode(var D,M,Y : Byte);

  Получить дату последней модификации файла базы данных.

procedure Index (IName : String);

  Открыть индексные файлы. Строка IName, представляет собой
список имен файлов-индексов, разделяемых пробелом или 
запятой. 

----------------------------------------------------------------------
* Эти функции не входят в объект TDBF, и находятся в этой библиотеке *
* только для удобства применения.                                    *
----------------------------------------------------------------------
*** Преобразование типов ***

function  RealToString(D : Double; Ln,Dc : Integer) : String;

 Комплексное число преобразовать в строку.Где Ln и Dc определяют 
формат в виде D:Ln:Dc. 

function  StringToReal(S: String) : Double; 

 Строку преобразовать в комплексное число.

function  StringToInteger(S: String) : LongInt;

 Преобразовать строку в целое число.

*** Строковые операции ***

function  SpaceCut(DString: String): String;

 Обрезать концевые пробелы,символы #0, #255.

function  UpString(DString :String) :String;

 Привести символы строки к верхнему регистру.
 
*** Прочее ***

procedure SetMaxFiles(Count:Word);

 Установить максимальное число открываемых файлов (чего-то 
не очень помогает)