<< Click to Display Table of Contents >> マニュアル > スクリプトガイド > スクリプトVer2(SC2構文) > データ型 |
データ型について
SC2構文で扱える値のデータ型は以下の5種類です。
データ型 |
説明 |
ブール |
ブール値(T or F)です。“T”はOnの状態を表し、“F”はOffの状態を表します。 |
数値 |
数値です。小数点も扱えます。 |
文字 |
文字列です。 |
時刻 |
時刻(日時)です。 |
オブジェクト |
オブジェクトを変数に格納することができます。 |
上表以外の状態として、不定値(#N/A#)と空値(#NOTHING#)があります。詳しくは「不定値と空値について」を参照して下さい。 |
ブール型
T もしくは Fと記述します。TはOnの状態をあらわし、FはOffの状態を表します。TRUE もしくは FALSEと書くこともできます(※全て大文字で記述してください)。
例)
var a = T; var b = F; var d = a && b; // dはFになります。 var e = a || b; // eはTになります。 var f = T && F || F; // fはFになります。
数値型
数値です。通常の整数はもちろん倍精度浮動小数も扱えます。
例)
var a = 123.45; var b = 23.45; var d = a + b; // d は146.9になります。 var e = 0xFF23; // 0xを頭に付けると数値を16進数で表現できます
16進数表記で扱える値の範囲は0x00000000 ~ 0xFFFFFFFFになります。 |
文字型
文字です。文字は必ず、「"」で囲みます。
例)
var a = "Hello"; var b = a + " " + "World"; // b は"Hello World"になります。
時刻型
時刻です。時刻の表現には時刻書式を用います。時刻書式については「時刻型の書式」を参照下さい。
例)
var a = #2005/1/2 3:4:5#; //2005年1月2日3時4分5秒 var a = #2005/1/2 3:4:5.123#; //2005年1月2日3時4分5秒123ms var a = #now#; //現在の時刻 var a = #now - 1D#; //現在の時刻から1日前(24時間前)の時刻
オブジェクト型
オブジェクトを変数に格納することができます。
例)
var a = this; //自分自身のオブジェクトを代入する a.FillColor = "#FF0000"; //自分自身の背景を赤にする a = parent; //親オブジェクトを代入する a.FillColor = "#00FF00"; //親の背景を緑にする
時刻型のデータでは、直接的な時刻指定のほか、例えば今現在から10分後などといった相対時刻を求めることができます。また、コントロールの中には時刻型のプロパティを持つものがあり、それらに対してスクリプトからアクセスする場合には、時刻型の変数によって行います。
絶対時刻による指定
絶対時刻で時刻表現する場合のフォーマットは以下のとおりです。
#yyyy/mm/dd H:M:S# |
例)
#2005/1/2 3:4:5# |
msまで含めたい場合は以下の書式になります。
#yyyy/mm/dd H:M:S.ms# |
例)
#2005/1/2 3:4:5.123# |
相対時刻による指定
時刻型では相対時刻表現も可能です。相対時刻とは、現在の日時を基準として1日後の日時、などの様に指定する方法です。
相対時刻で時刻表現する場合のフォーマットは以下のとおりです。
基準時刻[+時間間隔] [-時間間隔]… |
フォーマットの基準時刻の部分には以下の基準時刻が指定できます。
基準時刻 |
説明 |
現在が「2016/06/15 12:12:12」(水曜)とすると |
now |
現在。 |
2016/06/15 12:12:12 |
year |
今年。 |
2016/01/01 00:00:00 |
month |
今月。 |
2016/06/01 00:00:00 |
week |
今週。 |
2016/06/12 00:00:00 |
day |
今日。 |
2016/06/15 00:00:00 |
hour |
今の時刻(時まで有効)。 |
2016/06/15 12:00:00 |
minute |
今の時刻(分まで有効)。 |
2016/06/15 12:12:00 |
future |
未来。 |
はるか未来の時刻。 |
past |
過去。 |
はるか過去の時刻。 |
時間間隔の前には「+」か「-」及び数値を必ず指定します。「+」であれば未来へ、「-」であれば過去になります。例えば「+10m」であれば基準時刻から10分後を指します。
時間間隔 |
説明 |
y |
年 |
mo |
月 |
d |
日 |
w |
週 |
h |
時 |
m |
分 |
s |
秒 |
例)現在が「2016/01/13 12:12:12」(水曜)の場合
|
現在が31日の場合、NOWに対して月の引き算を含めた相対時刻(例 #NOW-1MO#等)を使用できません。理由は、31日の1ヶ月前が30日までしかない月の場合、該当する日が存在しないためエラーが発生しますので注意してください。 |
時刻型の値で計算を行った場合以下のようになります。
var a = #2004/1/1 0:0:0#; var b = #2004/1/1 0:1:0#; var d = b - a; // dは60(秒)になる。 var e = a + 10; // eはaに10秒加算されて#2004/1/1 0:0:10#になる。 |
ルートメソッド「GetRelativeTime」は、ある特定の時刻(現在の時刻ではなく、指定した時刻)を基準に相対時刻の書式を用いて、相対時刻を求めることができます。
例1)結果は「2002/10/9 10:10:10」になります。 var a = ::GetRelativeTime(::CTime("2002/10/10 10:10:10"), "now-1d");
例2)結果は「2002/10/9 0:0:0」になります。 var a = ::GetRelativeTime(::CTime("2002/10/10 10:10:10"), "day-1d"); |
型変換について
ルートメソッドには以下の変換メソッドが用意されており、スクリプトなどから呼び出す事で型変換を行うことができます。
値をブール型に変換する。 |
|
値を数値型に変換する。 |
|
値を文字列に変換する。 |
|
値を時刻型に変換する。 |
|
フォーマットに従った数値文字列を作成する。 |
|
値を時刻文字列に変換する。 |
|
値を16進数の文字列に変換する。 |
|
値を8進数の文字列に変換する。 |
|
値を2進数の文字列に変換する。 |
|
16進数の文字列を値に変換する。 |
|
8進数の文字列を値に変換する。 |
|
2進数の文字列を値に変換する。 |
例えば以下の場合、変数cには“Data1:123 Data2:456”という文字列が代入されます。
var a = 123; var b = 456; var c = "Data1:" + ::CStr(a) + " Data2:" + ::CStr(b);
CNumToLocale(NL)は小数点や桁数を調整した数値文字列を生成する便利な関数です。第一引数で数値を、第二引数で小数点以下の桁数を指定します。
例)以下の例では、aには"12.00"という文字が代入されます。 var a = ::NL(12, 2); |