Переглянути джерело

* Cleaned up old Arraybuf defines and code

git-svn-id: trunk@11492 -
joost 17 роки тому
батько
коміт
e8fcc2b82e
1 змінених файлів з 13 додано та 300 видалено
  1. 13 300
      packages/fcl-db/src/base/bufdataset.pas

+ 13 - 300
packages/fcl-db/src/base/bufdataset.pas

@@ -16,7 +16,6 @@
 
 
 unit BufDataset;
 unit BufDataset;
 
 
-{ $DEFINE ARRAYBUF}
 {$mode objfpc}
 {$mode objfpc}
 {$h+}
 {$h+}
 
 
@@ -70,26 +69,16 @@ type
 
 
   TRecUpdateBuffer = record
   TRecUpdateBuffer = record
     UpdateKind         : TUpdateKind;
     UpdateKind         : TUpdateKind;
-{$IFDEF ARRAYBUF}
 {  BookMarkData:
 {  BookMarkData:
      - Is -1 if the update has canceled out. For example: a appended record has been deleted again
      - Is -1 if the update has canceled out. For example: a appended record has been deleted again
      - If UpdateKind is ukInsert it contains a bookmark to the new created record
      - If UpdateKind is ukInsert it contains a bookmark to the new created record
      - If UpdateKind is ukModify it contains a bookmark to the record with the new data
      - If UpdateKind is ukModify it contains a bookmark to the record with the new data
      - If UpdateKind is ukDelete it contains a bookmark to the record just after the deleted record
      - If UpdateKind is ukDelete it contains a bookmark to the record just after the deleted record
-}
-    Bookmark           : TBufBookmark;
-{$ELSE}
-{  BookMarkData:
-     - Is nil if the update has canceled out. For example: a appended record has been deleted again
-     - If UpdateKind is ukInsert it contains the PBufRecLinkItem of the created record
-     - If UpdateKind is ukModify it contains the PBufRecLinkItem of the record with the new data
-     - If UpdateKind is ukDelete it contains the PBufRecLinkItem of the deleted record
 }
 }
     BookmarkData       : TBufBookmark;
     BookmarkData       : TBufBookmark;
-{$ENDIF}
 {  OldValuesBuffer:
 {  OldValuesBuffer:
      - If UpdateKind is ukModify it contains a record-buffer which contains the old data
      - If UpdateKind is ukModify it contains a record-buffer which contains the old data
-     - If UpdateKind is ukDelete it contains the PBufRecLinkItem of the deleted record
+     - If UpdateKind is ukDelete it contains a record-buffer with the data of the deleted record
 }
 }
     OldValuesBuffer    : pchar;
     OldValuesBuffer    : pchar;
   end;
   end;
@@ -111,8 +100,6 @@ type
                   end;
                   end;
   TDBCompareStruct = array of TDBCompareRec;
   TDBCompareStruct = array of TDBCompareRec;
 
 
-  PInternalBookmark = pointer;
-  
   { TBufIndex }
   { TBufIndex }
 
 
   TBufIndex = class(TObject)
   TBufIndex = class(TObject)
@@ -237,8 +224,6 @@ type
 
 
   TArrayBufIndex = class(TBufIndex)
   TArrayBufIndex = class(TBufIndex)
   private
   private
-    FCursOnFirstRec : boolean;
-
     FStoredRecBuf  : integer;
     FStoredRecBuf  : integer;
 
 
     FInitialBuffers,
     FInitialBuffers,
@@ -292,12 +277,7 @@ type
   TBufDataset = class(TDBDataSet)
   TBufDataset = class(TDBDataSet)
   private
   private
     FIndexes        : array of TBufIndex;
     FIndexes        : array of TBufIndex;
-{$IFDEF ARRAYBUF}
-    FInitialBuffers : integer;
-    FGrowBuffer     : integer;
-{$ELSE}
     FMaxIndexesCount: integer;
     FMaxIndexesCount: integer;
-{$ENDIF ARRAYBUF}
 
 
     FIndexesCount   : integer;
     FIndexesCount   : integer;
     FCurrentIndex   : TBufIndex;
     FCurrentIndex   : TBufIndex;
@@ -327,9 +307,6 @@ type
     procedure FetchAll;
     procedure FetchAll;
     procedure BuildIndex(var AIndex : TBufIndex);
     procedure BuildIndex(var AIndex : TBufIndex);
     function GetIndexDefs : TIndexDefs;
     function GetIndexDefs : TIndexDefs;
-{$IFDEF ARRAYBUF}
-    procedure AddRecordToIndex(var AIndex: TBufIndex; ARecBuf: pchar);
-{$ENDIF}
     function  GetCurrentBuffer: PChar;
     function  GetCurrentBuffer: PChar;
     procedure CalcRecordSize;
     procedure CalcRecordSize;
     function GetIndexFieldNames: String;
     function GetIndexFieldNames: String;
@@ -340,9 +317,7 @@ type
     procedure ProcessFieldCompareStruct(AField: TField; var ACompareRec : TDBCompareRec);
     procedure ProcessFieldCompareStruct(AField: TField; var ACompareRec : TDBCompareRec);
     procedure SetIndexFieldNames(const AValue: String);
     procedure SetIndexFieldNames(const AValue: String);
     procedure SetIndexName(AValue: String);
     procedure SetIndexName(AValue: String);
-{$IFNDEF ARRAYBUF}
     procedure SetMaxIndexesCount(const AValue: Integer);
     procedure SetMaxIndexesCount(const AValue: Integer);
-{$ENDIF}
     procedure SetPacketRecords(aValue : integer);
     procedure SetPacketRecords(aValue : integer);
     function  IntAllocRecordBuffer: PChar;
     function  IntAllocRecordBuffer: PChar;
     procedure DoFilterRecord(var Acceptable: Boolean);
     procedure DoFilterRecord(var Acceptable: Boolean);
@@ -407,9 +382,7 @@ type
     procedure AddIndex(const AName, AFields : string; AOptions : TIndexOptions; const ADescFields: string = '';
     procedure AddIndex(const AName, AFields : string; AOptions : TIndexOptions; const ADescFields: string = '';
       const ACaseInsFields: string = ''); virtual;
       const ACaseInsFields: string = ''); virtual;
     property ChangeCount : Integer read GetChangeCount;
     property ChangeCount : Integer read GetChangeCount;
-{$IFNDEF ARRAYBUF}
     property MaxIndexesCount : Integer read FMaxIndexesCount write SetMaxIndexesCount;
     property MaxIndexesCount : Integer read FMaxIndexesCount write SetMaxIndexesCount;
