Kentaro Shirakata
argra****@users*****
2007年 1月 2日 (火) 21:34:52 JST
Index: docs/modules/libwin32-0.26/Win32/OLE/Const.pod diff -u /dev/null docs/modules/libwin32-0.26/Win32/OLE/Const.pod:1.1 --- /dev/null Tue Jan 2 21:34:52 2007 +++ docs/modules/libwin32-0.26/Win32/OLE/Const.pod Tue Jan 2 21:34:51 2007 @@ -0,0 +1,86 @@ + +=head1 NAME + +Win32::OLE::Const - TypeLibから定数定義を取り出す + +=head1 SYNOPSIS + + use Win32::OLE::Const 'Microsoft Excel'; + printf "xlMarkerStyleDot = %d\n", xlMarkerStyleDot; + + my $wd = Win32::OLE::Const->Load("Microsoft Word 8\\.0 Object Library"); + foreach my $key (keys %$wd) { + printf "$key = %s\n", $wd->{$key}; + } + +=head1 DESCRIPTION + +このモジュールはすべての定数を登録されたOLEタイプ・ライブラリからPerlプログラムで利用できるようにします。 定数定義は関数としてインポートされ、コンパイル時の名前チェックが提供されます。 +知らない名前の関数をたくさん定義することを避けるために、定数をハッシュ・リファレンスとして返すこともできます。 + +=head2 Functions/Methods + +=over 8 + +=item use Win32::OLE::Const + +C<use>ステートメントで直接、定数名と変数をユーザ名前空間にインポートするために使うことができます。 + + use Win32::OLE::Const (TYPELIB,MAJOR,MINOR,LANGUAGE); + +TYPELIB引数はタイプ・ライブラリをレジストリで探すための正規表現を指定します。 ほとんどの場合でマッチングのスピードが上がるように、この引数は暗黙のうちに頭にC<^>がつけられることに注意してください。 記述のどこであってもマッチするようにするには、 ".*Excel"のようなtypelib名を使ってください。 TYPELIBだけが必須の引数です。 + +MAJOR と MINOR 引数はタイプ仕様の必要とされるバージョンを指定します。 MAJOR引数が使われると、正確にこのメジャー・バージョン番号をもったtypelibだけがマッチします。 しかしMINOR引数は最小の受け入れることのできるマイナー・バージョンを指定します。 +MAJORが未定義であれば、MINORは無視されます。 + +LANGUAGE 引数が使われると、正確にこのlanguage idを持っているtypelibだけがマッチします。 + +モジュールは要求を満たす最も高いバージョン番号のtypelibを選択します。 language idが指定されなければ、デフォルトのlanguage(0)が他のものよりも優先されます。 + +有効なPerl変数名、つまり名前が /^[a-zA-Z_][a-zA-Z0-9_]*$/ の正規表現にマッチする定数だけがエクスポートされることに注意してください。 + +=item Win32::OLE::Const->Load + +Win32::OLE::Const->Load メソッドは定数定義のハッシュへのリファレンスを返します。 + + my $const = Win32::OLE::Const->Load(TYPELIB,MAJOR,MINOR,LANGUAGE); + +パラメータは C<use> の場合と同じです。 + +このメソッドは一般的にtypelibが英語以外の言語を使っているときや定数名にロケール特有のPerl変数名として許されない文字がはいっているときに好まれます。 + +もう1つの利点は、利用できるすべての定数を列挙することができることです。 + +loadメソッドはOLEオブジェクトもパラメータとして受け入れます。 この場合、OLEオブジェクトは、それが持っているタイプライブラリを問い合わせられ、レジストリ検索は全く行なわれません。 面白いことに、これはより遅いようです。 + +=back + +=head1 EXAMPLES + +最初の例では、すべてのExcel定数名をメインの名前空間にインポートし、xlMarkerStyleDot(-4118)の値を出力します。 + + use Win32::OLE::Const ('Microsoft Excel 8.0 Object Library'); + print "xlMarkerStyleDot = %d\n", xlMarkerStyleDot; + +2 番目の例はすべてのWord定数をハッシュ・リファレンスとして返します: + + use Win32::OLE::Const; + my $wd = Win32::OLE::Const->Load("Microsoft Word 8.0 Object Library"); + foreach my $key (keys %$wd) { + printf "$key = %s\n", $wd->{$key}; + } + printf "wdGreen = %s\n", $wd->{wdGreen}; + +最後の例はOLEオブジェクトをタイプライブラリを指定するために使います: + + use Win32::OLE; + use Win32::OLE::Const; + my $Excel = Win32::OLE->new('Excel.Application', 'Quit'); + my $xl = Win32::OLE::Const->Load($Excel); + + +=head1 AUTHORS/COPYRIGHT + +このモジュールは Win32::OLE ディストリビューションの一部です。 + +=cut Index: docs/modules/libwin32-0.26/Win32/OLE/Enum.pod diff -u /dev/null docs/modules/libwin32-0.26/Win32/OLE/Enum.pod:1.1 --- /dev/null Tue Jan 2 21:34:52 2007 +++ docs/modules/libwin32-0.26/Win32/OLE/Enum.pod Tue Jan 2 21:34:51 2007 @@ -0,0 +1,60 @@ + +=head1 NAME + +Win32::OLE::Enum - OLE オートメーションコレクション オブジェクト + +=head1 SYNOPSIS + + my $Sheets = $Excel->Workbooks(1)->Worksheets; + my $Enum = Win32::OLE::Enum->new($Sheets); + my @Sheets = $Enum->All; + + while (defined(my $Sheet = $Enum->Next)) { ... } + +=head1 DESCRIPTION + +このモジュールはPerlからOLEコレクション・オブジェクトへのインタフェースを提供します。 これはIEnumVARIANTインターフェースの機能をほとんどそのままのような列挙するオブジェクトを定義します。 + +Reset()メソッドがOLEコレクションのすべての実装で利用できるわけではない(Excel7のように)ことに注意してください。 その場合、Enumオブジェクトはコレクションを一度だけ通してみていくためだけに有効です。 + +=head2 Functions/Methods + +=over 8 + +=item Win32::OLE::Enum->new($object) + +$object のためのEnumオブジェクトを作成します; $objectは正しいOLEコレクション・オブジェクトでなければなりません。 正しく実装されたコレクション・オブジェクトはC<Count>とC<Item>メソッドをサポートしていなければならないので、反復子は常には必要ないことに注意してください。 + +=item $Enum->All() + +そのコレクションのなかのすべてのオブジェクトのリストを返します。 列挙するオブジェクトをもう一度使う前に、 $Enum->Reset() を呼ばなければなりません。 コレクションの以前の位置は失われます。 + +このメソッドはクラスメソッドとしても呼び出すことができます: + + my @list = Win32::OLE::Enum->All($Collection); + +=item $Enum->Clone() + +(もし可能であれば)コレクションでの現在の位置を保持するEnumオブジェクトのクローンを返します。 Cloneメソッドはしばしば実装されていないことに注意してください。 Clone がサポートされているかどうかわからなければ、die するのを避けるためevalブロックで$Enum->Clone()を使ってください。 + +=item $Enum->Next( [$count] ) + +コレクションの次の要素を返します。 リスト・コンテキストではオプションの$count引数は返されるオブジェクトの数を指定します。 スカラ・コンテキストでは$countの取り出されたオブジェクトの最後のものが返されます。 $countのデフォルトは1です。 + +=item $Enum->Reset() + +列挙の順番を最初に戻します。 全く同じオブジェクトの集合が再び列挙されるかどうかは保証されません(例えばディレクトリに列挙されているファイルのとき)。 メソッドは処理が正常であることを示す値を返します。 (Reset()メソッドはExcel7のようにアプリケーションによっては実装されていないようであることに注意してください。 die することを避けるために、evalブロックを使ってください) + +=item $Enum->Skip( [$count] ) + +列挙の次の$count分の要素を飛ばします。 $countのデフォルトは1です。 +もし少なくとも$count分の要素が飛ばすことができれば関数はTRUEを返します。 十分な数の要素が残っていなければFALSEを返します。 + +=back + +=head1 AUTHORS/COPYRIGHT + +このモジュールは Win32::OLE ディストリビューションの一部です。 + +=cut + Index: docs/modules/libwin32-0.26/Win32/OLE/NLS.pod diff -u /dev/null docs/modules/libwin32-0.26/Win32/OLE/NLS.pod:1.1 --- /dev/null Tue Jan 2 21:34:52 2007 +++ docs/modules/libwin32-0.26/Win32/OLE/NLS.pod Tue Jan 2 21:34:51 2007 @@ -0,0 +1,519 @@ + +=head1 NAME + +Win32::OLE::NLS - OLE 各国語サポート + +=head1 SYNOPSIS + + ありません + +=head1 DESCRIPTION + +このモジュールは F<OLENLS.DLL> の各国語サポート機能へのアクセスを提供します。 + +=head2 Functions + +=over 8 + +=item CompareString(LCID,FLAGS,STR1,STR2) + +LCIDロケールで STR1 と STR2 を比較します。 FLAGS は 2 つの文字列を比較する際に、使用されるあるいは無視される文字の特徴を示します。 + + NORM_IGNORECASE 大文字と小文字を区別しない + NORM_IGNOREKANATYPE ひらがなとカタカナを区別しない + NORM_IGNORENONSPACE 場所を取らない文字を区別しない + NORM_IGNORESYMBOLS 記号を無視する + NORM_IGNOREWIDTH 全角半角を区別しない + +可能な戻り値は以下の通り: + + 0 関数が失敗 + *1 STR1 は STR2よりも小さい + 2 STR1 は STR2と同じ + 3 STR1 は STR2よりも大きい + +C<cmp>演算子と比較できる値を取得するために、戻り値から2を引くことができることに注意。 + +=item LCMapString(LCID,FLAGS,STR) + +LCMapString はLCIDに依存した変換でSTRを変換します。 +Flags には以下のオプションの組み合わせが入ります: + + LCMAP_LOWERCASE 小文字化 + LCMAP_UPPERCASE 大文字化 + LCMAP_HALFWIDTH 半角化 + LCMAP_FULLWIDTH 全角化 + LCMAP_HIRAGANA ひらなが化 + LCMAP_KATAKANA カタカナ化 + LCMAP_SORTKEY 正規化されたワイド文字のソートキーを作成する + +以下の正規化オプションはC<LCMAP_SORTKEY>に組み合わせることができます: + + NORM_IGNORECASE 大文字と小文字を区別しない + NORM_IGNOREKANATYPE ひらがなとカタカナを区別しない + NORM_IGNORENONSPACE 場所を取らない文字を区別しない + NORM_IGNORESYMBOLS 記号を無視する + NORM_IGNOREWIDTH 全角半角を区別しない + +戻り値は変換された文字列です。 + +=item GetLocaleInfo(LCID,LCTYPE) + +ロケール設定lCTYPEをLCIDで指定されたロケールから取り出します。 常にロケール・データベースに問い合わせるためには LOCALE_NOUSEROVERRIDE | LCTYPEを使ってください。 +そうでなければ値を取り出す際に、Windowsコントロール・パネルを通じてユーザによるwin.iniの変更が、システム・デフォルト・ロケールよりも優先されます。 +適切なLCTYPE値のリストについては下記のドキュメントをご覧ください。 + +戻り値は要求されたロケール設定の内容です。 + +=item GetStringType(LCID,TYPE,STR) + +ロケールLCIDからSTRにある各文字についての型情報を取り出します。 +要求されるTYPEは以下の3つのレベルのいずれかにすることができます: + + CT_CTYPE1 ANSI C と POSIX 型情報 + CT_CTYPE2 テキスト・ライアウト型情報 + CT_CTYPE3 テキスト処理型情報 + +戻り値は、下記の対応テーブルからの適応できるタイプビットのORによる値のリストです。: + + @ct = GetStringType(LOCALE_SYSTEM_DEFAULT, CT_CTYPE1, "String"); + +ANSI C と POSIX 文字型情報: + + C1_UPPER 大文字 + C1_LOWER 小文字 + C1_DIGIT 数字 + C1_SPACE 空白文字 + C1_PUNCT 句読点 + C1_CNTRL 制御文字 + C1_BLANK ブランク文字 + C1_XDIGIT 16進数字 + C1_ALPHA なんらかの文字 + +テキスト・レイアウト型情報: + + C2_LEFTTORIGHT 左から右 + C2_RIGHTTOLEFT 右から左 + C2_EUROPENUMBER ヨーロッパ数字 + C2_EUROPESEPARATOR ヨーロッパ数字 区切り + C2_EUROPETERMINATOR ヨーロッパ数字 終端 + C2_ARABICNUMBER アラブ数字 + C2_COMMONSEPARATOR 共通数字区切り + C2_BLOCKSEPARATOR ブロック区切り + C2_SEGMENTSEPARATOR セグメント区切り + C2_WHITESPACE 空白 + C2_OTHERNEUTRAL その他の中立文字 + C2_NOTAPPLICABLE 暗黙の方向無し (例えば制御コード) + +テキスト処理型情報: + + C3_NONSPACING 非空白符 + C3_DIACRITIC 読み分け発音符 + C3_VOWELMARK 母音非空白符 + C3_SYMBOL 記号 + C3_KATAKANA カタカナ文字 + C3_HIRAGANA ひらがな文字 + C3_HALFWIDTH 半角文字 + C3_FULLWIDTH 全角文字 + C3_IDEOGRAPH 表意文字 + C3_ALPHA すべての文字 + C3_NOTAPPLICABLE 不適当 + + +=item GetSystemDefaultLangID() + +システム・デフォルト言語IDを返します。 + +=item GetSystemDefaultLCID() + +システム・デフォルト・ロケールIDを返します。 + +=item GetUserDefaultLangID() + +ユーザ・デフォルト言語IDを返します。 + +=item GetUserDefaultLCID() + +ユーザ・デフォルト言語IDを返します。 + +=item SendSettingChange() + +すべてのトップ・レベル・ウィンドウにWM_SETTINGCHANGE メッセージを送ります。 + +=item SetLocaleInfo(LCID, LCTYPE, LCDATA) + +ロケール設定LCIDのユーザ上書き部分での要素を変更します。 +システム・デフォルト・データベースは変更しません。 以下のLCTYPEが変更可能です: + + LOCALE_ICALENDARTYPE LOCALE_SDATE + LOCALE_ICURRDIGITS LOCALE_SDECIMAL + LOCALE_ICURRENCY LOCALE_SGROUPING + LOCALE_IDIGITS LOCALE_SLIST + LOCALE_IFIRSTDAYOFWEEK LOCALE_SLONGDATE + LOCALE_IFIRSTWEEKOFYEAR LOCALE_SMONDECIMALSEP + LOCALE_ILZERO LOCALE_SMONGROUPING + LOCALE_IMEASURE LOCALE_SMONTHOUSANDSEP + LOCALE_INEGCURR LOCALE_SNEGATIVESIGN + LOCALE_INEGNUMBER LOCALE_SPOSITIVESIGN + LOCALE_IPAPERSIZE LOCALE_SSHORTDATE + LOCALE_ITIME LOCALE_STHOUSAND + LOCALE_S1159 LOCALE_STIME + LOCALE_S2359 LOCALE_STIMEFORMAT + LOCALE_SCURRENCY LOCALE_SYEARMONTH + +サブシステムはロケール情報をキャッシュしているようなので、後のWin32::OLE::Variantオブジェクトの書式設定のために、これらの変更を有効にするためにはSendSettingChange()を呼び出さなければなりません。 + +=item MAKELANGID(LANG,SUBLANG) + +プライマリ言語とサブ言語から言語IDを作成します。 + +=item PRIMARYLANGID(LANGID) + +言語IDからプライマリ言語を取り出します。 + +=item SUBLANGID(LANGID) + +言語IDからサブ言語を取り出します。 + +=item MAKELCID(LANGID) + +言語IDからロケールIDを作成します。 + +=item LANGIDFROMLCID(LCID) + +ロケールIDから言語IDを取り出します。 + +=back + +=head2 Locale Types + +=over 8 + +=item LOCALE_ILANGUAGE + +言語ID (16進数)。 + +=item LOCALE_SLANGUAGE + +ローカライズされた言語名。 + +=item LOCALE_SENGLANGUAGE + +言語のISO標準 639 英語名。 + +=item LOCALE_SABBREVLANGNAME + +言語名の3文字の省略形。 最初の 2 文字は ISO 標準 639 の 2 文字の言語簡略名を使用します。 3番目の文字はサブ言語タイプを示します。 + +=item LOCALE_SNATIVELANGNAME + +言語のネィティブな名前。 + +=item LOCALE_ICOUNTRY + +国際電話コードをベースとした国コード。 + +=item LOCALE_SCOUNTRY + +国のローカライズされた名前。 + +=item LOCALE_SENGCOUNTRY + +国の英語名。 + +=item LOCALE_SABBREVCTRYNAME + +国のISO 標準 3166 省略名。 + +=item LOCALE_SNATIVECTRYNAME + +国のネィティブな名前。 + +=item LOCALE_IDEFAULTLANGUAGE + +このロケールで話されている主要な言語のための言語ID。 + +=item LOCALE_IDEFAULTCOUNTRY + +このロケールでの主要な国のための国コード。 + +=item LOCALE_IDEFAULTANSICODEPAGE + +このロケールに関連付けられたANSIコードページ。 書式: 4 Unicode 数字 プラス Unicode null 終端子。 + +XXX This should be translated by GetLocaleInfo. XXX + +=item LOCALE_IDEFAULTCODEPAGE + +国に関連付けれられたOEMコードページ。 + +=item LOCALE_SLIST + +リスト要素を区切るために使われる文字(よくカンマが使われる)。 + +=item LOCALE_IMEASURE + +デフォルトの計測方式: + + 0 メートル法式(S.I.) + 1 アメリカ 式 + +=item LOCALE_SDECIMAL + +小数点のための文字(よくピリオドが使われる)。 + +=item LOCALE_STHOUSAND + +数値の左側の数字のグループの間を区切るために使われる文字(桁区切り文字)。 + +=item LOCALE_SGROUPING + +数字の左側の数字のグループの大きさ(区切る桁数)。 各グループのために明確な大きさが必要とされます。 大きさはセミコロンで区切られます。 もし最後の値が0であれば、前の値が繰り返されます。 1000単位でグループにするには、3;0を指定してください。 + +=item LOCALE_IDIGITS + +小数点以下の桁数。 + +=item LOCALE_ILZERO + +10進数のフィールドで前に0をつけるかどうか。 0を設定すると0はつきません; 1は0をつけます。 + +=item LOCALE_SNATIVEDIGITS + +ASCII の 0-9 と等価なネィティブな10文字。 + +=item LOCALE_INEGNUMBER + +負の数値のモード。 + + 0 (1.1) + 1 -1.1 + 2 -1.1 + 3 1.1 + 4 1.1 + +=item LOCALE_SCURRENCY + +ローカルな通貨記号として使われる文字列。 + +=item LOCALE_SINTLSYMBOL + +ISO 4217 Codes for the Representation of Currency and Fundsで指定された国際通貨記号 3 文字、その後にこの文字列と数量を区切る文字がつく。 + +=item LOCALE_SMONDECIMALSEP + +通貨での小数を区切るために使われる文字。 + +=item LOCALE_SMONTHOUSANDSEP + +通貨での数字の桁を区切るために使われる文字。 + +=item LOCALE_SMONGROUPING + +通貨での数字の桁を区切る桁数。 各グループのために明確な大きさが必要とされます。 大きさはセミコロンで区切られます。 もし最後の値が0であれば、前の値が繰り返されます。 1000単位でグループにするには、3;0を指定してください。 + +=item LOCALE_ICURRDIGITS + +ローカルな通貨フォーマットのための小数点以下の桁数。 + +=item LOCALE_IINTLCURRDIGITS + +国際通貨フォーマットのための小数点以下の桁数。 + +=item LOCALE_ICURRENCY + +正の通貨モード。 + + 0 前につける、区切り無し + 1 後ろにつける、区切り無し + 2 前につける, 1文字の区切り + 3 後ろにつける、1文字の区切り + +=item LOCALE_INEGCURR + +負の通貨モード。 + + 0 ($1.1) + 1 -$1.1 + 2 $-1.1 + 3 $1.1- + 4 $(1.1$) + 5 -1.1$ + 6 1.1-$ + 7 1.1$- + 8 -1.1 $ ($ の前に空白) + 9 -$ 1.1 ($ の後に空白) + 10 1.1 $- ($ の前に空白) + +=item LOCALE_ICALENDARTYPE + +現在使われているカレンダーの種類。 + + 1 グレゴリオ歴 (アメリカでのような) + 2 グレゴリオ歴 (常に英語の文字列) + 3 元号: (日本) + 4 元号: 中華民国 + 5 檀紀 (朝鮮) + +=item LOCALE_IOPTIONALCALENDAR + +このLCIDで利用できる追加のカレンダーの種類。 ヌルで区切ってオプションのカレンダがすべて入ったリストにすることができます。 何もなければ値は0、あるいはLOCALE_ICALENDARTYPE文字列のいずれか。 + +XXX ヌル区切りのリストはGetLocaleInfoで変換されるべき XXX。 + +=item LOCALE_SDATE + +日付区切りに使われる文字。 + +=item LOCALE_STIME + +時刻区切りに使われる文字。 + +=item LOCALE_STIMEFORMAT + +時刻書式設定文字列。 + +=item LOCALE_SSHORTDATE + +このロケールでの短い日付時刻書式設定文字列。 + +=item LOCALE_SLONGDATE + +このロケールでの長い日付時刻書式設定文字列。 + +=item LOCALE_IDATE + +短い日付書式の順序指定子。 + + 0 月 - 日 - 年 + 1 日 - 月 - 年 + 2 年 - 月 - 日 + +=item LOCALE_ILDATE + +長い日付書式の順序指定子。 LOCALE_IDATE設定のための適切な値のいずれにもすることができます。 + +=item LOCALE_ITIME + +時刻書式設定指定子。 + + 0 AM/PM 12時間形式 + 1 24時間 形式 + +=item LOCALE_ITIMEMARKPOSN + +時刻マーカー文字列(AM|PM)が時刻文字列の前につくか後につくか。 + 0 後(9:15 AM) + 1 前(AM 9:15) + +=item LOCALE_ICENTURY + +完全な 4 桁の年を使うかどうか。 + + 0 2桁。 + 1 年全体。 + +=item LOCALE_ITLZERO + +時刻フィールドで0が前につくかどうか。 + + 0 前に0をつけない。 + 1 時間の前に0をつける。 + +=item LOCALE_IDAYLZERO + +日のフィールドで0をつけるかどうか。 値はLOCALE_ITLZEROと同じ。 + +=item LOCALE_IMONLZERO + +月のフィールドで0をつけるかどうか。 値はLOCALE_ITLZEROと同じ。 + +=item LOCALE_S1159 + +午前を表すための文字列。 + +=item LOCALE_S2359 + +午後を表すための文字列。 + +=item LOCALE_IFIRSTWEEKOFYEAR + +その年のどの週を最初と考えるかを指定する。 + + 0 1/1が含まれる週をその年の最初の週とする。 + 1 1/1の後の1週間をその年の最初の週とする。 + 2 少なくとも4日ある最初の週をその年の最初の週とする。 + +=item LOCALE_IFIRSTDAYOFWEEK + +週の最初の日と考えられる日を指定します。 値"0"はSDAYNAME1、値"6"はSDAYNAME7を意味します。 + +=item LOCALE_SDAYNAME1 .. LOCALE_SDAYNAME7 + +月曜日から日曜日のための長い名前。 + +=item LOCALE_SABBREVDAYNAME1 .. LOCALE_SABBREVDAYNAME7 + +月曜日から日曜日のための省略名。 + +=item LOCALE_SMONTHNAME1 .. LOCALE_SMONTHNAME12 + +1月から12月のための長い名前。 + +=item LOCALE_SMONTHNAME13 + +もしあれば13番目の月のメイティブな名前。 + +=item LOCALE_SABBREVMONTHNAME1 .. LOCALE_SABBREVMONTHNAME12 + +1月から12月のための省略名。 + +=item LOCALE_SABBREVMONTHNAME13 + +もしあれば13番目の月のネィティブな省略名。 + +=item LOCALE_SPOSITIVESIGN + +正の記号のための文字列。 + +=item LOCALE_SNEGATIVESIGN + +負の記号のための文字列。 + +=item LOCALE_IPOSSIGNPOSN + +正の値のための書式インデックス。 + + 0 通貨記号も含めた全体を括弧で囲む。 + 1 符号文字列を全体と通貨記号の前につける。 + 2 符号文字列を全体と通貨記号の後につける。 + 3 符号文字列を通貨記号の前につける。 + 4 符号文字列を通貨記号の後につける。 + +=item LOCALE_INEGSIGNPOSN + +負の値のための書式インデックス。 値はLOCALE_IPOSSIGNPOSNと同じ。 + +=item LOCALE_IPOSSYMPRECEDES + +もし通貨記号が前につくのであれば 1。 それが正の数値の後に続くのであれば 0。 + +=item LOCALE_IPOSSEPBYSPACE + +通貨記号が正の数値から空白によって区切られるのであれば1。 そうでなければ0。 + +=item LOCALE_INEGSYMPRECEDES + +もし通貨記号が前につくのであれば 1。 それが負の数値の後に続くのであれば0。 + +=item LOCALE_INEGSEPBYSPACE + +通貨記号が負の数値から空白によって区切られるのであれば1。 そうでなければ0。 + +=back + +=head1 AUTHORS/COPYRIGHT + +このモジュールは Win32::OLE ディストリビューションの一部です。 + +=cut Index: docs/modules/libwin32-0.26/Win32/OLE/Variant.pod diff -u /dev/null docs/modules/libwin32-0.26/Win32/OLE/Variant.pod:1.1 --- /dev/null Tue Jan 2 21:34:52 2007 +++ docs/modules/libwin32-0.26/Win32/OLE/Variant.pod Tue Jan 2 21:34:51 2007 @@ -0,0 +1,413 @@ + +=head1 NAME + +Win32::OLE::Variant - OLE バリアント変数の作成と変更 + +=head1 SYNOPSIS + + use Win32::OLE::Variant; + my $var = Variant(VT_DATE, 'Jan 1,1970'); + $OleObject->{value} = $var; + $OleObject->Method($var); + + +=head1 DESCRIPTION + +Perl OLEモジュールによって使われるIDispatch インターフェースはバリアント(VARIANT)と呼ばれる汎用的な引数型を使います。 これは基本的にデータ型と実際のデータ値をもったオブジェクトです。 データ型はVT_xxx定数により指定されます。 + +=head2 Functions + +=over 8 + +=item nothing() + +nothing() 関数は空のVT_DISPATCH変数を返します。 プロパティに格納されたオブジェクト参照をクリアするために使うことができます。 + + use Win32::OLE::Variant qw(:DEFAULT nothing); + # ... + $object->{Property} = nothing; + +これは以下のVisual Basic ステートメントと同じ効果を持ちます。 + + Set object.Property = Nothing + +nothing() はデフォルトではエクスポートB<されません>。 + +=item nullstring() + +nullstring() 関数は NULL 文字列ポインタの VT_BSTR バリアントを返します。 これは空文字列 "" の VT_BSTR バリアントと同じではB<ありません>。 nullstring() の値は Visual Basic での vbNullString + 定数と同じです。 + +The nullstring() 関数はデフォルトではエクスポートB<されません>。 + +=item Variant(TYPE, DATA) + +これは C<Win32::OLE::Variant->new()> メソッドの単なる別名関数です(下記を参照してください)。 この関数はデフォルトでエクスポートされます。 + +=back + +=head2 Methods + +=over 8 + +=item new(TYPE, DATA) + +このメソッドは指定された TYPE の与えられた DATA をもった Win32::OLE::Variant オブジェクトを返します。 Win32::OLE::Variant オブジェクトは IV, NV または PV(これらは透過的にサポートされています)以外のデータ型を指定するために使うことができます。 詳細については下記の L<Variants> をご覧ください。 + +VT_EMPTY と VT_NULL バリアントについては、 DATA 引数を省略することができます。 +VT_ARRAY ではないすべてのバリアントについては、DATA を初期値を指定します。 + +SAFEARRAY バリアントを作るためには、配列要素の基本型に加えて VT_ARRAY フラグを指定しなければなりません。 この場合、DATA は配列を次元を指定するリストでなければなりません。 各要素は要素数(0 から指定数 -1 を示します)またはこの次元での上限下限を示す配列リファレンスのどちらかにすることができます: + + my $Array = Win32::OLE::Variant->new(VT_ARRAY|VT_R8, [1,2], 2); + +これは double で 4 つの要素:((1,0), (1,1), (2,0), (2,1) をもった 2 次元の SAFEARRAY を作成します。 + +特別な場合は、文字列 DATA 引数をもった 1 次元のVT_UI1 配列の作成です: + + my $String = Variant(VT_ARRAY|VT_UI1, "String"); + +これは"String"で初期化された 6 要素の文字配列を作成します。 後方互換性のため、文字列初期値をもった VT_UI1 は自動的に VT_ARRAY が暗黙のうちに設定されます。 次の行は前の例と等価です: + + my $String = Variant(VT_UI1, "String"); + +本当に 1 文字 VT_Ul1 バリアントが必要なのであれば、数値の初期値を使って作らなければなりません: + + my $Char = Variant(VT_UI1, ord('A')); + +=item As(TYPE) + +C<As> は VARIANT を Perl の値に変換される前に新しい型に変換します。 これは現在の LCID 設定も勘案します。 例えばある文字列には小数点文字として','が入っているかもしれません。 +C<$variant->As(VT_R8)> を使うと浮動小数点値を返します。 + +元になるバリアントは、このメソッドによって変更されません。 + +=item ChangeType(TYPE) + +このメソッドは入っているバリアントの型をその場で変更します。 変換された値ではなく、オブジェクトそれ自身を返します。 + +=item Copy([DIM]) + +このメソッドはオブジェクトのコピーを作成します。 元のバリアントの VT_BYREF ビットが設定されていれば、新しいオブジェクトは同じ古いデータのリファレンスではなく参照されているデータのコピーを持ちます。 新しいオブジェクトでは VT_BYREF ビットは設定されていません。 + + my $Var = Variant(VT_I4|VT_ARRAY|VT_BYREF, [1,5], 3); + my $Copy = $Var->Copy; + +C<$Copy> の型は今や VT_I4|VT_ARRAY であり、値は他のSAFEARRAY のコピーです。 C<$Var> の要素を変更しても C<$Copy>には反映されませんし、その逆でも同じです。 + +C<Copy>メソッドはVT_ARRAY | VT_VARIANT オブジェクトの 1 つの要素を取り出すために使うこともできます。 この場合、配列のインデックスはリスト DIM で指定されなければなりません: + + my $Int = $Var->Copy(1, 2); + +C<$Int> は今や要素 (1,2) の値をもった VT_I4 バリアント・オブジェクトです。 + +=item Currency([FORMAT[, LCID]]) + +このメソッドはバリアントの値を書式設定された通貨文字列に変換します。 FORMAT は整数定数またはハッシュ・リファレンスのどちらかにすることができます。 適切な定数は 0 と LOCALE_NOUSEROVERRIDE です。 Win32::OLE::NLS モジュールから LOCALE_NOUSEROVERRIDE の値を取得することができます: + + use Win32::OLE::NLS qw(:LOCALE); + +LOCALE_NOUSEROVERRIDE は、コントロール・パネル・アプリケーションを通して行われた変更をすべて無視して、指定されたロケールのためのシステム・デフォルト通貨フォーマットを使うように指示します。 + +ハッシュ・リファレンスには以下のキーを入れることができます: + + NumDigits 小数の桁数 + LeadingZero 数値フィールドで前に0をつけるかどうか + Grouping 数字区切りの各グループの桁数 + DecimalSep 小数点文字列 + ThousandSep 桁区切り文字 + NegativeOrder L<Win32::OLE::NLS/LOCALE_ICURRENCY> を参照 + PositiveOrder L<Win32::OLE::NLS/LOCALE_INEGCURR> を参照 + CurrencySymbol 通貨記号 + +例えば: + + use Win32::OLE::Variant; + use Win32::OLE::NLS qw(:DEFAULT :LANG :SUBLANG :DATE :TIME); + my $lcidGerman = MAKELCID(MAKELANGID(LANG_GERMAN, SUBLANG_NEUTRAL)); + my $v = Variant(VT_CY, "-922337203685477.5808"); + print $v->Currency({CurrencySymbol => "Tuits"}, $lcidGerman), "\n"; + +以下のようになります: + + -922.337.203.685.477,58 Tuits + +=item Date([FORMAT[, LCID]]) + +バリアントを書式設定された日付文字列に変換します。 FORMAT は以下の整数定数か書式設定文字列のどちらかにすることができます: + + LOCALE_NOUSEROVERRIDE このロケールでのシステム・デフォルト日付書式を使う + DATE_SHORTDATE 短い日付書式を使う(デフォルト) + DATE_LONGDATE 長い日付書式を使う + DATE_YEARMONTH 年/月 書式を使う + DATE_USE_ALT_CALENDAR もしあれば代替 カレンダーを使う + DATE_LTRREADING 左から右 読込順レイアウト + DATE_RTLREADING 右から左 読込順レイアウト + +Win32::OLE::NLS モジュールから定数を利用することができます: + + use Win32::OLE::NLS qw(:LOCALE :DATE); + +以下の要素を日付書式設定文字列を構成するために使うことができます。 +文字は正確に以下で示される通りに指定されなければなりません(例えば"dd"は"DD"ではB<ありません>)。 +書式コードの間のどこにでも空白を入れることができますが、その他の、逐語的なテキストはシングル・クォートに含まれなければなりません。 + + d 日 + dd 日。1桁であれば前に0がつく + ddd 曜日 : 3文字の省略名 (LOCALE_SABBREVDAYNAME) + dddd 曜日 : フルネーム (LOCALE_SDAYNAME) + M 月 + MM 月。1桁であれば前に0がつく + MMM 月: 3文字の省略名 (LOCALE_SABBREVMONTHNAME) + MMMM 月: フルネーム (LOCALE_SMONTHNAME) + y 年 最後の2桁 + yy 年 最後の二桁。10よりも小さければ前に0がつく。 + yyyy 年 4桁により表される + gg 時代/年号 文字列 + +例えば: + + my $v = Variant(VT_DATE, "April 1 99"); + print $v->Date(DATE_LONGDATE), "\n"; + print $v->Date("ddd',' MMM dd yy"), "\n"; + +以下のようになります: + + Thursday, April 01, 1999 + Thu, Apr 01 99 + +=item Dim() + +VT_ARRAY バリアントのための配列範囲を返します。 リストにはバリアントの SAFEARRAY の各次元の配列リファレンスが入ります。 このリファレンスはこの次元のための下限と上限が入った配列を示します。 例えば: + + my @Dim = $Var->Dim; + +すると C<@Dim> には以下のリストが入ります: C<([1,5], [0,2])>。 + +=item Get(DIM) + +通常のバリアントでは C<Get>は C<Value> メソッドとまったく同じようにバリアントの値を返します。 VT_ARRAY バリアントでは C<Get> は1つの配列要素の値を取り出します。 この場合、C<DIM> は配列インデックスのリストでなければなりません。 例えば: + + my $Val = $Var->Get(2,0); + +1 次元の VT_UI1|VT_ARRAY バリアントの特別な場合、引数のない C<Get> メソッドは Perl 文字列として文字配列を返します: + + print $String->Get, "\n"; + +=item IsNothing() + +オブジェクトが空の VT_DISPATCH バリアントかどうかをテストします。 nothing() も参照してください。 + +=item IsNullString() + +オブジェクトが空の VT_BSTR バリアントかどうかをテストします。 nullstring() も参照してください。 + +=item LastError() + +C<Win32::OLE::Variant->LastError()> メソッドを使うことは非推奨です。 +代わりに C<Win32::OLE->LastError()> クラスメソッドを使ってください。 + +=item Number([FORMAT[, LCID]]) + +このメソッドはバリアント値を書式化れた数字文字列に変換します。 FORMAT は整数定数またはハッシュ・リファレンスのどちらかにすることができます。 適切な定数は 0 と LOCALE_NOUSEROVERRIDE です。 Win32::OLE::NLS モジュールから LOCALE_NOUSEROVERRIDE の値を取得することができます: + + use Win32::OLE::NLS qw(:LOCALE); + +LOCALE_NOUSEROVERRIDE はメソッドにコントロール・パネル・アプリケーションを通してなされたかもしれない変更をすべて無視して、指定されたロケールのためのシステム・デフォルト数値書式を使うように指示します。 + +ハッシュ・リファレンスには以下のキーを入れることができます: + + NumDigits 小数の桁数 + LeadingZero 数値フィールドで前に0をつけるかどうか + Grouping 数字区切りの各グループの桁数 + DecimalSep 小数点文字列 + ThousandSep 桁区切り文字 + NegativeOrder L<Win32::OLE::NLS/LOCALE_INEGNUMBER> を参照 + +=item Put(DIM, VALUE) + +C<Put> メソッドはバリアントに新しい値を代入するために使われます。 値はバリアントの現在の型に強制されます。 例: + + my $Var = Variant(VT_I4, 42); + $Var->Put(3.1415); + +型がVT_I4なので、これはバリアントの値を C<3> に変更します。 + +VT_ARRAY 型バリアントでは、SAFEARRAY に含まれている各次元のためのインデックスが新しい値の前に指定されなければなりません: + + $Array->Put(1, 1, 2.7); + +一度の Put() メソッド呼出しを使って SAFEARRAY の*各*要素に値を代入することも可能です: + + $Array->Put([[1,2], [3,4]]); + +この場合、Put() への引数は配列リファレンスで、Perl のリストのリストの次元はSAFEARRAYの次元と厳密にあっていなければなりません。 + +1 次元の VT_Ul1 配列のためにはいくつか特別な場合があります: VALUEは数値の代わりに文字列として指定することができます。 これは選択された文字をその文字列の最初の文字に設定し、または文字列が空であれば '\0' にします: + + my $String = Variant(VT_UI1|VT_ARRAY, "ABCDE"); + $String->Put(1, "123"); + $String->Put(3, ord('Z')); + $String->Put(4, ''); + +これは C<$String> の値を C<"A1CZ\0"> に設定します。 もしインデックスが省略されると、文字列は完全に値へコピーされます。 もしVT_Ul1配列の大きさよりも長ければ、その文字列は切り捨てられます。 もし短ければ'\0'で埋められます。 + + $String->Put("String"); + +C<$String> には値 "Strin" が入ります。 + +C<Put> は Variant オブジェクトそのものを返すので、C<Put> 呼出しをつなげておこなうことができます: + + $Array->Put(0,0,$First_value)->Put(0,1,$Another_value); + +=item Time([FORMAT[, LCID]]) + +バリアントを書式化された時刻文字列に変換します。 FORMAT は以下の整数定数か書式設定文字列のどちらかにすることができます: + + LOCALE_NOUSEROVERRIDE このロケールでのシステム・デフォルト時刻書式 + TIME_NOMINUTESORSECONDS 分または秒を使わない + TIME_NOSECONDS 秒を使わない + TIME_NOTIMEMARKER 時刻マーカーを使わない + TIME_FORCE24HOURFORMAT つねに 24 時間制の時刻フォーマットを使う + +Win32::OLE::NLS モジュールから定数を利用することができます: + + use Win32::OLE::NLS qw(:LOCALE :TIME); + +以下の要素を日付書式設定文字列を構成するために使うことができます。 +文字は正確に以下で示される通りに指定されなければなりません(例えば"dd"は"DD"ではB<ありません>)。 +書式コードの間のどこにでも空白を入れることができますが、その他の、逐語的なテキストはシングル・クォートに含まれなければなりません。 + + h 時; 12時間制 + hh 時 1桁であれば前に0がつく;12時間制 + h 時; 12時間制 + hh 時 1桁であれば前に0がつく;12時間制 + m 分 + mm 分 1桁であれば前に0がつく + s 秒 + ss 秒 1桁であれば前に0がつく + t A や Pのような1字時刻マーカー文字列 + tt AMまたはPMのような複数文字時刻マーカー文字列 + +例えば: + + my $v = Variant(VT_DATE, "April 1 99 2:23 pm"); + print $v->Time, "\n"; + print $v->Time(TIME_FORCE24HOURFORMAT|TIME_NOTIMEMARKER), "\n"; + print $v->Time("hh.mm.ss tt"), "\n"; + +以下のようになります: + + 2:23:00 PM + 14:23:00 + 02.23.00 PM + +=item Type() + +C<Type> メソッドは入っているバリアントのバリアント型を返します。 + +=item Unicode() + +C<Unicode> メソッドは C<Unicode::String> オブジェクトを返します。 これはネットワーク・バイト順でのバリアントの BSTR 値が入ります。 もしバリアントが現在は VT_BSTR フォーマットでなければ、VT_BSTR へのコピーが先に作成されます。 + +=item Value() + +C<Value> メソッドはバリアントの値を Perl の値として返します。 すべての Win32::OLE メソッドの値が変換されるのと同じ方法で変換されます。 + +=back + +=head2 Overloading + +Win32::OLE::Variant パッケージは文字列と数値書式の変換がオーバーロードされています。 このため Variant オブジェクトは C<Value> メソッドを先に適用することなしに、算術と文字列操作で使うことができます。 + +=head2 Class Variables + +Win32::OLE::Variant クラスはC<$CP>, C<$LCID>, C<$Warn> といった独自のクラス変数の集合をもつようにしてきました。 Win32::OLE モジュールのバージョン 0.1003 以降では、これらの変数は削除されています。 今では Win32::OLE の設定が Win32::OLE::Variant モジュールでも使われます。 C<Win32::OLE->Option> クラス・メソッドのドキュメントをお読みください。 + + +=head2 Constants + +デフォルトで以下の定数がエクスポートされます: + + VT_EMPTY + VT_NULL + VT_I2 + VT_I4 + VT_R4 + VT_R8 + VT_CY + VT_DATE + VT_BSTR + VT_DISPATCH + VT_ERROR + VT_BOOL + VT_VARIANT + VT_UNKNOWN + VT_DECIMAL + VT_UI1 + + VT_ARRAY + VT_BYREF + +VT_DECIMAL は許可される OLE オートメーション・データ型の公式リストにはありません。 しかし Microsoft ADO でさえ、レコードセット・フィールドの値を VT_DECIMAL 形式で返しているようです。 + +=head2 Variants + +バリアント (Variant) は OLE 接続の間でデータを渡すために使われるデータ型です。 + +デフォルトの動きは各 perl スカラ変数を内部の perl 表現に合わせて OLE バリアントに変換します。 +以下の型対応が取られます: + + C type Perl type OLE type + ------ --------- -------- + int IV VT_I4 + double NV VT_R8 + char * PV VT_BSTR + void * ref to AV VT_ARRAY + ? undef VT_ERROR + ? Win32::OLE object VT_DISPATCH + +VT_BSTR が全角文字または Unicode 文字列であることに注意してください。 これはパラメータとしてバイナリ・データを渡そうとすると、データのすべてのバイトの間に 0x00 が挿入されるという問題を起こします。 C<Variant()> メソッドはこれを解決する方法を提供します。 Variant を使うことで、スクリプトの作者はそのパラメータが変換されるべき OLE バリアント型を指定することができます。 現在は以下の型がサポートされています: + + VT_UI1 unsigned char + VT_I2 signed int (2 bytes) + VT_I4 signed int (4 bytes) + VT_R4 float (4 bytes) + VT_R8 float (8 bytes) + VT_DATE OLE Date + VT_BSTR OLE String + VT_CY OLE Currency + VT_BOOL OLE Boolean + +VT_DATE と VT_CY オブジェクトが作成されると、入力パラメータは Perl 文字列型として扱われ、VT_BSTR に変換され、最後にC<VariantChangeType> OLE API 関数を使って VT_CY または VT_DATE に変換されます。 +これらがどのように使うことができるかについては、 L<Win32::OLE/EXAMPLES> を参照してください。 + +=head2 Variant arrays + +バリアントは 1 つの値を持つだけでなく、値の多次元配列ももつ事ができます(SAFEARRAY と呼ばれます)。 この場合、VT_ARRAY フラグが基本バリアント型に付与されなければなりません; 例えば整数の配列は C<VT_I4|VT_ARRAY> です。 VT_EMPTY と VT_NULL型は SAFEARRAY には不正です。 バリアントの配列を作成することも可能です: VT_VARIANT | VT_ARRAY。 この場合、配列の各要素を (VT_EMPTY, VT_NULL も含めて)異なる型にすることができます。 VT_VARIANT SAFEARRAY の要素は VT_ARRAY または VT_BYREF のどちらのフラグも設定することはできません。 + +各次元の上限、下限は個別に指定することができます。 +(Perl の配列とは違って)すべてが同じ下限をもつ必要はありません。 + +=head2 Variants by reference + +いくつかの OLE サーバーは、メソッド呼出しの中で変更できるように、リファレンスによってパラメータが渡されることを期待します。 これはメソッドに複数の値を戻すことを簡単にします。 Win32::OLE::Variant モジュールでこれの予備的なサポートがされています: + + my $x = Variant(VT_I4|VT_BYREF, 0); + my $y = Variant(VT_I4|VT_BYREF, 0); + $Corel->GetSize($x, $y); + print "Size is $x by $y\n"; + +C<GetSize> メソッド呼出しの後、C<$x> と C<$y> は対応する大きさに設定されます。 これらはまだバリアントです。 print 文では、オーバーロードによってそれらを自動的に文字列表現に変換します。 + +VT_BYREF は今や(SAFEARRAY も含めて)すべてのバリアント型でサポートされています。 +これは OLE オブジェクトをリファレンスで渡すためにも使われます: + + my $Results = $App->CreateResultsObject; + $Object->Method(Variant(VT_DISPATCH|VT_BYREF, $Results)); + +=head1 AUTHORS/COPYRIGHT + +このモジュールは Win32::OLE ディストリビューションの一部です。 + +=cut