小编Ang*_*zis的帖子

Base Delphi接口不能以多态方式工作

我创建了几个接口来描述集合及其项目:IetCollection和IetCollectionItem.当然,我有两个实现这两个接口的类:TetCollection和TetCollectionItem(都继承自TInterfacedObject.)

然后我有一系列接口,其中顶级接口继承自IetCollectionItem,其余接口来自它(让我们称之为ISomeBasicType和ISomeSpecificType1以及ISomeSpecificType2.)

类TSomeBasicType继承自类TetCollectionItem,并且还实现了ISomeBasicType.层次结构中的其他类继承自TSomeBasicType并实现其各自的接口(即ISomeSpecificType1和ISomeSpecificType2.)

当我填充集合时,我使用工厂方法来获取对ISomeBasicType的引用.到目前为止,一切都很好.

但是当我尝试遍历集合并询问集合项是否支持ISomeSpecificType1或ISomeSpecificType2时,我得到的答案是否定的.

我一直在努力解决这个问题,但我没有取得任何成果,所以任何帮助都将不胜感激.

这是一些代码:

// This is the basic type
IetCollectionItem = interface
end;

// Implementation of the basic type
TetCollectionItem = class(TInterfacedObject, IetCollectionItem)
end; 

ISomeBasicType = interface(IetCollectionItem)
end; 

ISomeSpecificType1 = interface(ISomeBasicType)
end; 

// Implements ISomeBasicType, should inherit implementation of IetCollectionItem
// from TetCollectionItem
TSomeBasicType = class(TetCollectionItem, ISomeBasicType)
end; 

// Implements ISomeSpecificType1, should inherit implementation of ISomeBasicType
// from TSomeBasicType and implementation of IetCollectionItem from
// TetCollectionItem
TSomeSpecificType1 = class(TSomeBasicType, ISomeSpecificType1)
end; 
Run Code Online (Sandbox Code Playgroud)

这是我用户填充集合的代码:

var
  aBaseType: ISomeBasicType;
  aSpecificType: …
Run Code Online (Sandbox Code Playgroud)

delphi delphi-7

3
推荐指数
1
解决办法
492
查看次数

在rails下计算布尔值

我在RoR应用程序中的两个模型之间有一个标准的主 - 细节关系.详细记录包含四个布尔字段,表示存在/不存在某些东西.

当我显示详细记录时,我想添加一个摘要,指示对于四个布尔字段中的每一个,其布尔值设置为True的记录数.

例如:日期| 布尔字段1 | 布尔字段2 | 等2009/08/29 | T | T | 2009/08/30 | T | F | 2009/08/31 | F | T | 2009/09/01 | F | T |

总计:4 2 3

我尝试使用像@ entries.count(["Boolean Field 1",true]这样的东西)我看到它的方式,有两种方法来计算这些值:一种是在模型上通过执行SQL查询(丑陋)或在通过使用计数器查看级别(再次丑陋.)还有其他方法可以实现我想要的吗?

感谢您的时间,

Angelos Arampatzis

ruby-on-rails

1
推荐指数
1
解决办法
2029
查看次数

标签 统计

delphi ×1

delphi-7 ×1

ruby-on-rails ×1