-{$ENDIF ARRAYBUF}
   published
   published
     property PacketRecords : Integer read FPacketRecords write SetPacketRecords default 10;
     property PacketRecords : Integer read FPacketRecords write SetPacketRecords default 10;
     property OnUpdateError: TResolverErrorEvent read FOnUpdateError write SetOnUpdateError;
     property OnUpdateError: TResolverErrorEvent read FOnUpdateError write SetOnUpdateError;
@@ -482,7 +455,6 @@ begin
 end;
 end;
 
 
 function DBCompareDouble(subValue, aValue: pointer; options: TLocateOptions): LargeInt;
 function DBCompareDouble(subValue, aValue: pointer; options: TLocateOptions): LargeInt;
-var Dbl : Double;
 begin
 begin
   // A simple subtraction doesn't work, since it could be that the result
   // A simple subtraction doesn't work, since it could be that the result
   // doesn't fit into a LargeInt
   // doesn't fit into a LargeInt
@@ -516,12 +488,7 @@ end;
 constructor TBufDataset.Create(AOwner : TComponent);
 constructor TBufDataset.Create(AOwner : TComponent);
 begin
 begin
   Inherited Create(AOwner);
   Inherited Create(AOwner);
-{$IFDEF ARRAYBUF}
-  FInitialBuffers:=10000;
-  FGrowBuffer:=1000;
-{$ELSE}
   FMaxIndexesCount:=2;
   FMaxIndexesCount:=2;
-{$ENDIF}
   FIndexesCount:=0;
   FIndexesCount:=0;
   InternalAddIndex('DEFAULT_ORDER','',[],'','');
   InternalAddIndex('DEFAULT_ORDER','',[],'','');
   FCurrentIndex:=FIndexes[0];
   FCurrentIndex:=FIndexes[0];
@@ -623,7 +590,6 @@ begin
     end;
     end;
 
 
 // This simply copies the index...
 // This simply copies the index...
-{$IFNDEF ARRAYBUF}
   PCurRecLinkItem:=(FIndexes[0] as TDoubleLinkedBufIndex).FFirstRecBuf;
   PCurRecLinkItem:=(FIndexes[0] as TDoubleLinkedBufIndex).FFirstRecBuf;
   PCurRecLinkItem[(AIndex as TDoubleLinkedBufIndex).IndNr].next := PCurRecLinkItem[0].next;
   PCurRecLinkItem[(AIndex as TDoubleLinkedBufIndex).IndNr].next := PCurRecLinkItem[0].next;
   PCurRecLinkItem[(AIndex as TDoubleLinkedBufIndex).IndNr].prior := PCurRecLinkItem[0].prior;
   PCurRecLinkItem[(AIndex as TDoubleLinkedBufIndex).IndNr].prior := PCurRecLinkItem[0].prior;
@@ -738,8 +704,6 @@ begin
   until MergeAmount = 1;
   until MergeAmount = 1;
   (AIndex as TDoubleLinkedBufIndex).FLastRecBuf[(AIndex as TDoubleLinkedBufIndex).IndNr].next:=(AIndex as TDoubleLinkedBufIndex).FFirstRecBuf;
   (AIndex as TDoubleLinkedBufIndex).FLastRecBuf[(AIndex as TDoubleLinkedBufIndex).IndNr].next:=(AIndex as TDoubleLinkedBufIndex).FFirstRecBuf;
   (AIndex as TDoubleLinkedBufIndex).FLastRecBuf[(AIndex as TDoubleLinkedBufIndex).IndNr].prior:=l;
   (AIndex as TDoubleLinkedBufIndex).FLastRecBuf[(AIndex as TDoubleLinkedBufIndex).IndNr].prior:=l;
-
-{$ENDIF}
 end;
 end;
 
 
 function TBufDataset.GetIndexDefs : TIndexDefs;
 function TBufDataset.GetIndexDefs : TIndexDefs;
@@ -770,16 +734,11 @@ end;
 function TBufDataset.intAllocRecordBuffer: PChar;
 function TBufDataset.intAllocRecordBuffer: PChar;
 begin
 begin
   // Note: Only the internal buffers of TDataset provide bookmark information
   // Note: Only the internal buffers of TDataset provide bookmark information
-{$IFDEF ARRAYBUF}
-  result := AllocMem(FRecordsize);
-{$ELSE}
   result := AllocMem(FRecordsize+sizeof(TBufRecLinkItem)*FMaxIndexesCount);
   result := AllocMem(FRecordsize+sizeof(TBufRecLinkItem)*FMaxIndexesCount);
-{$ENDIF}
 end;
 end;
 
 
 function TBufDataset.AllocRecordBuffer: PChar;
 function TBufDataset.AllocRecordBuffer: PChar;
 begin
 begin
-//  result := AllocMem(FRecordsize + sizeof(TBufBookmark) + CalcfieldsSize);
   result := AllocMem(FRecordsize + BookmarkSize + CalcfieldsSize);
   result := AllocMem(FRecordsize + BookmarkSize + CalcfieldsSize);
 // The records are initialised, or else the fields of an empty, just-opened dataset
 // The records are initialised, or else the fields of an empty, just-opened dataset
 // are not null
 // are not null
@@ -806,19 +765,8 @@ begin
 
 
   FBRecordcount := 0;
   FBRecordcount := 0;
 
 
-{$IFNDEF ARRAYBUF}
   for IndexNr:=0 to FIndexesCount-1 do with FIndexes[IndexNr] do
   for IndexNr:=0 to FIndexesCount-1 do with FIndexes[IndexNr] do
-    begin
     InitialiseSpareRecord(IntAllocRecordBuffer);
     InitialiseSpareRecord(IntAllocRecordBuffer);
-    end;
-{$ELSE}
-  for IndexNr:=0 to FIndexesCount-1 do with FIndexes[IndexNr] do
-    begin
-    FLastRecInd := 0;
-    FCurrentRecInd := 0;
-    FRecordArray[0] := IntAllocRecordBuffer;
-    end;
-{$ENDIF}
 
 
   FAllPacketsFetched := False;
   FAllPacketsFetched := False;
 
 
@@ -838,17 +786,12 @@ procedure TBufDataset.InternalClose;
 
 
 var r  : integer;
 var r  : integer;
     iGetResult : TGetResult;
     iGetResult : TGetResult;
-{$IFNDEF ARRAYBUF}
     pc : pchar;
     pc : pchar;
-{$ENDIF}
 
 
 begin
 begin
   FOpen:=False;
   FOpen:=False;
   with FIndexes[0] do if IsInitialized then
   with FIndexes[0] do if IsInitialized then
     begin
     begin
-{$IFDEF ARRAYBUF}
-    for r := 0 to FLastRecInd-1 do FreeRecordBuffer(FRecordArray[r]);
-{$ELSE}
     iGetResult:=ScrollFirst;
     iGetResult:=ScrollFirst;
     while iGetResult = grOK do
     while iGetResult = grOK do
       begin
       begin
