Inherits from
TDataSet
constructor Create(AOwner:tComponent);
- ____________________________________________________________________________ TDBF.
procedure CreateTable;
____________________________________________________________________________ TDBF.
Procedure PackTable;
____________________________________________________________________________ TDBF.
Procedure SortTable(SortFields : Array of String);
____________________________________________________________________________ TDBF.
Procedure UnsortTable;
____________________________________________________________________________ TDBF.
function AllocRecordBuffer: PChar;
TDataSet virtual abstract method ____________________________________________________________________________ TDBF.
function FFieldSize(FType:char;FWidth:integer):integer;
FFieldType := ftString
function FFieldType(F : char):TFieldType;
Number of deleted records Returns the Type of the field
procedure FreeRecordBuffer(var Buffer: PChar);
____________________________________________________________________________ TDBF.
procedure GetBookmarkData(Buffer: PChar; Data: Pointer);
____________________________________________________________________________ TDBF.
function GetBookmarkFlag(Buffer: PChar): TBookmarkFlag;
____________________________________________________________________________ TDBF.
function GetFieldData(Field: TField; Buffer: Pointer): Boolean;
____________________________________________________________________________ TDBF.
function GetRecNo: Integer;
____________________________________________________________________________ TDBF.
function GetRecord(Buffer: PChar; GetMode: TGetMode; DoCheck: Boolean): TGetResult;
____________________________________________________________________________ TDBF.
function GetRecordCount: Integer;
TDataSet virtual method (optional ____________________________________________________________________________ TDBF.
function GetRecordSize: Word;
//////////////////////////////////////// //// Part III: //// Record buffers and field management //////////////////////////////////////// ____________________________________________________________________________ TDBF.
procedure InternalAddRecord(Buffer: Pointer; Append: Boolean);
____________________________________________________________________________ TDBF.
procedure InternalClose;
____________________________________________________________________________ TDBF.
procedure InternalDelete;
____________________________________________________________________________ TDBF.
procedure InternalFirst;
____________________________________________________________________________ TDBF.
procedure InternalGotoBookmark(Bookmark: Pointer);
////////////////////////////////////// //// Part II: //// Bookmarks management and movement ////////////////////////////////////// ____________________________________________________________________________ TDBF.
procedure InternalHandleException;
____________________________________________________________________________ TDBF.
procedure InternalInitFieldDefs;
____________________________________________________________________________ TDBF.
procedure InternalInitRecord(Buffer: PChar);
____________________________________________________________________________ TDBF.
procedure InternalLast;
____________________________________________________________________________ TDBF.
procedure InternalOpen;
/////////////////////////////////////////////// //// Part I: //// Initialization, opening, and closing /////////////////////////////////////////////// ____________________________________________________________________________ TDBF.
procedure InternalPost;
____________________________________________________________________________ TDBF.
procedure InternalSetToRecord(Buffer: PChar);
____________________________________________________________________________ TDBF.
function IsCursorOpen: Boolean;
____________________________________________________________________________ TDBF.
procedure SetBookmarkData(Buffer: PChar; Data: Pointer);
____________________________________________________________________________ TDBF.
procedure SetBookmarkFlag(Buffer: PChar; Value: TBookmarkFlag);
____________________________________________________________________________ TDBF.
procedure SetFieldData(Field: TField; Buffer: Pointer);
____________________________________________________________________________ TDBF.
procedure SetRecNo(Value: Integer);
____________________________________________________________________________ TDBF.
Procedure WriteHeader;
____________________________________________________________________________ TDBF.
Procedure _AppendRecord(Buffer:PChar);
____________________________________________________________________________ TDBF.
Function _CompareRecords(SortFields:Array of String;Rec1,Rec2:Integer):Integer;
____________________________________________________________________________ TDBF.
Procedure _ReadRecord(Buffer:PChar;IntRecNum:Integer);
type
PBDescribField = ^TBDescribField;
TBDescribField = packed Record
Name : Array[0.
Procedure _SwapRecords(Rec1,REc2:Integer);
____________________________________________________________________________ TDBF.
Procedure _WriteRecord(Buffer:PChar;IntRecNum:Integer);
____________________________________________________________________________ TDBF.
property Active :
redeclared data set properties
property AfterCancel :
property AfterClose :
property AfterDelete :
property AfterEdit :
property AfterInsert :
property AfterOpen :
property AfterPost :
property AfterScroll :
property BeforeCancel :
property BeforeClose :
property BeforeDelete :
property BeforeEdit :
property BeforeInsert :
property BeforeOpen :
property BeforePost :
property BeforeScroll :
property DBFHeader : tDBFHeader
property Filtered :
property ReadOnly : Boolean
property TableName : string
event OnCalcFields :
event OnDeleteError :
event OnEditError :
event OnFilterRecord :
event OnNewRecord :
event OnPostError :
BofCrack : Integer;
current record (0 to FRecordCount - 1
EofCrack : Integer;
before the first record (crack
FCurrentRecord : Integer;
offset of RecInfo in record buffer
fDBFHeader : TdbfHeader;
table path and file name
fDeletedCount : Integer;
Position in file where data starts
FFileDecimals : TList;
field widths in record
FFileOffset : TList;
field decimals in record
FFileWidth : TList;
status
FIsTableOpen : Boolean;
after the last record (crack
fReadOnly : Boolean;
field offsets in record
FRecordBufferSize : Integer;
the size of the actual data
FRecordCount : Integer;
The size of the record header
fRecordHeaderSize : Integer;
record data
FRecordInfoOffset : Integer;
data + housekeeping (TRecInfo
FRecordSize : Integer;
current number of record
fStartData : Integer;
Enhancements
FStream : TStream;
FTableName : string;
the physical table
constructor Create(AOwner:tComponent);
____________________________________________________________________________ TDBF.Create
procedure CreateTable;
____________________________________________________________________________ TDBF.CreateTable I: Create a new table/file
Procedure PackTable;
____________________________________________________________________________ TDBF.PackTable Enhancement: Remove all deleted items from the table.
Procedure SortTable(SortFields : Array of String);
____________________________________________________________________________ TDBF.SortTable Enhancement: Sort the table by the fields passed.
Procedure UnsortTable;
____________________________________________________________________________ TDBF.UnsortTable Used to help test the sort routine. Attempts to generate a random dispersment of the records in the dataset.
function AllocRecordBuffer: PChar;
TDataSet virtual abstract method
____________________________________________________________________________ TDBF.AllocRecordBuffer / III: Allocate a buffer for the record
function FFieldSize(FType:char;FWidth:integer):integer;
FFieldType := ftString
function FFieldType(F : char):TFieldType;
Number of deleted records
Returns the Type of the field
procedure FreeRecordBuffer(var Buffer: PChar);
____________________________________________________________________________ TDBF.FreeRecordBuffer III: Free the buffer
procedure GetBookmarkData(Buffer: PChar; Data: Pointer);
____________________________________________________________________________ TDBF.GetBookmarkData II: read the bookmark data from record buffer
function GetBookmarkFlag(Buffer: PChar): TBookmarkFlag;
____________________________________________________________________________ TDBF.GetBookmarkFlag II: retrieve bookmarks flags from buffer
function GetFieldData(Field: TField; Buffer: Pointer): Boolean;
____________________________________________________________________________ TDBF.GetFieldData III: Move data from record buffer to field
function GetRecNo: Integer;
____________________________________________________________________________ TDBF.GetRecNo II (optional): Get the number of the current record
function GetRecord(Buffer: PChar; GetMode: TGetMode; DoCheck: Boolean): TGetResult;
____________________________________________________________________________ TDBF.GetRecord III: Retrieve data for current, previous, or next record (eventually moving to it) and return the status
function GetRecordCount: Integer;
TDataSet virtual method (optional
____________________________________________________________________________ TDBF.GetRecordCount II (optional): Record count
function GetRecordSize: Word;
//////////////////////////////////////// //// Part III: //// Record buffers and field management //////////////////////////////////////// ____________________________________________________________________________ TDBF.GetRecordSize / III: Determine the size of each record buffer in memory
procedure InternalAddRecord(Buffer: Pointer; Append: Boolean);
____________________________________________________________________________ TDBF.InternalAddRecord III: Add the current data to the file
procedure InternalClose;
____________________________________________________________________________ TDBF.InternalClose I: close the table/file
procedure InternalDelete;
____________________________________________________________________________ TDBF.InternalDelete III: Delete the current record
procedure InternalFirst;
____________________________________________________________________________ TDBF.InternalFirst II: Go to a special position before the first record
procedure InternalGotoBookmark(Bookmark: Pointer);
////////////////////////////////////// //// Part II: //// Bookmarks management and movement ////////////////////////////////////// ____________________________________________________________________________ TDBF.InternalGotoBookmark II: set the requested bookmark as current record
procedure InternalHandleException;
____________________________________________________________________________ TDBF.InternalHandleException default exception handling
procedure InternalInitFieldDefs;
____________________________________________________________________________ TDBF.InternalInitFieldDefs I: define the fields
procedure InternalInitRecord(Buffer: PChar);
____________________________________________________________________________ TDBF.InternalInitRecord III: Initialize the record (set to zero
procedure InternalLast;
____________________________________________________________________________ TDBF.InternalLast II: Go to a special position after the last record
procedure InternalOpen;
/////////////////////////////////////////////// //// Part I: //// Initialization, opening, and closing /////////////////////////////////////////////// ____________________________________________________________________________ TDBF.InternalOpen I: open the table/file
procedure InternalPost;
____________________________________________________________________________ TDBF.InternalPost III: Write the current data to the file
procedure InternalSetToRecord(Buffer: PChar);
____________________________________________________________________________ TDBF.InternalSetToRecord II: same as above (but passes a buffer
function IsCursorOpen: Boolean;
____________________________________________________________________________ TDBF.IsCursorOpen I: is table open
procedure SetBookmarkData(Buffer: PChar; Data: Pointer);
____________________________________________________________________________ TDBF.SetBookmarkData II: set the bookmark data in the buffer
procedure SetBookmarkFlag(Buffer: PChar; Value: TBookmarkFlag);
____________________________________________________________________________ TDBF.SetBookmarkFlag II: change the bookmark flags in the buffer
procedure SetFieldData(Field: TField; Buffer: Pointer);
____________________________________________________________________________ TDBF.SetFieldData III: Move data from field to record buffer
procedure SetRecNo(Value: Integer);
____________________________________________________________________________ TDBF.SetRecNo II (optional): Move to the given record number
Procedure WriteHeader;
____________________________________________________________________________ TDBF.WriteHeader
Procedure _AppendRecord(Buffer:PChar);
____________________________________________________________________________ TDBF._AppendRecord
Function _CompareRecords(SortFields:Array of String;Rec1,Rec2:Integer):Integer;
____________________________________________________________________________ TDBF._CompareRecords Compare two records. Returns -1 if REC1 < REC2, 0 if REC1 = REC2, or 1 if REC1 > REC2.
Procedure _ReadRecord(Buffer:PChar;IntRecNum:Integer);
type
PBDescribField = ^TBDescribField;
TBDescribField = packed Record
Name : Array[0..27] of Char;
DataType : TFieldType;
DataSize : Integer;
Size : Integer;
Precision : Integer;
end;
// **************************************************************************** // Low Level Routines for accessing an internal record // ____________________________________________________________________________ // TDBF._ReadRecord
Procedure _SwapRecords(Rec1,REc2:Integer);
____________________________________________________________________________ TDBF._SwapRecords Enhancement: Quick swap of two records. Used primarily for sorting.
Procedure _WriteRecord(Buffer:PChar;IntRecNum:Integer);
____________________________________________________________________________ TDBF._WriteRecord
property Active :
redeclared data set properties
property AfterCancel :
property AfterClose :
property AfterDelete :
property AfterEdit :
property AfterInsert :
property AfterOpen :
property AfterPost :
property AfterScroll :
property BeforeCancel :
property BeforeClose :
property BeforeDelete :
property BeforeEdit :
property BeforeInsert :
property BeforeOpen :
property BeforePost :
property BeforeScroll :
property DBFHeader : tDBFHeader
property Filtered :
property ReadOnly : Boolean
property TableName : string
event OnCalcFields :
event OnDeleteError :
event OnEditError :
event OnFilterRecord :
event OnNewRecord :
event OnPostError :
BofCrack : Integer;
current record (0 to FRecordCount - 1
EofCrack : Integer;
before the first record (crack
FCurrentRecord : Integer;
offset of RecInfo in record buffer
fDBFHeader : TdbfHeader;
table path and file name
fDeletedCount : Integer;
Position in file where data starts
FFileDecimals : TList;
field widths in record
FFileOffset : TList;
field decimals in record
FFileWidth : TList;
status
FIsTableOpen : Boolean;
after the last record (crack
fReadOnly : Boolean;
field offsets in record
FRecordBufferSize : Integer;
the size of the actual data
FRecordCount : Integer;
The size of the record header
fRecordHeaderSize : Integer;
record data
FRecordInfoOffset : Integer;
data + housekeeping (TRecInfo
FRecordSize : Integer;
current number of record
fStartData : Integer;
Enhancements
FStream : TStream;
FTableName : string;
the physical table