入力パラメーターにサブレンジタイプを使用する関数のグループがあります。
const
ImprovementNodeCount = 20;
SaleAllocationNodeCount = 10;
type
TImprovementNodePrintOrders = 0..ImprovementNodeCount;
TSaleAllocationNodePrintOrders = 0..SaleAllocationNodeCount;
function SaleImprovementType(PrintOrder: TImprovementNodePrintOrders): TSaleReferenceRecord;
function SaleAllocationType(PrintOrder: TSaleAllocationNodePrintOrders): TSaleReferenceRecord;
function SaleAllocationAcres(PrintOrder: TSaleAllocationNodePrintOrders): TSaleReferenceRecord;
// many more functions with different SubTypes
これは私にとって非常にうまく機能しています。これらの関数の1つをパラメーターとして渡すと便利な新しい状況があります。私のサブレンジはタイプが異なるため、問題を引き起こしています。
サブタイプを除いて、すべての関数は同じように見えます。このような新しい関数型を追加しようとしました
TGetReferenceFunction = function (Index: cardinal): TSaleReferenceRecord;
現在、コンパイラは、関数パラメータをTGetReferenceFunctionとして渡そうとすると、型が異なると文句を言います。異なるサブタイプパラメータを持つこれらすべての関数を含む関数型を作成する方法はありますか?
[DCCエラー]SaleNameMap.pas(295):E2010互換性のないタイプ:「Cardinal」および「TImprovementNodePrintOrders」
私が本当に必要としているのは、すべて数値のサブタイプであるタイプです。サブタイプごとに異なる関数型を作成できることはわかっていますが、それでもこれらの関数をパラメーターとして1つの共通関数に渡すことはできません。
これは不可能だと思います。もしそうなら、私は他のいくつかのオプションがありますが、何かが足りない場合は、最初にここで試してみようと思いました。