@@ -856,29 +799,20 @@ begin
       iGetResult:=ScrollForward;
       iGetResult:=ScrollForward;
       FreeRecordBuffer(pc);
       FreeRecordBuffer(pc);
       end;
       end;
-{$ENDIF}
     end;
     end;
 
 
   for r := 0 to FIndexesCount-1 do with FIndexes[r] do if IsInitialized then
   for r := 0 to FIndexesCount-1 do with FIndexes[r] do if IsInitialized then
     begin
     begin
-{$IFDEF ARRAYBUF}
-//    FreeRecordBuffer(FRecordArray[FLastRecInd]);
-{$ELSE}
     pc := SpareRecord;
     pc := SpareRecord;
     ReleaseSpareRecord;
     ReleaseSpareRecord;
     FreeRecordBuffer(pc);
     FreeRecordBuffer(pc);
-{$ENDIF}
     end;
     end;
 
 
   if Length(FUpdateBuffer) > 0 then
   if Length(FUpdateBuffer) > 0 then
     begin
     begin
     for r := 0 to length(FUpdateBuffer)-1 do with FUpdateBuffer[r] do
     for r := 0 to length(FUpdateBuffer)-1 do with FUpdateBuffer[r] do
       begin
       begin
-{$IFDEF ARRAYBUF}
-      if Bookmark.BookmarkData > 0 then
-{$ELSE}
       if assigned(OldValuesBuffer) then
       if assigned(OldValuesBuffer) then
-{$ENDIF}
         FreeRecordBuffer(OldValuesBuffer);
         FreeRecordBuffer(OldValuesBuffer);
       end;
       end;
     end;
     end;
@@ -901,12 +835,8 @@ procedure TBufDataset.InternalFirst;
 begin
 begin
   with FCurrentIndex do
   with FCurrentIndex do
     begin
     begin
-{$IFDEF ARRAYBUF}
 // if FCurrentRecBuf = FLastRecBuf then the dataset is just opened and empty
 // if FCurrentRecBuf = FLastRecBuf then the dataset is just opened and empty
 // in which case InternalFirst should do nothing (bug 7211)
 // in which case InternalFirst should do nothing (bug 7211)
-    if FCurrentRecInd <> FLastRecInd then
-      FCurrentRecInd := -1;
-{$ENDIF}
     SetToFirstRecord;
     SetToFirstRecord;
     end;
     end;
 end;
 end;
@@ -915,11 +845,7 @@ procedure TBufDataset.InternalLast;
 begin
 begin
   FetchAll;
   FetchAll;
   with FCurrentIndex do
   with FCurrentIndex do
-{$IFDEF ARRAYBUF}
-    if FLastRecInd <> 0 then FCurrentRecInd := FLastRecInd;
-{$ELSE}
-    SetToLastRecord;
-{$ENDIF}
+  SetToLastRecord;
 end;
 end;
 
 
 procedure unSetFieldIsNull(NullMask : pbyte;x : longint); //inline;
 procedure unSetFieldIsNull(NullMask : pbyte;x : longint); //inline;
@@ -1062,9 +988,7 @@ end;
 
 
 procedure TDoubleLinkedBufIndex.GotoBookmark(const ABookmark : PBufBookmark);
 procedure TDoubleLinkedBufIndex.GotoBookmark(const ABookmark : PBufBookmark);
 begin
 begin
-  // note that ABookMarkLocation should be a PBufBookmark. But this way it can
-  // also be a pointer to a TBufRecLinkItem
-  FCurrentRecBuf := ABookmark^.BookmarkData; // is effectively the same as: PBufBookmark(ABookmarkLocation)^.BookmarkData;
+  FCurrentRecBuf := ABookmark^.BookmarkData;
 end;
 end;
 
 
 procedure TDoubleLinkedBufIndex.InitialiseIndex;
 procedure TDoubleLinkedBufIndex.InitialiseIndex;
@@ -1096,7 +1020,7 @@ end;
 procedure TDoubleLinkedBufIndex.RemoveRecordFromIndex(const ABookmark : TBufBookmark);
 procedure TDoubleLinkedBufIndex.RemoveRecordFromIndex(const ABookmark : TBufBookmark);
 var ARecord : PBufRecLinkItem;
 var ARecord : PBufRecLinkItem;
 begin
 begin
-  ARecord := ABookmark.BookmarkData;//pointer(ARecordBuffer)-(sizeof(TBufRecLinkItem)*FDataset.MaxIndexesCount);
+  ARecord := ABookmark.BookmarkData;
   if ARecord <> FFirstRecBuf then
   if ARecord <> FFirstRecBuf then
     ARecord[IndNr].prior[IndNr].next := ARecord[IndNr].next
     ARecord[IndNr].prior[IndNr].next := ARecord[IndNr].next
   else
   else
@@ -1175,17 +1099,7 @@ begin
     Acceptable := True;
     Acceptable := True;
     case GetMode of
     case GetMode of
       gmPrior : Result := ScrollBackward;
       gmPrior : Result := ScrollBackward;
-{$IFDEF ARRAYBUF}
-        if FCurrentRecInd=0 then
-          Result := grBOF
-        else
-          Dec(FCurrentRecInd);
-{$ENDIF}
       gmCurrent : Result := GetCurrent;
       gmCurrent : Result := GetCurrent;
-{$IFDEF ARRAYBUF}
-        if FCurrentRecInd = FLastRecInd then
-          Result := grError;
-{$ENDIF}
       gmNext : begin
       gmNext : begin
                if not CanScrollForward and (getnextpacket = 0) then result := grEOF
                if not CanScrollForward and (getnextpacket = 0) then result := grEOF
                else
                else
@@ -1194,28 +1108,6 @@ begin
                  DoScrollForward;
                  DoScrollForward;
                  end;
                  end;
                end;
                end;
-{$IFDEF ARRAYBUF}
-        if FCurrentRecInd = FLastRecInd then // Dataset is empty (just opened)
-          begin
-          if getnextpacket = 0 then result := grEOF;
-          end
-        else if FCurrentRecInd = -1 then FCurrentRecInd := 0
-        else if FCurrentRecInd = FLastRecInd-1 then
-          begin
-          if getnextpacket > 0 then
-            begin
-            inc(FCurrentRecInd);
-            end
-          else
-            begin
-            result:=grEOF;
-            end
-          end
-        else
-          begin
-          inc(FCurrentRecInd);
-          end;
-{$ENDIF}
     end;
     end;
 
 
     if Result = grOK then
     if Result = grOK then
@@ -1227,20 +1119,6 @@ begin
         ABookmark^.BookmarkFlag:=bfCurrent;
         ABookmark^.BookmarkFlag:=bfCurrent;
         StoreCurrentRecIntoBookmark(ABookMark);
         StoreCurrentRecIntoBookmark(ABookMark);
         end;
         end;
