System.Variants.TCustomVariantType.RightPromotion
Delphi
function RightPromotion(const V: TVarData; const Operator: TVarOp; out RequiredVarType: TVarType): Boolean; virtual;
C++
virtual bool __fastcall RightPromotion(const TVarData &V, const int Operator, /* out */ System::Word &RequiredVarType);
プロパティ
| 種類 | 可視性 | ソース | ユニット | 親 |
|---|---|---|---|---|
| function | protected | System.Variants.pas System.Variants.hpp |
System.Variants | TCustomVariantType |
説明
バイナリ演算の右側の引数を別の型に強制的にキャストするかどうかを示します。
RightPromotion メソッドをオーバーライドすると,バイナリ演算の右側の引数を暗黙にほかの型にキャストしてから演算を実行できます。RightPromotion が呼び出されるのは,バイナリ演算または比較演算で,右側のバリアントがこのバリアント型の場合です。
メモ: 2 つのカスタムバリアントが必要な演算では,左側の引数の RightPromotion メソッドが最初に呼び出されます。左側の引数の RightPromotion メソッドが false を返した場合,右側の引数の LeftPromotion メソッドが呼び出されます。
V は,演算の左側の引数に対する TVarData レコードです。
Operator は,演算の種類を示します。次の表に,演算子の種類を示します。
| 値 | オペレーション |
|---|---|
|
opAdd |
加算 |
|
opSubtract |
減算 |
|
opMultiply |
乗算 |
|
opDivide |
浮動小数点の除算 |
|
opIntDivide |
整数除算 |
|
opModulus |
剰余 |
|
opShiftRight |
右へ移動 |
|
opShiftRight |
右へ移動 |
|
opAnd |
ビット論理積 |
|
opOr |
ビット論理和 |
|
opXor |
ビット排他的論理和 |
|
opCompare |
任意の比較処理 |
RequiredVarType は,演算を実行する前に右側の引数をキャストするバリアント型コードを返します。右側の引数を変更せずに演算が実行される場合,RequiredVarType は,V の VType 項目を返します。
右側の引数が RequiredVarType にキャストできることを前提に,TCustomVariantType の下位クラスが(BinaryOp,CompareOp,または Compare メソッドを使って)演算を実行できる場合,RightPromotion は true を返します。TCustomVariantType の下位クラスが演算を実行できない場合は,false が返されます。
TCustomVariantType での RightPromotion は,RequiredVarType として VarType プロパティを返し,true を返します。