中国开发网: 论坛: 程序员情感CBD: 贴子 89477
Water-E
刚才楼主说思路和我的不一样,我又看了一下前面的声明部分确实如此.又修改了一下实现代码应该是这个意思了:
TDBproxy = Class (TPersistent)
private
fDataSet:TDataSet;
fPropList:PPropList;
fPropCount:integer;
procedure SetInteger(Index: Integer;value:integer);
function GetInteger(Index: Integer):integer;

public
constructor Create(ADateSet: TDataSet);
function ForEach : boolean;
end;

implementation

{ TDBproxy }

constructor TDBproxy.Create(ADateSet: TDataSet);
begin
Assert( assigned(ADateSet));
fDataSet:= ADateSet;
fPropCount := GetPropList(self,fPropList);
end;

function TDBproxy.ForEach: boolean;
begin
result := true;
if fDataSet.eof then
result := false
else
fDataSet.Next;
end;
function TDBproxy.GetInteger(Index: Integer): integer;
begin
assert(index<fPropCount);
{ TODO : 异常处理 }
result :=fDataSet.FieldByName(fPropList^[index].Name).AsInteger;
end;

procedure TDBproxy.SetInteger(Index, value: integer);
begin
assert(index<fPropCount);
{ TODO : 异常处理 }
if fdataset.CanModify then
fDataSet.FieldByName(fPropList^[index].Name).AsInteger := value;
end;
嘿嘿

相关信息:


欢迎光临本社区,您还没有登录,不能发贴子。请在 这里登录