Selaa lähdekoodia

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

git-svn-id: trunk@30366 -
michael 10 vuotta sitten
vanhempi
commit
677fcac127
2 muutettua tiedostoa jossa 40 lisäystä ja 0 poistoa
  1. 27 0
      packages/fcl-db/src/base/dataset.inc
  2. 13 0
      packages/fcl-db/src/base/db.pas

+ 27 - 0
packages/fcl-db/src/base/dataset.inc

@@ -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;

+ 13 - 0
packages/fcl-db/src/base/db.pas

@@ -1713,6 +1713,17 @@ type
     property OnPostError: TDataSetErrorEvent read FOnPostError write FOnPostError;
     property OnPostError: TDataSetErrorEvent read FOnPostError write FOnPostError;
   end;
   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)
   TDataLink = class(TPersistent)
   private
   private
     FFirstRecord,
     FFirstRecord,
@@ -2183,6 +2194,8 @@ function BuffersEqual(Buf1, Buf2: Pointer; Size: Integer): Boolean;
 
 
 function SkipComments(var p: PChar; EscapeSlash, EscapeRepeat : Boolean) : boolean;
 function SkipComments(var p: PChar; EscapeSlash, EscapeRepeat : Boolean) : boolean;
 
 
+operator Enumerator(ADataSet: TDataSet): TDataSetEnumerator;
+ 
 implementation
 implementation
 
 
 uses dbconst,typinfo;
 uses dbconst,typinfo;