System.ConvUtils.Convert
Delphi
function Convert(const AValue: Double; const AFrom, ATo: TConvType): Double;
function Convert(const AValue: Double; const AFrom1, AFrom2, ATo1, ATo2: TConvType): Double;
C++
extern DELPHI_PACKAGE double __fastcall Convert(const double AValue, const TConvType AFrom, const TConvType ATo)/* overload */;
プロパティ
種類 | 可視性 | ソース | ユニット | 親 |
---|---|---|---|---|
function | public | System.ConvUtils.pas System.ConvUtils.hpp |
System.ConvUtils | System.ConvUtils |
説明
測定値をある単位から別に単位へ、変換します。
Convert を呼び出すと、AValue
の値を、ある測定単位から別の単位へと、変換することができます。
最初の構文を使用する場合、AFrom
パラメータには、測定値 AValue
の現在の単位を指定します。Convert は、ATo
で指定された単位の対応する測定値を返します。たとえば次の行では、温度を華氏から摂氏に変換しています。
TempInKelvin := Convert(StrToFloat(Edit1.Text), tuFahrenheit, tuKelvin);
TempInKelvin = Convert(StrToFloat(Edit1->Text), tuFahrenheit, tuKelvin);
2 番目の構文を使用する場合、AFrom1
パラメータおよび AFrom2
パラメータでは AValue
の現在の単位を指定します。ここでの AValue
の単位は、AFrom1
/AFrom2
です。Convert は、ATo1
/ATo2
で指定された単位の対応する測定値を返します。たとえば次の呼び出しでは、マイル/ガロンからキロメートル/リットルに変換します。
nKPL := Convert(StrToFloat(Edit1.Text), duMiles, vuGallons, duKilometers, vuLiter);
double nKPL = Convert(StrToFloat(Edit1.Text), duMiles, vuGallons, duKilometers, vuLiter);
AFrom
と ATo
、AFrom1
と ATo1
、または AFrom2
と ATo2
で指定される単位は、同じ変換ファミリーに属していなければなりません(測定の対象が同じでなければならない)。2 つの TConvType 値が同じ変換ファミリーに属しているかをチェックするには、CompatibleConversionTypes を呼び出します。単位に互換性がなかった場合、Convert は EConversionError 例外を発生させます。
メモ: ユニット StdConvs では、TConvType 値となるファミリーが複数定義されています。定義済みファミリー、および各ファミリーに属する測定値の単位のリストについては、変換ファミリーの変数を参照してください。また独自の変換ファミリーや単位を、関数 RegisterConversionType や RegisterConversionFamily を使用して登録することができます。
メモ: Convert は、
AValue
を、まず単位AFrom
から変換ファミリーの基本単位に変換し、その後、その基本単位から単位ATo
へ変換することで、要求された変換処理を行っています。AFrom
とATo
の単位が、変換ファミリーの基本単位と大幅に異なる場合、オーバーフローといった問題を引き起こすことがあります。範囲の広い変換ファミリーのサブセットを利用して、より範囲の狭い独自の変換ファミリーを登録すると、このような問題を改善することができます。