【发布时间】:2012-04-04 12:25:46
【问题描述】:
您好,我在创建模板函数时需要一些帮助(如果我是正确的,它们在 c++ 中是已知的)。我正在使用 Delphi XE2,并且正在使用 MS Access 数据库编写数据库应用程序。
问题是我写的很多函数在不同的表上做同样的事情。所以我认为我可以创建模板函数,然后为不同的表使用不同的参数。
例如,Locate 函数可以定位表或查询中的特定记录。现在我想做一个模板函数,但我不知道怎么做。
我想把函数放在我的数据模块的公共部分,所以我在考虑这个
function find(tableName: TADOTable, fieldName: String, fieldValue: String):Boolean
那么……
function TDataModule.find(tableName: TADOTable, fieldName: String, fieldValue:String): Boolean;
var SearchOptions : TLocateOptions;
begin
SearchOptions := [loCaseInsensitive];
find := DataModule.tableName.Locate('fieldName', fieldValue, SearchOptions);
end;
但这不想编译...
有什么方法可以制作某种模板函数,我可以将任何表作为参数传递,或者使用 getter 和 setter 函数为每个表创建一个类会更好吗?
【问题讨论】:
-
这里没有通用的。你的意思是
function TDataModule.find(tableName: TADOTable; fieldName: String; fieldValue:String): Boolean;?注意分号而不是逗号。 -
为什么使用分号而不是逗号?这是我想要的,谢谢
-
是的,它不是“泛型”。但只需将
find := DataModule.tableName.Locate更改为TableName.Locate。不得不说,你应该将tableName参数重命名为table,因为它不是它的名字,它是TADOTable对象。也使用result :=而不是find := -
您想要使用什么标点符号是无关紧要的。您必须使用语言允许的内容。这意味着分号。
-
感谢您解释逗号和分号的区别。我同意,我宁愿使用表而不是表名。感谢您的帮助
标签: delphi templates delphi-xe2