こんにちはテンプレートの関数を作成する際に助けが必要です(正しい場合はC++で知られています)。私はDelphi XE2を使用していますが、MS Accessデータベースを使用してデータベースアプリケーションを作成しています。Delphiでジェネリック/テンプレート関数を作成するには
問題は、別のテーブルで同じことをする多くの関数が書かれていることです。だから、私はテンプレート関数を作成して、異なるテーブルに対して異なるパラメータを使うことができると思った。
たとえば、テーブルまたはクエリ内の特定のレコードを特定する関数があります(Locate
)。今私はこれのテンプレート関数を作りたいと思いますが、これを行う方法はわかりません。
私は私のDataModuleの公共のセクションで関数を置きたいので、私はこの
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;
しかし、これはしたくないのラインで考えていましたコンパイル...
それは、私はパラメータとして任意のテーブルを渡すことができる何らかの種類のテンプレート関数を作成するための方法は、それはゲッターを使用してすべての単一のテーブルのクラスを作成する方が良いdセッター機能?
ここには何もありません。あなたは 'function TDataModule.find(tableName:TADOTable; fieldName:String; fieldValue:String)を意味しますか?カンマではなくセミコロンに注意してください。 –
なぜカンマではなくセミコロンを使用しますか?私が欲しかったのは、 – Japster
はい、それは「ジェネリック」ではありません。しかし、 'find:= DataModule.tableName.Locate'を' TableName.Locate'に変更するだけです。 'tableName'の名前を' table'に変更する必要があります。これは、その名前ではないので 'TADOTable'オブジェクトです。また、 'find:='の代わりに 'result:='を使用してください。 – teran