項目値の変換
項目コンポーネントの操作:インデックス への移動
変換プロパティは,データ型を変換しようと試みます。たとえば AsString プロパティは,数値と論理値を文字列表現に変換します。次の表に,項目コンポーネントの変換プロパティの一覧と,項目コンポーネントのクラス別に推奨されるプロパティを示します。
| 項目コンポーネント | AsVariant | AsString | AsInteger | AsFloat, AsCurrency, AsBCD | AsDateTime, AsSQLTimeStamp | AsBoolean |
|---|---|---|---|---|---|---|
|
TStringField |
○ |
なし |
○ |
○ |
○ |
○ |
|
TWideStringField |
○ |
○ |
○ |
○ |
○ |
○ |
|
TIntegerField |
○ |
○ |
なし |
○ |
||
|
TSmallIntField |
○ |
○ |
○ |
○ |
||
|
TWordField |
○ |
○ |
○ |
○ |
||
|
TLargeintField |
○ |
○ |
○ |
○ |
||
|
TFloatField |
○ |
○ |
○ |
○ |
||
|
TCurrencyField |
○ |
○ |
○ |
○ |
||
|
TBCDField |
○ |
○ |
○ |
○ |
||
|
TFMTBCDField |
○ |
○ |
○ |
○ |
||
|
TDateTimeField |
○ |
○ |
○ |
○ |
||
|
TDateField |
○ |
○ |
○ |
○ |
||
|
TTimeField |
○ |
○ |
○ |
○ |
||
|
TSQLTimeStampField |
○ |
○ |
○ |
○ |
||
|
TBooleanField |
○ |
○ |
||||
|
TBytesField |
○ |
○ |
||||
|
TVarBytesField |
○ |
○ |
||||
|
TBlobField |
○ |
○ |
||||
|
TMemoField |
○ |
○ |
||||
|
TGraphicField |
○ |
○ |
||||
|
TVariantField |
なし |
○ |
○ |
○ |
○ |
○ |
|
TAggregateField |
○ |
○ |
表の一部の列は,複数の変換プロパティに関連しています(AsFloat,AsCurrency,および AsBCD)。それは,これらのプロパティの 1 つをサポートしている項目データ型は,ほかのプロパティもサポートしているためです。
AsVariant プロパティは,全データ型を変換できます。上の表に一覧表示されていないデータ型の内,AsVariant も利用できます(これ以外にはなし)。不安があるときは AsVariant を使用するといいでしょう。
変換ができない場合もあります。たとえば AsDateTime を使って文字列を日付,時刻,日付/時刻形式に変換できるのは,文字列値が認識できる日付/時刻形式になっている場合だけです。変換が失敗すると,例外が生成されます。
また,常に希望する変換結果が得られるとは限りません。たとえば,Data.DB.TDateTimeField の値を AsFloat で浮動小数点形式に変換する場合は,AsFloat は,項目の日付の部分を 1899 年 12 月 31 日から数えた日数に,また時刻の部分を 24 時間を単位とする小数に変換します。次の表は,特殊な結果を生じる許容変換を示します。
特殊な変換結果 :
| 変換 | 結果 |
|---|---|
|
文字列から論理値 |
「true」,「false」,「Yes」,「No」を論理値に変換する。それ以外の値では,例外が生成される |
|
浮動小数点形式から整数 |
浮動小数点値を最も近い整数値に丸める |
|
日付/時刻または SQLTimeStamp から浮動小数点値 |
日付を 1899 年 12 月 31 日から数えた日数に変換し,時間を 24 時間を単位とする分数に変換する |
|
論理値から文字列 |
論理値を「true」または「false」に変換する |
これら以外の変換はまったくできません。そのような変換を試みると,やはり例外が生成されます。
変換が行われるのは,常に代入が実行される前です。たとえば次の文は,CustomersCustNo 項目の値を文字列に変換し,その文字列を編集コントロールのテキストに代入します。
Edit1.Text := CustomersCustNo.AsString;
Edit1->Text = CustomersCustNo->AsString;
逆に次の文は,編集コントロールのテキストを整数として CustomersCustNo 項目に代入します。
MyTableMyField.AsInteger := StrToInt(Edit1.Text);
MyTableMyField->AsInteger = StrToInt(Edit1->Text);