Delphi XE2中的模拟方法FieldByName
我正在开发一个类,并试图模拟其中包含的数据集(TTable) 在为数据集创建了接口之后,我开始开发FieldByname方法的模拟:Delphi XE2中的模拟方法FieldByName,delphi,mocking,Delphi,Mocking,我正在开发一个类,并试图模拟其中包含的数据集(TTable) 在为数据集创建了接口之后,我开始开发FieldByname方法的模拟: type IDataSet = interface ... function FieldByName(const Name: string): TField; ... end; TMockDataSet = class(TInterfacedObject, IDataSet) ... function FieldByN
type
IDataSet = interface
...
function FieldByName(const Name: string): TField;
...
end;
TMockDataSet = class(TInterfacedObject, IDataSet)
...
function FieldByName(const Name: string): TField;
...
end;
我尝试了以下实现,但它给了我一个运行时错误
function TMockDataSet.FieldByName(const Name: string): TField;
var
f: TCurrencyField;
begin
f := TCurrencyField.Create(nil);
f.AsCurrency := 1; // runtime error
result := f;
end;
有人知道如何解决这个问题吗?在您的案例中,您遇到了模拟(数据集)返回模拟(字段)的问题。试着模拟整个操作(你正在对你要回来的场地做一些事情,对吗?)不确定你在这里想做什么?您需要一个实现的
TDataSet
来关联t字段
,然后才能为其赋值:f.DataSet
和f.FieldName
应该有效。此外,当您遇到“运行时错误”时,请提供确切的详细信息。也就是说,应使用TDataSet.FieldByName
方法检索给定名称的现有字段信息(而不是创建新字段)@DelphiCoder:请停止以这种琐碎的方式编辑旧答案。