-{      with PBufBookmark(Buffer + FRecordSize)^ do
-        begin
-{ $IFDEF ARRAYBUF}
-        BookmarkData := FCurrentIndex^.FCurrentRecInd;
-        BookMarkBuf := FCurrentIndex^.FRecordArray[FCurrentIndex^.FCurrentRecInd];
-{ $ELSE}
-        BookmarkData := FCurrentRecBuf;
-{ $ENDIF}
-        BookmarkFlag := bfCurrent;
-        end;}
-{$IFDEF ARRAYBUF}
-      with FCurrentIndex^ do
-        move((FRecordArray[FCurrentRecInd])^,buffer^,FRecordSize);
-{$ENDIF}
 
 
       GetCalcFields(Buffer);
       GetCalcFields(Buffer);
 
 
@@ -1269,12 +1147,7 @@ var x : integer;
     ABookmark : TBufBookmark;
     ABookmark : TBufBookmark;
 
 
 begin
 begin
-{$IFDEF ARRAYBUF}
   GetBookmarkData(ActiveBuffer,@ABookmark);
   GetBookmarkData(ActiveBuffer,@ABookmark);
-  CurrBuff:=GetRecordFromBookmark(ABookmark);
-{$ELSE}
-  GetBookmarkData(ActiveBuffer,@ABookmark);
-{$ENDIF}
   if (FCurrentUpdateBuffer >= length(FUpdateBuffer)) or not FCurrentIndex.CompareBookmarks(@FUpdateBuffer[FCurrentUpdateBuffer].BookmarkData,@ABookmark) then
   if (FCurrentUpdateBuffer >= length(FUpdateBuffer)) or not FCurrentIndex.CompareBookmarks(@FUpdateBuffer[FCurrentUpdateBuffer].BookmarkData,@ABookmark) then
    for x := 0 to high(FUpdateBuffer) do
    for x := 0 to high(FUpdateBuffer) do
     if FCurrentIndex.CompareBookmarks(@FUpdateBuffer[x].BookmarkData,@ABookmark) then
     if FCurrentIndex.CompareBookmarks(@FUpdateBuffer[x].BookmarkData,@ABookmark) then
@@ -1338,7 +1211,6 @@ begin
       end;
       end;
 end;
 end;
 
 
-{$IFNDEF ARRAYBUF}
 procedure TBufDataset.SetMaxIndexesCount(const AValue: Integer);
 procedure TBufDataset.SetMaxIndexesCount(const AValue: Integer);
 begin
 begin
   CheckInactive;
   CheckInactive;
@@ -1347,23 +1219,15 @@ begin
   else
   else
     DatabaseError(SMinIndexes);
     DatabaseError(SMinIndexes);
 end;
 end;
-{$ENDIF}
 
 
 procedure TBufDataset.InternalSetToRecord(Buffer: PChar);
 procedure TBufDataset.InternalSetToRecord(Buffer: PChar);
 begin
 begin
-{$IFDEF ARRAYBUF}
-  FCurrentIndex^.FCurrentRecInd:=GetRecordFromBookmark(PBufBookmark(Buffer + FRecordSize)^);
-{$ENDIF}
   FCurrentIndex.GotoBookmark(PBufBookmark(Buffer+FRecordSize));
   FCurrentIndex.GotoBookmark(PBufBookmark(Buffer+FRecordSize));
 end;
 end;
 
 
 procedure TBufDataset.SetBookmarkData(Buffer: PChar; Data: Pointer);
 procedure TBufDataset.SetBookmarkData(Buffer: PChar; Data: Pointer);
 begin
 begin
-{$IFDEF ARRAYBUF}
-  PBufBookmark(Buffer + FRecordSize)^.BookmarkData := integer(Data^);
-{$ELSE}
   PBufBookmark(Buffer + FRecordSize)^.BookmarkData := pointer(Data^);
   PBufBookmark(Buffer + FRecordSize)^.BookmarkData := pointer(Data^);
-{$ENDIF}
 end;
 end;
 
 
 procedure TBufDataset.SetBookmarkFlag(Buffer: PChar; Value: TBookmarkFlag);
 procedure TBufDataset.SetBookmarkFlag(Buffer: PChar; Value: TBookmarkFlag);
@@ -1373,11 +1237,7 @@ end;
 
 
 procedure TBufDataset.GetBookmarkData(Buffer: PChar; Data: Pointer);
 procedure TBufDataset.GetBookmarkData(Buffer: PChar; Data: Pointer);
 begin
 begin
-{$IFDEF ARRAYBUF}
-  PBufBookmark(Data)^ := PBufBookmark(Buffer + FRecordSize)^;
-{$ELSE}
   pointer(Data^) := PBufBookmark(Buffer + FRecordSize)^.BookmarkData;
   pointer(Data^) := PBufBookmark(Buffer + FRecordSize)^.BookmarkData;
-{$ENDIF}
 end;
 end;
 
 
 function TBufDataset.GetBookmarkFlag(Buffer: PChar): TBookmarkFlag;
 function TBufDataset.GetBookmarkFlag(Buffer: PChar): TBookmarkFlag;
@@ -1389,14 +1249,10 @@ procedure TBufDataset.InternalGotoBookmark(ABookmark: Pointer);
 begin
 begin
   // note that ABookMark should be a PBufBookmark. But this way it can also be
   // note that ABookMark should be a PBufBookmark. But this way it can also be
   // a pointer to a TBufRecLinkItem
   // a pointer to a TBufRecLinkItem
-{$IFDEF ARRAYBUF}
-  FCurrentIndex^.FCurrentRecInd:=GetRecordFromBookmark(PBufBookmark(ABookmark)^);
-{$ELSE}
   FCurrentIndex.GotoBookmark(ABookmark);
   FCurrentIndex.GotoBookmark(ABookmark);
-{$ENDIF}
 end;
 end;
 
 
-{$IFDEF ARRAYBUF}
+(*
 procedure TBufDataset.AddRecordToIndex(var AIndex: TBufIndex; ARecBuf : pchar);
 procedure TBufDataset.AddRecordToIndex(var AIndex: TBufIndex; ARecBuf : pchar);
 var cp : integer;
 var cp : integer;
     NewValueBufLen : Integer;
     NewValueBufLen : Integer;
@@ -1447,7 +1303,7 @@ begin
   AIndex.FRecordArray[RecInd]:= ARecBuf;
   AIndex.FRecordArray[RecInd]:= ARecBuf;
   inc(AIndex.FLastRecInd)
   inc(AIndex.FLastRecInd)
 end;
 end;
-{$ENDIF}
+*)
 
 
 function TBufDataset.getnextpacket : integer;
 function TBufDataset.getnextpacket : integer;
 
 
