簡體   English   中英

如何在 Delphi 中制作通用/模板 function

[英]How to make a generic/template function in Delphi

您好,我需要一些幫助來創建模板 function(如果我是正確的話,它們在 c++ 中是已知的)。 我正在使用 Delphi XE2,並且正在使用 MS Access 數據庫編寫數據庫應用程序。

問題是我寫的很多函數在不同的表上做同樣的事情。 所以我想我可以創建模板函數,然后為不同的表使用不同的參數。

例如, Locate function 用於定位表或查詢中的特定記錄。 現在我想制作一個模板 function 但我不知道該怎么做。

我想把 function 放在我的數據模塊的公共部分,所以我在想這個

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;

但是這個不想編譯...

有什么方法可以制作某種模板 function ,我可以在其中將任何表作為參數傳遞,或者為每個表創建一個 class ,使用 getter 和 setter 函數會更好嗎?

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;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM