|
@@ -362,8 +362,8 @@ type
|
|
|
|
|
|
TDataPacketFormat = (dfBinary,dfXML,dfXMLUTF8,dfAny,dfDefault);
|
|
|
|
|
|
- TDatapacketReaderClass = class of TDatapacketReader;
|
|
|
- TDataPacketReader = class(TObject)
|
|
|
+ TDataPacketHandlerClass = class of TDataPacketHandler;
|
|
|
+ TDataPacketHandler = class(TObject)
|
|
|
FDataSet: TCustomBufDataset;
|
|
|
FStream : TStream;
|
|
|
protected
|
|
@@ -398,6 +398,8 @@ type
|
|
|
// Checks if the provided stream is of the right format for this class
|
|
|
class function RecognizeStream(AStream : TStream) : boolean; virtual; abstract;
|
|
|
end;
|
|
|
+ TDataPacketReaderClass = TDataPacketHandlerClass;
|
|
|
+ TDataPacketReader = TDataPacketHandler;
|
|
|
|
|
|
{ TFpcBinaryDatapacketReader }
|
|
|
|
|
@@ -419,7 +421,7 @@ type
|
|
|
null fields are not stored (see: null bitmap)
|
|
|
}
|
|
|
|
|
|
- TFpcBinaryDatapacketReader = class(TDataPacketReader)
|
|
|
+ TFpcBinaryDatapacketHandler = class(TDataPacketHandler)
|
|
|
private
|
|
|
const
|
|
|
FpcBinaryIdent1 = 'BinBufDataset'; // Old version 1; support for transient period;
|
|
@@ -446,6 +448,7 @@ type
|
|
|
procedure FinalizeStoreRecords; override;
|
|
|
class function RecognizeStream(AStream : TStream) : boolean; override;
|
|
|
end;
|
|
|
+ TFpcBinaryDatapacketReader = TFpcBinaryDatapacketHandler;
|
|
|
|
|
|
{ TCustomBufDataset }
|
|
|
|
|
@@ -502,7 +505,7 @@ type
|
|
|
FFileName: TFileName;
|
|
|
FReadFromFile : boolean;
|
|
|
FFileStream : TFileStream;
|
|
|
- FDatasetReader : TDataPacketReader;
|
|
|
+ FPacketHandler : TDataPacketReader;
|
|
|
FMaxIndexesCount: integer;
|
|
|
FDefaultIndex,
|
|
|
FCurrentIndexDef : TBufDatasetIndex;
|
|
@@ -537,8 +540,8 @@ type
|
|
|
function GetFieldSize(FieldDef : TFieldDef) : longint;
|
|
|
procedure CalcRecordSize;
|
|
|
function IntAllocRecordBuffer: TRecordBuffer;
|
|
|
- procedure IntLoadFieldDefsFromFile;
|
|
|
- procedure IntLoadRecordsFromFile;
|
|
|
+ procedure IntLoadFieldDefsFromPacket(aReader : TDataPacketReader);
|
|
|
+ procedure IntLoadRecordsFromPacket(aReader : TDataPacketReader);
|
|
|
function GetCurrentBuffer: TRecordBuffer;
|
|
|
procedure CurrentRecordToBuffer(Buffer: TRecordBuffer);
|
|
|
function LoadBuffer(Buffer : TRecordBuffer): TGetResult;
|
|
@@ -1372,12 +1375,7 @@ end;
|
|
|
|
|
|
procedure TCustomBufDataset.InternalInitFieldDefs;
|
|
|
begin
|
|
|
- if FileName<>'' then
|
|
|
- begin
|
|
|
- IntLoadFieldDefsFromFile;
|
|
|
- FreeAndNil(FDatasetReader);
|
|
|
- FreeAndNil(FFileStream);
|
|
|
- end;
|
|
|
+ // Do nothing
|
|
|
end;
|
|
|
|
|
|
procedure TCustomBufDataset.InitUserIndexes;
|
|
@@ -1393,63 +1391,84 @@ end;
|
|
|
|
|
|
procedure TCustomBufDataset.InternalOpen;
|
|
|
|
|
|
-var IndexNr : integer;
|
|
|
- i : integer;
|
|
|
+var
|
|
|
+ IndexNr : integer;
|
|
|
+ i : integer;
|
|
|
+ aPacketReader : TDataPacketReader;
|
|
|
+ aStream : TFileStream;
|
|
|
|
|
|
begin
|
|
|
- if assigned(FDatasetReader) or (FileName<>'') then
|
|
|
- IntLoadFieldDefsFromFile;
|
|
|
+ aPacketReader:=Nil;
|
|
|
+ aStream:=Nil;
|
|
|
+ try
|
|
|
+ if assigned(FPacketHandler) or (FileName<>'') then
|
|
|
+ begin
|
|
|
+ aPacketReader:=FPacketHandler;
|
|
|
+ if FileName<>'' then
|
|
|
+ begin
|
|
|
+ aStream := TFileStream.Create(FileName, fmOpenRead);
|
|
|
+ aPacketReader := GetPacketReader(dfDefault, aStream);
|
|
|
+ end;
|
|
|
+ IntLoadFieldDefsFromPacket(aPacketReader);
|
|
|
+ end;
|
|
|
|
|
|
- // This checks if the dataset is actually created (by calling CreateDataset,
|
|
|
- // or reading from a stream in some other way implemented by a descendent)
|
|
|
- // If there are less fields than FieldDefs we know for sure that the dataset
|
|
|
- // is not (correctly) created.
|
|
|
+ // This checks if the dataset is actually created (by calling CreateDataset,
|
|
|
+ // or reading from a stream in some other way implemented by a descendent)
|
|
|
+ // If there are less fields than FieldDefs we know for sure that the dataset
|
|
|
+ // is not (correctly) created.
|
|
|
|
|
|
- // If there are constant expressions in the select statement (for PostgreSQL)
|
|
|
- // they are of type ftUnknown (in FieldDefs), and are not created (in Fields).
|
|
|
- // So Fields.Count < FieldDefs.Count in this case
|
|
|
- // See mantis #22030
|
|
|
+ // If there are constant expressions in the select statement (for PostgreSQL)
|
|
|
+ // they are of type ftUnknown (in FieldDefs), and are not created (in Fields).
|
|
|
+ // So Fields.Count < FieldDefs.Count in this case
|
|
|
+ // See mantis #22030
|
|
|
|
|
|
- // if Fields.Count<FieldDefs.Count then
|
|
|
- if (Fields.Count = 0) or (FieldDefs.Count=0) then
|
|
|
- DatabaseError(SErrNoDataset);
|
|
|
+ // if Fields.Count<FieldDefs.Count then
|
|
|
+ if (Fields.Count = 0) or (FieldDefs.Count=0) then
|
|
|
+ DatabaseError(SErrNoDataset);
|
|
|
|
|
|
- // search for autoinc field
|
|
|
- FAutoIncField:=nil;
|
|
|
- if FAutoIncValue>-1 then
|
|
|
- begin
|
|
|
- for i := 0 to Fields.Count-1 do
|
|
|
- if Fields[i] is TAutoIncField then
|
|
|
- begin
|
|
|
- FAutoIncField := TAutoIncField(Fields[i]);
|
|
|
- Break;
|
|
|
- end;
|
|
|
- end;
|
|
|
+ // search for autoinc field
|
|
|
+ FAutoIncField:=nil;
|
|
|
+ if FAutoIncValue>-1 then
|
|
|
+ begin
|
|
|
+ for i := 0 to Fields.Count-1 do
|
|
|
+ if Fields[i] is TAutoIncField then
|
|
|
+ begin
|
|
|
+ FAutoIncField := TAutoIncField(Fields[i]);
|
|
|
+ Break;
|
|
|
+ end;
|
|
|
+ end;
|
|
|
|
|
|
- InitDefaultIndexes;
|
|
|
- InitUserIndexes;
|
|
|
- If FIndexName<>'' then
|
|
|
- FCurrentIndexDef:=TBufDatasetIndex(FIndexes.Find(FIndexName))
|
|
|
- else if (FIndexFieldNames<>'') then
|
|
|
- BuildCustomIndex;
|
|
|
+ InitDefaultIndexes;
|
|
|
+ InitUserIndexes;
|
|
|
+ If FIndexName<>'' then
|
|
|
+ FCurrentIndexDef:=TBufDatasetIndex(FIndexes.Find(FIndexName))
|
|
|
+ else if (FIndexFieldNames<>'') then
|
|
|
+ BuildCustomIndex;
|
|
|
|
|
|
- CalcRecordSize;
|
|
|
+ CalcRecordSize;
|
|
|
|
|
|
- FBRecordCount := 0;
|
|
|
+ FBRecordCount := 0;
|
|
|
|
|
|
- for IndexNr:=0 to FIndexes.Count-1 do
|
|
|
- if Assigned(BufIndexdefs[IndexNr]) then
|
|
|
- With BufIndexes[IndexNr] do
|
|
|
- InitialiseSpareRecord(IntAllocRecordBuffer);
|
|
|
+ for IndexNr:=0 to FIndexes.Count-1 do
|
|
|
+ if Assigned(BufIndexdefs[IndexNr]) then
|
|
|
+ With BufIndexes[IndexNr] do
|
|
|
+ InitialiseSpareRecord(IntAllocRecordBuffer);
|
|
|
|
|
|
- FAllPacketsFetched := False;
|
|
|
+ FAllPacketsFetched := False;
|
|
|
|
|
|
- FOpen:=True;
|
|
|
+ FOpen:=True;
|
|
|
|
|
|
- // parse filter expression
|
|
|
- ParseFilter(Filter);
|
|
|
+ // parse filter expression
|
|
|
+ ParseFilter(Filter);
|
|
|
|
|
|
- if assigned(FDatasetReader) then IntLoadRecordsFromFile;
|
|
|
+ if assigned(aPacketReader) then
|
|
|
+ IntLoadRecordsFromPacket(aPacketReader);
|
|
|
+ finally
|
|
|
+ // We created reader locally here.
|
|
|
+ if assigned(aStream) then
|
|
|
+ FreeAndNil(aPacketReader);
|
|
|
+ FreeAndNil(aStream);
|
|
|
+ end;
|
|
|
end;
|
|
|
|
|
|
procedure TCustomBufDataset.DoBeforeClose;
|
|
@@ -2307,7 +2326,7 @@ end;
|
|
|
|
|
|
class function TCustomBufDataset.DefaultPacketClass: TDataPacketReaderClass;
|
|
|
begin
|
|
|
- Result:=TFpcBinaryDatapacketReader;
|
|
|
+ Result:=TFpcBinaryDatapacketHandler;
|
|
|
end;
|
|
|
|
|
|
function TCustomBufDataset.CreateDefaultPacketReader(aStream : TStream): TDataPacketReader;
|
|
@@ -3204,10 +3223,10 @@ begin
|
|
|
APacketReader := CreateDefaultPacketReader(AStream)
|
|
|
else if GetRegisterDatapacketReader(AStream, fmt, APacketReaderReg) then
|
|
|
APacketReader := APacketReaderReg.ReaderClass.Create(Self, AStream)
|
|
|
- else if TFpcBinaryDatapacketReader.RecognizeStream(AStream) then
|
|
|
+ else if TFpcBinaryDatapacketHandler.RecognizeStream(AStream) then
|
|
|
begin
|
|
|
AStream.Seek(0, soFromBeginning);
|
|
|
- APacketReader := TFpcBinaryDatapacketReader.Create(Self, AStream)
|
|
|
+ APacketReader := TFpcBinaryDatapacketHandler.Create(Self, AStream)
|
|
|
end
|
|
|
else
|
|
|
DatabaseError(SStreamNotRecognised,Self);
|
|
@@ -3451,11 +3470,11 @@ end;
|
|
|
|
|
|
procedure TCustomBufDataset.SetDatasetPacket(AReader: TDataPacketReader);
|
|
|
begin
|
|
|
- FDatasetReader := AReader;
|
|
|
+ FPacketHandler := AReader;
|
|
|
try
|
|
|
Open;
|
|
|
finally
|
|
|
- FDatasetReader := nil;
|
|
|
+ FPacketHandler := nil;
|
|
|
end;
|
|
|
end;
|
|
|
|
|
@@ -3487,7 +3506,7 @@ procedure TCustomBufDataset.GetDatasetPacket(AWriter: TDataPacketReader);
|
|
|
FFilterBuffer:=AUpdBuffer.OldValuesBuffer;
|
|
|
// OldValuesBuffer is nil if the record is either inserted or inserted and then deleted
|
|
|
if assigned(FFilterBuffer) then
|
|
|
- FDatasetReader.StoreRecord(AThisRowState,FCurrentUpdateBuffer);
|
|
|
+ aWriter.StoreRecord(AThisRowState,FCurrentUpdateBuffer);
|
|
|
end;
|
|
|
|
|
|
procedure HandleUpdateBuffersFromRecord(AFindNext : boolean; ARecBookmark : TBufBookmark; var ARowState: TRowState);
|
|
@@ -3520,13 +3539,11 @@ var ScrollResult : TGetResult;
|
|
|
RowState : TRowState;
|
|
|
|
|
|
begin
|
|
|
- FDatasetReader := AWriter;
|
|
|
+ // CheckActive;
|
|
|
+ ABookMark:=@ATBookmark;
|
|
|
+ aWriter.StoreFieldDefs(FAutoIncValue);
|
|
|
+ SavedState:=SetTempState(dsFilter);
|
|
|
try
|
|
|
- // CheckActive;
|
|
|
- ABookMark:=@ATBookmark;
|
|
|
- FDatasetReader.StoreFieldDefs(FAutoIncValue);
|
|
|
-
|
|
|
- SavedState:=SetTempState(dsFilter);
|
|
|
ScrollResult:=CurrentIndexBuf.ScrollFirst;
|
|
|
while ScrollResult=grOK do
|
|
|
begin
|
|
@@ -3537,9 +3554,9 @@ begin
|
|
|
// now store current record
|
|
|
FFilterBuffer:=CurrentIndexBuf.CurrentBuffer;
|
|
|
if RowState=[] then
|
|
|
- FDatasetReader.StoreRecord([])
|
|
|
+ aWriter.StoreRecord([])
|
|
|
else
|
|
|
- FDatasetReader.StoreRecord(RowState,FCurrentUpdateBuffer);
|
|
|
+ aWriter.StoreRecord(RowState,FCurrentUpdateBuffer);
|
|
|
|
|
|
ScrollResult:=CurrentIndexBuf.ScrollForward;
|
|
|
if ScrollResult<>grOK then
|
|
@@ -3551,12 +3568,9 @@ begin
|
|
|
// There could be an update buffer linked to the last (spare) record
|
|
|
CurrentIndexBuf.StoreSpareRecIntoBookmark(ABookmark);
|
|
|
HandleUpdateBuffersFromRecord(False,ABookmark^,RowState);
|
|
|
-
|
|
|
- RestoreState(SavedState);
|
|
|
-
|
|
|
- FDatasetReader.FinalizeStoreRecords;
|
|
|
+ aWriter.FinalizeStoreRecords;
|
|
|
finally
|
|
|
- FDatasetReader := nil;
|
|
|
+ RestoreState(SavedState);
|
|
|
end;
|
|
|
end;
|
|
|
|
|
@@ -3586,7 +3600,7 @@ begin
|
|
|
else if GetRegisterDatapacketReader(Nil,fmt,APacketReaderReg) then
|
|
|
APacketWriter := APacketReaderReg.ReaderClass.Create(Self, AStream)
|
|
|
else if fmt = dfBinary then
|
|
|
- APacketWriter := TFpcBinaryDatapacketReader.Create(Self, AStream)
|
|
|
+ APacketWriter := TFpcBinaryDatapacketHandler.Create(Self, AStream)
|
|
|
else
|
|
|
DatabaseError(SNoReaderClassRegistered,Self);
|
|
|
try
|
|
@@ -3685,25 +3699,19 @@ begin
|
|
|
Result := -1;
|
|
|
end;
|
|
|
|
|
|
-procedure TCustomBufDataset.IntLoadFieldDefsFromFile;
|
|
|
+procedure TCustomBufDataset.IntLoadFieldDefsFromPacket(aReader : TDataPacketReader);
|
|
|
|
|
|
begin
|
|
|
FReadFromFile := True;
|
|
|
- if not assigned(FDatasetReader) then
|
|
|
- begin
|
|
|
- FFileStream := TFileStream.Create(FileName, fmOpenRead);
|
|
|
- FDatasetReader := GetPacketReader(dfDefault, FFileStream);
|
|
|
- end;
|
|
|
-
|
|
|
FieldDefs.Clear;
|
|
|
- FDatasetReader.LoadFieldDefs(FAutoIncValue);
|
|
|
+ aReader.LoadFieldDefs(FAutoIncValue);
|
|
|
if DefaultFields then
|
|
|
CreateFields
|
|
|
else
|
|
|
BindFields(true);
|
|
|
end;
|
|
|
|
|
|
-procedure TCustomBufDataset.IntLoadRecordsFromFile;
|
|
|
+procedure TCustomBufDataset.IntLoadRecordsFromPacket(aReader : TDataPacketReader);
|
|
|
|
|
|
var
|
|
|
SavedState : TDataSetState;
|
|
@@ -3715,12 +3723,12 @@ var
|
|
|
begin
|
|
|
CheckBiDirectional;
|
|
|
DefIdx:=DefaultBufferIndex;
|
|
|
- FDatasetReader.InitLoadRecords;
|
|
|
+ aReader.InitLoadRecords;
|
|
|
SavedState:=SetTempState(dsFilter);
|
|
|
|
|
|
- while FDatasetReader.GetCurrentRecord do
|
|
|
+ while aReader.GetCurrentRecord do
|
|
|
begin
|
|
|
- ARowState := FDatasetReader.GetRecordRowState(AUpdOrder);
|
|
|
+ ARowState := aReader.GetRecordRowState(AUpdOrder);
|
|
|
if rsvOriginal in ARowState then
|
|
|
begin
|
|
|
if length(FUpdateBuffer) < (AUpdOrder+1) then
|
|
@@ -3731,12 +3739,12 @@ begin
|
|
|
FFilterBuffer:=IntAllocRecordBuffer;
|
|
|
fillchar(FFilterBuffer^,FNullmaskSize,0);
|
|
|
FUpdateBuffer[FCurrentUpdateBuffer].OldValuesBuffer := FFilterBuffer;
|
|
|
- FDatasetReader.RestoreRecord;
|
|
|
+ aReader.RestoreRecord;
|
|
|
|
|
|
- FDatasetReader.GotoNextRecord;
|
|
|
- if not FDatasetReader.GetCurrentRecord then
|
|
|
+ aReader.GotoNextRecord;
|
|
|
+ if not aReader.GetCurrentRecord then
|
|
|
DatabaseError(SStreamNotRecognised,Self);
|
|
|
- ARowState := FDatasetReader.GetRecordRowState(AUpdOrder);
|
|
|
+ ARowState := aReader.GetRecordRowState(AUpdOrder);
|
|
|
if rsvUpdated in ARowState then
|
|
|
FUpdateBuffer[FCurrentUpdateBuffer].UpdateKind:= ukModify
|
|
|
else
|
|
@@ -3746,7 +3754,7 @@ begin
|
|
|
DefIdx.StoreSpareRecIntoBookmark(@FUpdateBuffer[FCurrentUpdateBuffer].BookmarkData);
|
|
|
fillchar(FFilterBuffer^,FNullmaskSize,0);
|
|
|
|
|
|
- FDatasetReader.RestoreRecord;
|
|
|
+ aReader.RestoreRecord;
|
|
|
DefIdx.AddRecord;
|
|
|
inc(FBRecordCount);
|
|
|
end
|
|
@@ -3761,7 +3769,7 @@ begin
|
|
|
fillchar(FFilterBuffer^,FNullmaskSize,0);
|
|
|
|
|
|
FUpdateBuffer[FCurrentUpdateBuffer].OldValuesBuffer := FFilterBuffer;
|
|
|
- FDatasetReader.RestoreRecord;
|
|
|
+ aReader.RestoreRecord;
|
|
|
|
|
|
FUpdateBuffer[FCurrentUpdateBuffer].UpdateKind:= ukDelete;
|
|
|
DefIdx.StoreSpareRecIntoBookmark(@FUpdateBuffer[FCurrentUpdateBuffer].BookmarkData);
|
|
@@ -3777,7 +3785,7 @@ begin
|
|
|
begin
|
|
|
FFilterBuffer:=DefIdx.SpareBuffer;
|
|
|
fillchar(FFilterBuffer^,FNullmaskSize,0);
|
|
|
- FDatasetReader.RestoreRecord;
|
|
|
+ aReader.RestoreRecord;
|
|
|
if rsvInserted in ARowState then
|
|
|
begin
|
|
|
if length(FUpdateBuffer) < (AUpdOrder+1) then
|
|
@@ -3791,17 +3799,12 @@ begin
|
|
|
inc(FBRecordCount);
|
|
|
end;
|
|
|
|
|
|
- FDatasetReader.GotoNextRecord;
|
|
|
+ aReader.GotoNextRecord;
|
|
|
end;
|
|
|
|
|
|
RestoreState(SavedState);
|
|
|
DefIdx.SetToFirstRecord;
|
|
|
FAllPacketsFetched:=True;
|
|
|
- if assigned(FFileStream) then
|
|
|
- begin
|
|
|
- FreeAndNil(FFileStream);
|
|
|
- FreeAndNil(FDatasetReader);
|
|
|
- end;
|
|
|
|
|
|
// rebuild indexes
|
|
|
BuildIndexes;
|
|
@@ -3899,7 +3902,7 @@ end;
|
|
|
|
|
|
function TCustomBufDataset.IsReadFromPacket: Boolean;
|
|
|
begin
|
|
|
- Result := (FDatasetReader<>nil) or (FFileName<>'') or FReadFromFile;
|
|
|
+ Result := (FPacketHandler<>nil) or (FFileName<>'') or FReadFromFile;
|
|
|
end;
|
|
|
|
|
|
procedure TCustomBufDataset.ParseFilter(const AFilter: string);
|
|
@@ -4320,15 +4323,15 @@ begin
|
|
|
end;
|
|
|
|
|
|
|
|
|
-{ TFpcBinaryDatapacketReader }
|
|
|
+{ TFpcBinaryDatapacketHandler }
|
|
|
|
|
|
-constructor TFpcBinaryDatapacketReader.Create(ADataSet: TCustomBufDataset; AStream: TStream);
|
|
|
+constructor TFpcBinaryDatapacketHandler.Create(ADataSet: TCustomBufDataset; AStream: TStream);
|
|
|
begin
|
|
|
inherited;
|
|
|
FVersion := 20; // default version 2.0
|
|
|
end;
|
|
|
|
|
|
-procedure TFpcBinaryDatapacketReader.LoadFieldDefs(var AnAutoIncValue: integer);
|
|
|
+procedure TFpcBinaryDatapacketHandler.LoadFieldDefs(var AnAutoIncValue: integer);
|
|
|
|
|
|
var FldCount : word;
|
|
|
i : integer;
|
|
@@ -4367,7 +4370,7 @@ begin
|
|
|
SetLength(FNullBitmap, FNullBitmapSize);
|
|
|
end;
|
|
|
|
|
|
-procedure TFpcBinaryDatapacketReader.StoreFieldDefs(AnAutoIncValue: integer);
|
|
|
+procedure TFpcBinaryDatapacketHandler.StoreFieldDefs(AnAutoIncValue: integer);
|
|
|
var i : integer;
|
|
|
begin
|
|
|
Stream.Write(FpcBinaryIdent2[1], length(FpcBinaryIdent2));
|
|
@@ -4393,18 +4396,18 @@ begin
|
|
|
SetLength(FNullBitmap, FNullBitmapSize);
|
|
|
end;
|
|
|
|
|
|
-procedure TFpcBinaryDatapacketReader.InitLoadRecords;
|
|
|
+procedure TFpcBinaryDatapacketHandler.InitLoadRecords;
|
|
|
begin
|
|
|
// Do nothing
|
|
|
end;
|
|
|
|
|
|
-function TFpcBinaryDatapacketReader.GetCurrentRecord: boolean;
|
|
|
+function TFpcBinaryDatapacketHandler.GetCurrentRecord: boolean;
|
|
|
var Buf : byte;
|
|
|
begin
|
|
|
Result := (Stream.Read(Buf,1)=1) and (Buf=$fe);
|
|
|
end;
|
|
|
|
|
|
-function TFpcBinaryDatapacketReader.GetRecordRowState(out AUpdOrder : Integer) : TRowState;
|
|
|
+function TFpcBinaryDatapacketHandler.GetRecordRowState(out AUpdOrder : Integer) : TRowState;
|
|
|
var Buf : byte;
|
|
|
begin
|
|
|
Stream.Read(Buf,1);
|
|
@@ -4415,12 +4418,12 @@ begin
|
|
|
AUpdOrder := 0;
|
|
|
end;
|
|
|
|
|
|
-procedure TFpcBinaryDatapacketReader.GotoNextRecord;
|
|
|
+procedure TFpcBinaryDatapacketHandler.GotoNextRecord;
|
|
|
begin
|
|
|
// Do Nothing
|
|
|
end;
|
|
|
|
|
|
-procedure TFpcBinaryDatapacketReader.RestoreRecord;
|
|
|
+procedure TFpcBinaryDatapacketHandler.RestoreRecord;
|
|
|
var
|
|
|
AField: TField;
|
|
|
i: integer;
|
|
@@ -4463,7 +4466,7 @@ begin
|
|
|
end;
|
|
|
end;
|
|
|
|
|
|
-procedure TFpcBinaryDatapacketReader.StoreRecord(ARowState: TRowState; AUpdOrder : integer);
|
|
|
+procedure TFpcBinaryDatapacketHandler.StoreRecord(ARowState: TRowState; AUpdOrder : integer);
|
|
|
var
|
|
|
AField: TField;
|
|
|
i: integer;
|
|
@@ -4513,12 +4516,12 @@ begin
|
|
|
end;
|
|
|
end;
|
|
|
|
|
|
-procedure TFpcBinaryDatapacketReader.FinalizeStoreRecords;
|
|
|
+procedure TFpcBinaryDatapacketHandler.FinalizeStoreRecords;
|
|
|
begin
|
|
|
// Do nothing
|
|
|
end;
|
|
|
|
|
|
-class function TFpcBinaryDatapacketReader.RecognizeStream(AStream: TStream): boolean;
|
|
|
+class function TFpcBinaryDatapacketHandler.RecognizeStream(AStream: TStream): boolean;
|
|
|
var s : string;
|
|
|
begin
|
|
|
SetLength(s, 13);
|