@@ -1644,11 +1500,7 @@ begin
     end;
     end;
   if state = dsFilter then  // Set the value into the 'temporary' FLastRecBuf buffer for Locate and Lookup
   if state = dsFilter then  // Set the value into the 'temporary' FLastRecBuf buffer for Locate and Lookup
     with FCurrentIndex do
     with FCurrentIndex do
-{$IFDEF ARRAYBUF}
-      CurrBuff := FRecordArray[FLastRecInd]
-{$ELSE}
       CurrBuff := SpareBuffer
       CurrBuff := SpareBuffer
-{$ENDIF}
   else
   else
     CurrBuff := GetCurrentBuffer;
     CurrBuff := GetCurrentBuffer;
   If Field.Fieldno > 0 then // If = 0, then calculated field or something
   If Field.Fieldno > 0 then // If = 0, then calculated field or something
@@ -1682,12 +1534,8 @@ var i         : Integer;
     RemRecBuf : Pchar;
     RemRecBuf : Pchar;
     RemRec    : pointer;
     RemRec    : pointer;
     RemRecBookmrk : TBufBookmark;
     RemRecBookmrk : TBufBookmark;
-{$IFDEF ARRAYBUF}
-    ABookmark : TBufBookmark;
-{$ENDIF}
 begin
 begin
   InternalSetToRecord(ActiveBuffer);
   InternalSetToRecord(ActiveBuffer);
-{$IFNDEF ARRAYBUF}
   // Remove the record from all active indexes
   // Remove the record from all active indexes
   FCurrentIndex.StoreCurrentRecIntoBookmark(@RemRecBookmrk);
   FCurrentIndex.StoreCurrentRecIntoBookmark(@RemRecBookmrk);
   RemRecBuf:=FCurrentIndex.GetCurrentRecord;
   RemRecBuf:=FCurrentIndex.GetCurrentRecord;
@@ -1696,7 +1544,6 @@ begin
   if FCurrentIndex=FIndexes[1] then StartInd := 1 else StartInd := 2;
   if FCurrentIndex=FIndexes[1] then StartInd := 1 else StartInd := 2;
   for i := StartInd to FIndexesCount-1 do
   for i := StartInd to FIndexesCount-1 do
     findexes[i].RemoveRecordFromIndex(RemRecBookmrk);
     findexes[i].RemoveRecordFromIndex(RemRecBookmrk);
-{$ENDIF}
 
 
 // If a modified record is deleted, and GetRecordUpdateBuffer is used, problems
 // If a modified record is deleted, and GetRecordUpdateBuffer is used, problems
 // may arise. The 'delete' is placed in the update-buffer before the actual delete
 // may arise. The 'delete' is placed in the update-buffer before the actual delete
@@ -1707,19 +1554,10 @@ begin
     FCurrentUpdateBuffer := length(FUpdateBuffer);
     FCurrentUpdateBuffer := length(FUpdateBuffer);
     SetLength(FUpdateBuffer,FCurrentUpdateBuffer+1);
     SetLength(FUpdateBuffer,FCurrentUpdateBuffer+1);
 
 
-{$IFDEF ARRAYBUF}
-    with (FIndexes[0] as TDoubleLinkedBufIndex) do
-      begin
-      FUpdateBuffer[FCurrentUpdateBuffer].OldValuesBuffer := FRecordArray[FCurrentRecInd];
-      FUpdateBuffer[FCurrentUpdateBuffer].Bookmark.BookMarkBuf:=nil;
-      FUpdateBuffer[FCurrentUpdateBuffer].Bookmark.BookmarkData := FCurrentRecInd;
-      end;
-{$ELSE}
     FUpdateBuffer[FCurrentUpdateBuffer].OldValuesBuffer := IntAllocRecordBuffer;
     FUpdateBuffer[FCurrentUpdateBuffer].OldValuesBuffer := IntAllocRecordBuffer;
     move(RemRec^, FUpdateBuffer[FCurrentUpdateBuffer].OldValuesBuffer^,FRecordSize);
     move(RemRec^, FUpdateBuffer[FCurrentUpdateBuffer].OldValuesBuffer^,FRecordSize);
     FreeRecordBuffer(RemRecBuf);
     FreeRecordBuffer(RemRecBuf);
     FCurrentIndex.StoreCurrentRecIntoBookmark(@FUpdateBuffer[FCurrentUpdateBuffer].BookmarkData);
     FCurrentIndex.StoreCurrentRecIntoBookmark(@FUpdateBuffer[FCurrentUpdateBuffer].BookmarkData);
-{$ENDIF}
     end
     end
   else //with FIndexes[0] do
   else //with FIndexes[0] do
     begin
     begin
@@ -1729,14 +1567,6 @@ begin
       FUpdateBuffer[FCurrentUpdateBuffer].OldValuesBuffer := nil;  //this 'disables' the updatebuffer
       FUpdateBuffer[FCurrentUpdateBuffer].OldValuesBuffer := nil;  //this 'disables' the updatebuffer
     end;
     end;
 
 
-{$IFDEF ARRAYBUF}
-  with FCurrentIndex^ do
-    begin
-    Move(FRecordArray[FCurrentRecInd+1],FRecordArray[FCurrentRecInd],sizeof(Pointer)*(FLastRecInd-FCurrentRecInd));
-    dec(FLastRecInd);
-    end;
-{$ENDIF}
-
   dec(FBRecordCount);
   dec(FBRecordCount);
   FUpdateBuffer[FCurrentUpdateBuffer].UpdateKind := ukDelete;
   FUpdateBuffer[FCurrentUpdateBuffer].UpdateKind := ukDelete;
 end;
 end;
@@ -1753,9 +1583,6 @@ procedure TBufDataset.CancelUpdates;
 var r              : Integer;
 var r              : Integer;
     StoreRecBM     : TBufBookmark;
     StoreRecBM     : TBufBookmark;
     TmpBuf         : PChar;
     TmpBuf         : PChar;
-{$IFDEF ARRAYBUF}
-    RecInd         : integer;
-{$ENDIF}
 
 
 begin
 begin
   CheckBrowseMode;
   CheckBrowseMode;
@@ -1766,53 +1593,24 @@ begin
     r := Length(FUpdateBuffer) -1;
     r := Length(FUpdateBuffer) -1;
     while r > -1 do with FUpdateBuffer[r] do
     while r > -1 do with FUpdateBuffer[r] do
       begin
       begin
-{$IFDEF ARRAYBUF}
-      if FUpdateBuffer[r].Bookmark.BookmarkData <> -1 then
-{$ELSE}
-//      if assigned(FUpdateBuffer[r].BookmarkData) then
-{$ENDIF}
         begin
         begin
         if UpdateKind = ukModify then
         if UpdateKind = ukModify then
           begin
           begin
