|
@@ -525,6 +525,7 @@ type
|
|
function GetCanModify: Boolean; override;
|
|
function GetCanModify: Boolean; override;
|
|
function GetRecord(Buffer: TRecordBuffer; GetMode: TGetMode; DoCheck: Boolean): TGetResult; override;
|
|
function GetRecord(Buffer: TRecordBuffer; GetMode: TGetMode; DoCheck: Boolean): TGetResult; override;
|
|
procedure DoBeforeClose; override;
|
|
procedure DoBeforeClose; override;
|
|
|
|
+ procedure InternalInitFieldDefs; override;
|
|
procedure InternalOpen; override;
|
|
procedure InternalOpen; override;
|
|
procedure InternalClose; override;
|
|
procedure InternalClose; override;
|
|
function GetRecordSize: Word; override;
|
|
function GetRecordSize: Word; override;
|
|
@@ -1185,22 +1186,20 @@ begin
|
|
FillByte((Buffer+RecordSize)^,CalcFieldsSize,0);
|
|
FillByte((Buffer+RecordSize)^,CalcFieldsSize,0);
|
|
end;
|
|
end;
|
|
|
|
|
|
|
|
+procedure TCustomBufDataset.InternalInitFieldDefs;
|
|
|
|
+begin
|
|
|
|
+ if FileName<>'' then
|
|
|
|
+ IntLoadFieldDefsFromFile;
|
|
|
|
+end;
|
|
|
|
+
|
|
procedure TCustomBufDataset.InternalOpen;
|
|
procedure TCustomBufDataset.InternalOpen;
|
|
|
|
|
|
var IndexNr : integer;
|
|
var IndexNr : integer;
|
|
i : integer;
|
|
i : integer;
|
|
|
|
|
|
begin
|
|
begin
|
|
- if not Assigned(FDatasetReader) and (FileName<>'') then
|
|
|
|
- begin
|
|
|
|
- FFileStream := TFileStream.Create(FileName,fmOpenRead);
|
|
|
|
- FDatasetReader := GetPacketReader(dfAny, FFileStream);
|
|
|
|
- end;
|
|
|
|
- if assigned(FDatasetReader) then
|
|
|
|
- begin
|
|
|
|
- FReadFromFile := True;
|
|
|
|
- IntLoadFielddefsFromFile;
|
|
|
|
- end;
|
|
|
|
|
|
+ if assigned(FDatasetReader) or (FileName<>'') then
|
|
|
|
+ IntLoadFieldDefsFromFile;
|
|
|
|
|
|
// This checks if the dataset is actually created (by calling CreateDataset,
|
|
// This checks if the dataset is actually created (by calling CreateDataset,
|
|
// or reading from a stream in some other way implemented by a descendent)
|
|
// or reading from a stream in some other way implemented by a descendent)
|
|
@@ -1244,6 +1243,13 @@ begin
|
|
if assigned(FDatasetReader) then IntLoadRecordsFromFile;
|
|
if assigned(FDatasetReader) then IntLoadRecordsFromFile;
|
|
end;
|
|
end;
|
|
|
|
|
|
|
|
+procedure TCustomBufDataset.DoBeforeClose;
|
|
|
|
+begin
|
|
|
|
+ inherited DoBeforeClose;
|
|
|
|
+ if FFileName<>'' then
|
|
|
|
+ SaveToFile(FFileName);
|
|
|
|
+end;
|
|
|
|
+
|
|
procedure TCustomBufDataset.InternalClose;
|
|
procedure TCustomBufDataset.InternalClose;
|
|
|
|
|
|
var r : integer;
|
|
var r : integer;
|
|
@@ -1707,13 +1713,6 @@ begin
|
|
until Acceptable;
|
|
until Acceptable;
|
|
end;
|
|
end;
|
|
|
|
|
|
-procedure TCustomBufDataset.DoBeforeClose;
|
|
|
|
-begin
|
|
|
|
- inherited DoBeforeClose;
|
|
|
|
- if FFileName<>'' then
|
|
|
|
- SaveToFile(FFileName);
|
|
|
|
-end;
|
|
|
|
-
|
|
|
|
function TCustomBufDataset.GetActiveRecordUpdateBuffer : boolean;
|
|
function TCustomBufDataset.GetActiveRecordUpdateBuffer : boolean;
|
|
|
|
|
|
var ABookmark : TBufBookmark;
|
|
var ABookmark : TBufBookmark;
|
|
@@ -3016,6 +3015,13 @@ end;
|
|
procedure TCustomBufDataset.IntLoadFieldDefsFromFile;
|
|
procedure TCustomBufDataset.IntLoadFieldDefsFromFile;
|
|
|
|
|
|
begin
|
|
begin
|
|
|
|
+ FReadFromFile := True;
|
|
|
|
+ if not assigned(FDatasetReader) then
|
|
|
|
+ begin
|
|
|
|
+ FFileStream := TFileStream.Create(FileName, fmOpenRead);
|
|
|
|
+ FDatasetReader := GetPacketReader(dfAny, FFileStream);
|
|
|
|
+ end;
|
|
|
|
+
|
|
FieldDefs.Clear;
|
|
FieldDefs.Clear;
|
|
FDatasetReader.LoadFieldDefs(FAutoIncValue);
|
|
FDatasetReader.LoadFieldDefs(FAutoIncValue);
|
|
if DefaultFields then
|
|
if DefaultFields then
|