| Class TDBF (unit DBF) |
TDataSet
| Constructors |
constructor Create(AOwner:tComponent);| Functions |
procedure CreateTable;
Procedure PackTable;
Procedure SortTable(SortFields : Array of String);
Procedure UnsortTable;
function AllocRecordBuffer: PChar;____________________________________________________________________________ TDBF.
function FFieldSize(FType:char;FWidth:integer):integer;
function FFieldType(F : char):TFieldType;Returns the Type of the field
procedure FreeRecordBuffer(var Buffer: PChar);
procedure GetBookmarkData(Buffer: PChar; Data: Pointer);
function GetBookmarkFlag(Buffer: PChar): TBookmarkFlag;
function GetFieldData(Field: TField; Buffer: Pointer): Boolean;
function GetRecNo: Integer;
function GetRecord(Buffer: PChar; GetMode: TGetMode; DoCheck: Boolean): TGetResult;
function GetRecordCount: Integer;____________________________________________________________________________ TDBF.
function GetRecordSize: Word;
procedure InternalAddRecord(Buffer: Pointer; Append: Boolean);
procedure InternalClose;
procedure InternalDelete;
procedure InternalFirst;
procedure InternalGotoBookmark(Bookmark: Pointer);
procedure InternalHandleException;
procedure InternalInitFieldDefs;
procedure InternalInitRecord(Buffer: PChar);
procedure InternalLast;
procedure InternalOpen;
procedure InternalPost;
procedure InternalSetToRecord(Buffer: PChar);
function IsCursorOpen: Boolean;
procedure SetBookmarkData(Buffer: PChar; Data: Pointer);
procedure SetBookmarkFlag(Buffer: PChar; Value: TBookmarkFlag);
procedure SetFieldData(Field: TField; Buffer: Pointer);
procedure SetRecNo(Value: Integer);
Procedure WriteHeader;
Procedure _AppendRecord(Buffer:PChar);
Function _CompareRecords(SortFields:Array of String;Rec1,Rec2:Integer):Integer;
Procedure _ReadRecord(Buffer:PChar;IntRecNum:Integer);
Procedure _SwapRecords(Rec1,REc2:Integer);
Procedure _WriteRecord(Buffer:PChar;IntRecNum:Integer);| Properties |
property Active :
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| Events |
event OnCalcFields :
event OnDeleteError :
event OnEditError :
event OnFilterRecord :
event OnNewRecord :
event OnPostError : | Variables |
BofCrack : Integer;
EofCrack : Integer;
FCurrentRecord : Integer;
fDBFHeader : TdbfHeader;
fDeletedCount : Integer;
FFileDecimals : TList;
FFileOffset : TList;
FFileWidth : TList;
FIsTableOpen : Boolean;
fReadOnly : Boolean;
FRecordBufferSize : Integer;
FRecordCount : Integer;
fRecordHeaderSize : Integer;
FRecordInfoOffset : Integer;
FRecordSize : Integer;
fStartData : Integer;
FStream : TStream;
FTableName : string;| Constructors |
constructor Create(AOwner:tComponent);____________________________________________________________________________ TDBF.Create
| Functions |
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
| Properties |
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| Events |
event OnCalcFields :
event OnDeleteError :
event OnEditError :
event OnFilterRecord :
event OnNewRecord :
event OnPostError : | Variables |
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