-{$IFDEF ARRAYBUF}
-          with FCurrentIndex^ do
-            begin
-            FreeRecordBuffer(FRecordArray[Bookmark.BookmarkData]);
-            FRecordArray[Bookmark.BookmarkData] := OldValuesBuffer;
-            end;
-{$ELSE}
           FCurrentIndex.GotoBookmark(@BookmarkData);
           FCurrentIndex.GotoBookmark(@BookmarkData);
           move(pchar(OldValuesBuffer)^,pchar(FCurrentIndex.CurrentBuffer)^,FRecordSize);
           move(pchar(OldValuesBuffer)^,pchar(FCurrentIndex.CurrentBuffer)^,FRecordSize);
           FreeRecordBuffer(OldValuesBuffer);
           FreeRecordBuffer(OldValuesBuffer);
-{$ENDIF}
           end
           end
         else if (UpdateKind = ukDelete) and (assigned(FUpdateBuffer[r].OldValuesBuffer)) then
         else if (UpdateKind = ukDelete) and (assigned(FUpdateBuffer[r].OldValuesBuffer)) then
           begin
           begin
-{$IFDEF ARRAYBUF}
-          RecInd := GetRecordFromBookmark(Bookmark);
-          with FCurrentIndex^ do
-            begin
-            move(FRecordArray[RecInd],FRecordArray[RecInd+1],sizeof(Pointer)*(FLastRecInd-RecInd+1));
-            FRecordArray[RecInd] := OldValuesBuffer;
-            inc(FLastRecInd);
-            end;
-{$ELSE}
           FCurrentIndex.GotoBookmark(@BookmarkData);
           FCurrentIndex.GotoBookmark(@BookmarkData);
           FCurrentIndex.InsertRecordBeforeCurrentRecord(IntAllocRecordBuffer);
           FCurrentIndex.InsertRecordBeforeCurrentRecord(IntAllocRecordBuffer);
           FCurrentIndex.ScrollBackward;
           FCurrentIndex.ScrollBackward;
           move(pchar(OldValuesBuffer)^,pchar(FCurrentIndex.CurrentBuffer)^,FRecordSize);
           move(pchar(OldValuesBuffer)^,pchar(FCurrentIndex.CurrentBuffer)^,FRecordSize);
           FreeRecordBuffer(OldValuesBuffer);
           FreeRecordBuffer(OldValuesBuffer);
-{$ENDIF}
           inc(FBRecordCount);
           inc(FBRecordCount);
           end
           end
         else if UpdateKind = ukInsert then
         else if UpdateKind = ukInsert then
           begin
           begin
-{$IFDEF ARRAYBUF}
-          RecInd := GetRecordFromBookmark(Bookmark);
-          FreeRecordBuffer(FCurrentIndex^.FRecordArray[RecInd]);
-          move(FCurrentIndex^.FRecordArray[RecInd+1],FCurrentIndex^.FRecordArray[RecInd],sizeof(Pointer)*(FCurrentIndex^.FLastRecInd-RecInd));
-          dec(FCurrentIndex^.FLastRecInd);
-{$ELSE}
           FCurrentIndex.GotoBookmark(@BookmarkData);
           FCurrentIndex.GotoBookmark(@BookmarkData);
           TmpBuf:=FCurrentIndex.CurrentRecord;
           TmpBuf:=FCurrentIndex.CurrentRecord;
           // resync won't work if the currentbuffer is freed...
           // resync won't work if the currentbuffer is freed...
@@ -1825,7 +1623,6 @@ begin
             end;
             end;
           FCurrentIndex.RemoveRecordFromIndex(BookmarkData);
           FCurrentIndex.RemoveRecordFromIndex(BookmarkData);
           FreeRecordBuffer(TmpBuf);
           FreeRecordBuffer(TmpBuf);
-{$ENDIF}
           dec(FBRecordCount);
           dec(FBRecordCount);
           end;
           end;
         end;
         end;
@@ -1861,9 +1658,6 @@ var r            : Integer;
     AUpdateErr   : EUpdateError;
     AUpdateErr   : EUpdateError;
 
 
 begin
 begin
-{$IFDEF ARRAYBUF}
-  DatabaseError('ApplyUpdates is not supported');
-{$ELSE}
   CheckBrowseMode;
   CheckBrowseMode;
 
 
   FCurrentIndex.StoreCurrentRecIntoBookmark(@StoreCurrRec);
   FCurrentIndex.StoreCurrentRecIntoBookmark(@StoreCurrRec);
@@ -1941,7 +1735,6 @@ begin
     Resync([]);
     Resync([]);
     EnableControls;
     EnableControls;
   end;
   end;
-{$ENDIF}
 end;
 end;
 
 
 
 
@@ -1961,13 +1754,10 @@ end;
 
 
 procedure TBufDataset.InternalPost;
 procedure TBufDataset.InternalPost;
 
 
-Var tmpRecBuffer : PBufRecLinkItem;
-    CurrBuff     : PChar;
+Var CurrBuff     : PChar;
     i            : integer;
     i            : integer;
     blobbuf      : tbufblobfield;
     blobbuf      : tbufblobfield;
     NullMask     : pbyte;
     NullMask     : pbyte;
-    StartInd     : Integer;
-    IndNr        : Integer;
 
 
 begin
 begin
   inherited InternalPost;
   inherited InternalPost;
@@ -1988,13 +1778,6 @@ begin
   if state = dsInsert then
   if state = dsInsert then
     begin
     begin
     if GetBookmarkFlag(ActiveBuffer) = bfEOF then
     if GetBookmarkFlag(ActiveBuffer) = bfEOF then
-      // Append
-//      with (FIndexes[0] as TDoubleLinkedBufIndex) do
-{$IFDEF ARRAYBUF}
-//        FCurrentRecInd := FLastRecInd
-{$ELSE}
-//        FCurrentRecBuf := FLastRecBuf
-{$ENDIF}
       FIndexes[0].ScrollLast
       FIndexes[0].ScrollLast
     else
     else
       // The active buffer is the newly created TDataset record,
       // The active buffer is the newly created TDataset record,
@@ -2004,32 +1787,18 @@ begin
 
 
     with FIndexes[0] do
     with FIndexes[0] do
       begin
       begin
-{$IFDEF ARRAYBUF}
-      inc(FLastRecInd);
-      if FLastRecInd >= length(FRecordArray) then
-        SetLength(FRecordArray,length(FRecordArray)+FGrowBuffer);
-      Move(FRecordArray[FCurrentRecInd],FRecordArray[FCurrentRecInd+1],sizeof(Pointer)*(FLastRecInd-FCurrentRecInd));
-      FRecordArray[FCurrentRecInd]:=pointer(IntAllocRecordBuffer);
-{$ELSE}
       // Create the new record buffer
       // Create the new record buffer
       FCurrentIndex.InsertRecordBeforeCurrentRecord(IntAllocRecordBuffer);
       FCurrentIndex.InsertRecordBeforeCurrentRecord(IntAllocRecordBuffer);
       ScrollBackward;
       ScrollBackward;
