ConvUtils.Convert
From RAD Studio VCL Documentation (Japanese)
Contents |
Delphi の情報
ファイル ConvUtils.pas
function Convert(const AValue: Double; const AFrom: TConvType; const ATo: TConvType): Double; overload; function Convert(const AValue: Double; const AFrom1: TConvType; const AFrom2: TConvType; const ATo1: TConvType; const ATo2: TConvType): Double; overload;
ユニット: ConvUtils
種類: 関数
可視性: public
C++ の情報
ファイル ConvUtils.hpp
double __fastcall Convert(double AValue, unsigned short AFrom, unsigned short ATo);
ユニット: ConvUtils
種類: 関数
説明
Convert は,尺度の単位を変換します。
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 の単位が変換ファミリーの基本単位と大幅に異なる場合は,オーバーフローなどの問題が発生することがあります。範囲の広い変換ファミリーの一部分だけを使って範囲の狭い独自の変換ファミリーを登録すると,この問題を解決できます。