From ab689edadb7256c5fa7421e8d9126072c11c791e Mon Sep 17 00:00:00 2001 From: lacak Date: Thu, 9 Apr 2015 11:38:40 +0000 Subject: [PATCH] fcl-db: sdfdataset: SetRecNo should take into account FDataOffset (aka FirstLineAsSchema). Revealed by TestSetRecNo. git-svn-id: trunk@30509 - --- packages/fcl-db/src/sdf/sdfdata.pp | 19 +++++-------------- 1 file changed, 5 insertions(+), 14 deletions(-) diff --git a/packages/fcl-db/src/sdf/sdfdata.pp b/packages/fcl-db/src/sdf/sdfdata.pp index f6cf87b59f..038b129d34 100644 --- a/packages/fcl-db/src/sdf/sdfdata.pp +++ b/packages/fcl-db/src/sdf/sdfdata.pp @@ -265,7 +265,6 @@ type procedure SetFirstLineAsSchema(Value : Boolean); procedure SetDelimiter(Value : Char); protected - function GetRecordCount: Integer; override; procedure InternalInitFieldDefs; override; function GetRecord(Buffer: TRecordBuffer; GetMode: TGetMode; DoCheck: Boolean) : TGetResult; override; @@ -501,7 +500,7 @@ end; function TFixedFormatDataSet.GetRecordCount: Longint; begin - Result := FData.Count; + Result := FData.Count - FDataOffset; end; function TFixedFormatDataSet.GetRecNo: Longint; @@ -516,7 +515,7 @@ end; procedure TFixedFormatDataSet.SetRecNo(Value: Integer); begin CheckBrowseMode; - if (Value >= 0) and (Value < FData.Count) and (Value <> RecNo) then + if (Value >= 0) and (Value <= RecordCount) and (Value <> RecNo) then begin DoBeforeScroll; FCurRec := Value - 1; @@ -888,11 +887,10 @@ begin FData.Append(Schema.DelimitedText); end else if (FData.Count = 0) or (Trim(FData[0]) = '') then - begin + begin FirstLineAsSchema := FALSE; - FDataOffset:=0; - end - else if (Schema.Count = 0) or (FirstLineAsSchema) then + end + else if (Schema.Count = 0) or FirstLineAsSchema then begin Schema.Clear; SL:=FData[0]; @@ -1138,13 +1136,6 @@ begin FDelimiter := Value; end; -function TSdfDataSet.GetRecordCount: Integer; -begin - Result:=Inherited GetRecordCount; - If Result>0 then - Result:=Result-Ord(FirstLineAsSchema); -end; - procedure TSdfDataSet.SetFirstLineAsSchema(Value : Boolean); begin CheckInactive;