-//      FCurrentRecBuf := FCurrentRecBuf[IndNr].prior;
       // Add the record to the other indexes
       // Add the record to the other indexes
       for i := 1 to FIndexesCount-1 do if ((i>1) or (FIndexes[i]=FCurrentIndex)) then
       for i := 1 to FIndexesCount-1 do if ((i>1) or (FIndexes[i]=FCurrentIndex)) then
         FIndexes[i].InsertRecordBeforeCurrentRecord(CurrentRecord);
         FIndexes[i].InsertRecordBeforeCurrentRecord(CurrentRecord);
-{$ENDIF}
       end;
       end;
 
 
     // Link the newly created record buffer to the newly created TDataset record
     // Link the newly created record buffer to the newly created TDataset record
     with PBufBookmark(ActiveBuffer + FRecordSize)^ do
     with PBufBookmark(ActiveBuffer + FRecordSize)^ do
       begin
       begin
-{$IFDEF ARRAYBUF}
-      BookmarkData := FCurrentIndex^.FCurrentRecInd;
-{$ELSE}
-//      BookmarkData := (FCurrentIndex as TDoubleLinkedBufIndex).FCurrentRecBuf;
       FCurrentIndex.StoreCurrentRecIntoBookmark(@BookmarkData);
       FCurrentIndex.StoreCurrentRecIntoBookmark(@BookmarkData);
-{$ENDIF}
       BookmarkFlag := bfInserted;
       BookmarkFlag := bfInserted;
       end;
       end;
       
       
@@ -2046,28 +1815,16 @@ begin
     FCurrentUpdateBuffer := length(FUpdateBuffer);
     FCurrentUpdateBuffer := length(FUpdateBuffer);
     SetLength(FUpdateBuffer,FCurrentUpdateBuffer+1);
     SetLength(FUpdateBuffer,FCurrentUpdateBuffer+1);
 
 
-{$IFDEF ARRAYBUF}
-    with FCurrentIndex^ do
-      begin
-      FUpdateBuffer[FCurrentUpdateBuffer].Bookmark.BookmarkData := FCurrentRecInd;
-      FUpdateBuffer[FCurrentUpdateBuffer].Bookmark.BookMarkBuf := FRecordArray[FCurrentRecInd];
-      end;
-{$ELSE}
     // Store a bookmark of the current record into the updatebuffer's bookmark
     // Store a bookmark of the current record into the updatebuffer's bookmark
     FCurrentIndex.StoreCurrentRecIntoBookmark(@FUpdateBuffer[FCurrentUpdateBuffer].BookmarkData);
     FCurrentIndex.StoreCurrentRecIntoBookmark(@FUpdateBuffer[FCurrentUpdateBuffer].BookmarkData);
-{$ENDIF}
 
 
     if state = dsEdit then
     if state = dsEdit then
       begin
       begin
       // Create an oldvalues buffer with the old values of the record
       // Create an oldvalues buffer with the old values of the record
       FUpdateBuffer[FCurrentUpdateBuffer].OldValuesBuffer := intAllocRecordBuffer;
       FUpdateBuffer[FCurrentUpdateBuffer].OldValuesBuffer := intAllocRecordBuffer;
       with FCurrentIndex do
       with FCurrentIndex do
-{$IFDEF ARRAYBUF}
-        move(FRecordArray[FCurrentRecInd]^,FUpdateBuffer[FCurrentUpdateBuffer].OldValuesBuffer^,FRecordSize);
-{$ELSE}
-        // Move alleen de data, en niet het reclinkitem!
+        // Move only the real data
         move(CurrentBuffer^,FUpdateBuffer[FCurrentUpdateBuffer].OldValuesBuffer^,FRecordSize);
         move(CurrentBuffer^,FUpdateBuffer[FCurrentUpdateBuffer].OldValuesBuffer^,FRecordSize);
-{$ENDIF}
       FUpdateBuffer[FCurrentUpdateBuffer].UpdateKind := ukModify;
       FUpdateBuffer[FCurrentUpdateBuffer].UpdateKind := ukModify;
       end
       end
     else
     else
@@ -2077,14 +1834,6 @@ begin
       end;
       end;
     end;
     end;
 
 
-{$IFDEF ARRAYBUF}
-  with FIndexes[0] do
-    move(ActiveBuffer^,FRecordArray[FCurrentRecInd]^,FRecordSize);
-{$ELSE}
-//  CurrBuff := pchar(FCurrentIndex as TDoubleLinkedBufIndex).FCurrentRecBuf);
-
-//  tmpRecBuffer:=PBufRecLinkItem(CurrBuff);
-//  inc(Currbuff,sizeof(TBufRecLinkItem)*FMaxIndexesCount);
   move(ActiveBuffer^,FCurrentIndex.CurrentBuffer^,FRecordSize);
   move(ActiveBuffer^,FCurrentIndex.CurrentBuffer^,FRecordSize);
 //  CurrBuff:=pchar(tmpRecBuffer);
 //  CurrBuff:=pchar(tmpRecBuffer);
 // The next part has to be rewritten.
 // The next part has to be rewritten.
@@ -2128,7 +1877,6 @@ begin
       AddRecordToIndex(PBufRecLinkItem(CurrBuff),tmpRecBuffer,FIndexes[i]);
       AddRecordToIndex(PBufRecLinkItem(CurrBuff),tmpRecBuffer,FIndexes[i]);
       end;
       end;
     end;}
     end;}
-{$ENDIF}
 end;
 end;
 
 
 procedure TBufDataset.CalcRecordSize;
 procedure TBufDataset.CalcRecordSize;
@@ -2186,12 +1934,8 @@ end;
 procedure TBufDataset.SetRecNo(Value: Longint);
 procedure TBufDataset.SetRecNo(Value: Longint);
 
 
 var
 var
-{$IFDEF ARRAYBUF}
-    ABookMark    : TBufBookmark;
-{$ELSE}
     recnr        : integer;
     recnr        : integer;
     TmpRecBuffer : PBufRecLinkItem;
     TmpRecBuffer : PBufRecLinkItem;
-{$ENDIF}
 
 
 begin
 begin
   checkbrowsemode;
   checkbrowsemode;
@@ -2204,39 +1948,23 @@ begin
       exit;
       exit;
       end;
       end;
     end;
     end;
