如何在Delphi中创建通用/模板函数

时间:2012-04-04 12:25:47

标签: delphi templates delphi-xe2

您好我需要一些帮助来创建模板函数(因为如果我是正确的,它们在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函数为每个表创建一个类?

1 个答案:

答案 0 :(得分:0)

function TDataModule2.LocateData(AADOTable: String; AKeyFields: String; 
  AKeyValues: Variant; Options: TLocateOptions): Boolean;
var
  oComp: TComponent;
begin
  Result := False;
  oComp := FindComponent(AADOTable);
  if (oComp is TADOTable) and (oComp as TADOTable).Active then
    Result := (oComp as TADOTable).Locate(AKeyFields, AKeyValues, Options);
end;