您好我需要一些幫助來創建模板函數(因爲它們在C++中是已知的,如果我是正確的)。我正在使用Delphi XE2,並且正在使用MS Access數據庫編寫數據庫應用程序。如何在Delphi中創建泛型/模板函數
問題是,我寫了很多函數在不同的表上做同樣的事情。所以我認爲我可以創建模板函數,然後爲不同的表使用不同的參數。
例如,有一個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一個d setter函數?
這裏沒什麼通用的。你的意思是'函數TDataModule.find(tableName:TADOTable; fieldName:String; fieldValue:String):Boolean;'?注意分號而不是逗號。 – 2012-04-04 12:30:14
爲什麼使用分號而不是逗號?這是我想要的,謝謝 – Japster 2012-04-04 12:42:56
是的,它不是「泛型」。但只需將'find:= DataModule.tableName.Locate'更改爲'TableName.Locate'。不得不說,你應該把'tableName'參數重命名爲'table',因爲它不是它的名字,而是'TADOTable'對象。也可以使用'result:='而不是'find:=' – teran 2012-04-04 12:44:52