-{$IFDEF ARRAYBUF}
-  ABookMark.BookMarkBuf:=nil;
-  ABookMark.BookmarkData:=Value-1;
-  GotoBookmark(@ABookMark);
-{$ELSE}
   TmpRecBuffer := (FCurrentIndex as TDoubleLinkedBufIndex).FFirstRecBuf;
   TmpRecBuffer := (FCurrentIndex as TDoubleLinkedBufIndex).FFirstRecBuf;
   for recnr := 1 to value-1 do
   for recnr := 1 to value-1 do
     TmpRecBuffer := TmpRecBuffer^.next;
     TmpRecBuffer := TmpRecBuffer^.next;
   GotoBookmark(@TmpRecBuffer);
   GotoBookmark(@TmpRecBuffer);
-{$ENDIF}
 end;
 end;
 
 
 function TBufDataset.GetRecNo: Longint;
 function TBufDataset.GetRecNo: Longint;
 
 
 Var abuf            : PChar;
 Var abuf            : PChar;
-{$IFDEF ARRAYBUF}
-    ABookMark       : TBufBookmark;
-{$ENDIF}
 
 
 begin
 begin
   abuf := GetCurrentBuffer;
   abuf := GetCurrentBuffer;
   // If abuf isn't assigned, the recordset probably isn't opened.
   // If abuf isn't assigned, the recordset probably isn't opened.
   if assigned(abuf) and (FBRecordCount>0) and (state <> dsInsert) then
   if assigned(abuf) and (FBRecordCount>0) and (state <> dsInsert) then
-    begin
-{$IFDEF ARRAYBUF}
-    GetBookmarkData(abuf,@ABookMark);
-    recnr:=GetRecordFromBookmark(ABookMark);
-    inc(recnr);
-{$ELSE}
-{$ENDIF}
-    Result:=FCurrentIndex.GetRecNo(PBufBookmark(abuf+FRecordSize));
-    end
-  else result := 0;
+    Result:=FCurrentIndex.GetRecNo(PBufBookmark(abuf+FRecordSize))
+  else
+    result := 0;
 end;
 end;
 
 
 function TBufDataset.IsCursorOpen: Boolean;
 function TBufDataset.IsCursorOpen: Boolean;
@@ -2398,10 +2126,8 @@ procedure TBufDataset.AddIndex(const AName, AFields : string; AOptions : TIndexO
 begin
 begin
   if AFields='' then DatabaseError(SNoIndexFieldNameGiven);
   if AFields='' then DatabaseError(SNoIndexFieldNameGiven);
   
   
-{$IFNDEF ARRAYBUF}
   if active and (FIndexesCount=FMaxIndexesCount) then
   if active and (FIndexesCount=FMaxIndexesCount) then
     DatabaseError(SMaxIndexes);
     DatabaseError(SMaxIndexes);
-{$ENDIF}
 
 
   // If not all packets are fetched, you can not sort properly.
   // If not all packets are fetched, you can not sort properly.
   if not active then
   if not active then
@@ -2421,8 +2147,8 @@ begin
   inc(FIndexesCount);
   inc(FIndexesCount);
   setlength(FIndexes,FIndexesCount); // This invalidates the currentindex! -> not anymore
   setlength(FIndexes,FIndexesCount); // This invalidates the currentindex! -> not anymore
   FCurrentIndex:=FIndexes[StoreIndNr];
   FCurrentIndex:=FIndexes[StoreIndNr];
-//  FIndexes[FIndexesCount-1] := TDoubleLinkedBufIndex.Create(self);
-  FIndexes[FIndexesCount-1] := TArrayBufIndex.Create(self);
+  FIndexes[FIndexesCount-1] := TDoubleLinkedBufIndex.Create(self);
+//  FIndexes[FIndexesCount-1] := TArrayBufIndex.Create(self);
   FIndexes[FIndexesCount-1].InitialiseIndex;
   FIndexes[FIndexesCount-1].InitialiseIndex;
   with (FIndexes[FIndexesCount-1] as TBufIndex) do
   with (FIndexes[FIndexesCount-1] as TBufIndex) do
     begin
     begin
@@ -2434,9 +2160,6 @@ begin
     IndNr:=FIndexesCount-1;
     IndNr:=FIndexesCount-1;
     end;
     end;
 
 
-{$IFDEF ARRAYBUF}
-  setlength(FIndexes[FIndexesCount-1].FRecordArray,FInitialBuffers);
-{$ENDIF}
   if Active then
   if Active then
     begin
     begin
     (FIndexes[FIndexesCount-1] as TDoubleLinkedBufIndex).FFirstRecBuf := pointer(IntAllocRecordBuffer);
     (FIndexes[FIndexesCount-1] as TDoubleLinkedBufIndex).FFirstRecBuf := pointer(IntAllocRecordBuffer);
@@ -2444,10 +2167,8 @@ begin
     (FCurrentIndex as TDoubleLinkedBufIndex).FCurrentRecBuf := (FIndexes[FIndexesCount-1] as TDoubleLinkedBufIndex).FLastRecBuf;
     (FCurrentIndex as TDoubleLinkedBufIndex).FCurrentRecBuf := (FIndexes[FIndexesCount-1] as TDoubleLinkedBufIndex).FLastRecBuf;
     BuildIndex(FIndexes[FIndexesCount-1]);
     BuildIndex(FIndexes[FIndexesCount-1]);
     end
     end
-{$IFNDEF ARRAYBUF}
   else if FIndexesCount>FMaxIndexesCount then
   else if FIndexesCount>FMaxIndexesCount then
     FMaxIndexesCount := FIndexesCount;
     FMaxIndexesCount := FIndexesCount;
-{$ENDIF}
 end;
 end;
 
 
 procedure TBufDataset.DoFilterRecord(var Acceptable: Boolean);
 procedure TBufDataset.DoFilterRecord(var Acceptable: Boolean);
@@ -2555,9 +2276,6 @@ var CurrLinkItem    : PBufRecLinkItem;
 
 
 
 
 begin
 begin
-{$IFDEF ARRAYBUF}
-  DatabaseError('Locate is not supported');
-{$ELSE}
   Result := False;
   Result := False;
   if IsEmpty then exit;
   if IsEmpty then exit;
 
 
@@ -2602,15 +2320,10 @@ begin
   // If a match is found, jump to the found record
   // If a match is found, jump to the found record
   if Result then
   if Result then
     begin
     begin
-{$IFDEF ARRAYBUF}
-//    bm.BookmarkData := CurrLinkItem;
-{$ELSE}
     bm.BookmarkData := CurrLinkItem;
     bm.BookmarkData := CurrLinkItem;
-{$ENDIF}
     bm.BookmarkFlag := bfCurrent;
     bm.BookmarkFlag := bfCurrent;
     GotoBookmark(@bm);
     GotoBookmark(@bm);
     end;
     end;
-{$ENDIF}
 end;
 end;
 
 
 { TArrayBufIndex }
 { TArrayBufIndex }