git-svn-id: trunk@15856 -
This commit is contained in:
michael 2010-08-19 17:49:40 +00:00
parent dfe9701dc4
commit 04bd5e208b

View File

@ -163,6 +163,7 @@ type
FBookmarkOfs :Integer;
FSaveChanges :Boolean;
FDefaultRecordLength:Cardinal;
FDataOffset : Integer;
protected
function AllocRecordBuffer: PChar; override;
procedure FreeRecordBuffer(var Buffer: PChar); override;
@ -465,7 +466,7 @@ end;
function TFixedFormatDataSet.GetRecord(Buffer: PChar; GetMode: TGetMode;
DoCheck: Boolean): TGetResult;
begin
if (FData.Count < 1) then
if (FData.Count < (1+FDataOffset)) then
Result := grEOF
else
Result := TxtGetRecord(Buffer, GetMode);
@ -542,12 +543,12 @@ begin
else
Inc(FCurRec);
gmPrior:
if FCurRec <= 0 then
if FCurRec <= FDataOffset then
Result := grBOF
else
Dec(FCurRec);
gmCurrent:
if (FCurRec < 0) or (FCurRec >= RecordCount) then
if (FCurRec < FDataOffset) or (FCurRec >= RecordCount) then
Result := grError;
end;
if (Result = grOk) then
@ -851,7 +852,10 @@ begin
if not IsCursorOpen then
exit;
if (FData.Count = 0) or (Trim(FData[0]) = '') then
FirstLineAsSchema := FALSE
begin
FirstLineAsSchema := FALSE;
FDataOffset:=0;
end
else if (Schema.Count = 0) or (FirstLineAsSchema) then
begin
Schema.Clear;
@ -902,13 +906,18 @@ begin
if FirstLineAsSchema then
begin
if (FData.Count < 2) then
Result := grEOF
begin
if GetMode=gmPrior then
Result := grBOF
else
Result := grEOF
end
else
begin
begin
If (FCurrec=-1) and (GetMode=gmNext) then
inc(FCurrec);
Result := inherited GetRecord(Buffer, GetMode, DoCheck);
if (Result = grOk) and (FCurRec = 0) then
Result := inherited GetRecord(Buffer, GetMode, DoCheck);
end;
end;
end
else
Result := inherited GetRecord(Buffer, GetMode, DoCheck);
@ -1008,6 +1017,7 @@ procedure TSdfDataSet.SetFirstLineAsSchema(Value : Boolean);
begin
CheckInactive;
FFirstLineAsSchema := Value;
FDataOffset:=Ord(FFirstLineAsSchema);
end;
//-----------------------------------------------------------------------------