* Implemented dataset enumerator, suggestion by Sylvio Clecio and Laco (bug ID 27644)

git-svn-id: trunk@30366 -
This commit is contained in:
michael 2015-03-29 12:42:23 +00:00
parent e2500d5a70
commit 677fcac127
2 changed files with 40 additions and 0 deletions

View File

@ -2482,3 +2482,30 @@ end;
{------------------------------------------------------------------------------}
operator Enumerator(ADataSet: TDataSet): TDataSetEnumerator;
begin
Result:=TDataSetEnumerator.Create(ADataSet);
end;
constructor TDataSetEnumerator.Create(ADataSet: TDataSet);
begin
inherited Create;
FDataSet:=ADataSet;
FBOF:=True;
FDataSet.First;
end;
function TDataSetEnumerator.GetCurrent: TFields;
begin
Result := FDataSet.Fields;
end;
function TDataSetEnumerator.MoveNext: Boolean;
begin
if FBOF then
FBOF:=False
else
FDataSet.Next;
Result:=not FDataSet.EOF;
end;

View File

@ -1713,6 +1713,17 @@ type
property OnPostError: TDataSetErrorEvent read FOnPostError write FOnPostError;
end;
TDataSetEnumerator = class
private
FDataSet: TDataSet;
FBOF: Boolean;
function GetCurrent: TFields;
public
constructor Create(ADataSet: TDataSet);
function MoveNext: Boolean;
property Current: TFields read GetCurrent;
end;
TDataLink = class(TPersistent)
private
FFirstRecord,
@ -2183,6 +2194,8 @@ function BuffersEqual(Buf1, Buf2: Pointer; Size: Integer): Boolean;
function SkipComments(var p: PChar; EscapeSlash, EscapeRepeat : Boolean) : boolean;
operator Enumerator(ADataSet: TDataSet): TDataSetEnumerator;
implementation
uses dbconst,typinfo;