variant.html
来自「perl教程」· HTML 代码 · 共 721 行 · 第 1/3 页
HTML
721 行
</dd>
<dd>
<p>LOCALE_NOUSEROVERRIDE tells the method to use the system default currency
format for the specified locale, disregarding any changes that might have
been made through the control panel application.</p>
</dd>
<dd>
<p>The hash reference could contain the following keys:</p>
</dd>
<dd>
<pre>
NumDigits number of fractional digits
LeadingZero whether to use leading zeroes in decimal fields
Grouping size of each group of digits to the left of the decimal
DecimalSep decimal separator string
ThousandSep thousand separator string
NegativeOrder see L<Win32::OLE::NLS/LOCALE_ICURRENCY>
PositiveOrder see L<Win32::OLE::NLS/LOCALE_INEGCURR>
CurrencySymbol currency symbol string</pre>
</dd>
<dd>
<p>For example:</p>
</dd>
<dd>
<pre>
<span class="keyword">use</span> <span class="variable">Win32::OLE::Variant</span><span class="operator">;</span>
<span class="keyword">use</span> <span class="variable">Win32::OLE::NLS</span> <span class="string">qw(:DEFAULT :LANG :SUBLANG :DATE :TIME)</span><span class="operator">;</span>
<span class="keyword">my</span> <span class="variable">$lcidGerman</span> <span class="operator">=</span> <span class="variable">MAKELCID</span><span class="operator">(</span><span class="variable">MAKELANGID</span><span class="operator">(</span><span class="variable">LANG_GERMAN</span><span class="operator">,</span> <span class="variable">SUBLANG_NEUTRAL</span><span class="operator">));</span>
<span class="keyword">my</span> <span class="variable">$v</span> <span class="operator">=</span> <span class="variable">Variant</span><span class="operator">(</span><span class="variable">VT_CY</span><span class="operator">,</span> <span class="string">"-922337203685477.5808"</span><span class="operator">);</span>
<span class="keyword">print</span> <span class="variable">$v</span><span class="operator">-></span><span class="variable">Currency</span><span class="operator">(</span><span class="operator">{</span><span class="string">CurrencySymbol</span> <span class="operator">=></span> <span class="string">"Tuits"</span><span class="operator">}</span><span class="operator">,</span> <span class="variable">$lcidGerman</span><span class="operator">),</span> <span class="string">"\n"</span><span class="operator">;</span>
</pre>
</dd>
<dd>
<p>will print:</p>
</dd>
<dd>
<pre>
-922.337.203.685.477,58 Tuits</pre>
</dd>
</li>
<dt><strong><a name="item_date">Date([FORMAT[, LCID]])</a></strong>
<dd>
<p>Converts the VARIANT into a formatted date string. FORMAT can be either
one of the following integer constants or a format string:</p>
</dd>
<dd>
<pre>
LOCALE_NOUSEROVERRIDE system default date format for this locale
DATE_SHORTDATE use the short date format (default)
DATE_LONGDATE use the long date format
DATE_YEARMONTH use the year/month format
DATE_USE_ALT_CALENDAR use the alternate calendar, if one exists
DATE_LTRREADING left-to-right reading order layout
DATE_RTLREADING right-to left reading order layout</pre>
</dd>
<dd>
<p>The constants are available from the Win32::OLE::NLS module:</p>
</dd>
<dd>
<pre>
<span class="keyword">use</span> <span class="variable">Win32::OLE::NLS</span> <span class="string">qw(:LOCALE :DATE)</span><span class="operator">;</span>
</pre>
</dd>
<dd>
<p>The following elements can be used to construct a date format string.
Characters must be specified exactly as given below (e.g. "dd" <strong>not</strong> "DD").
Spaces can be inserted anywhere between formating codes, other verbatim
text should be included in single quotes.</p>
</dd>
<dd>
<pre>
d day of month
dd day of month with leading zero for single-digit days
ddd day of week: three-letter abbreviation (LOCALE_SABBREVDAYNAME)
dddd day of week: full name (LOCALE_SDAYNAME)
M month
MM month with leading zero for single-digit months
MMM month: three-letter abbreviation (LOCALE_SABBREVMONTHNAME)
MMMM month: full name (LOCALE_SMONTHNAME)
y year as last two digits
yy year as last two digits with leading zero for years less than 10
yyyy year represented by full four digits
gg period/era string</pre>
</dd>
<dd>
<p>For example:</p>
</dd>
<dd>
<pre>
<span class="keyword">my</span> <span class="variable">$v</span> <span class="operator">=</span> <span class="variable">Variant</span><span class="operator">(</span><span class="variable">VT_DATE</span><span class="operator">,</span> <span class="string">"April 1 99"</span><span class="operator">);</span>
<span class="keyword">print</span> <span class="variable">$v</span><span class="operator">-></span><span class="variable">Date</span><span class="operator">(</span><span class="variable">DATE_LONGDATE</span><span class="operator">),</span> <span class="string">"\n"</span><span class="operator">;</span>
<span class="keyword">print</span> <span class="variable">$v</span><span class="operator">-></span><span class="variable">Date</span><span class="operator">(</span><span class="string">"ddd',' MMM dd yy"</span><span class="operator">),</span> <span class="string">"\n"</span><span class="operator">;</span>
</pre>
</dd>
<dd>
<p>will print:</p>
</dd>
<dd>
<pre>
Thursday, April 01, 1999
Thu, Apr 01 99</pre>
</dd>
</li>
<dt><strong><a name="item_dim"><code>Dim()</code></a></strong>
<dd>
<p>Returns a list of array bounds for a VT_ARRAY variant. The list contains
an array reference for each dimension of the variant's SAFEARRAY. This
reference points to an array containing the lower and upper bounds for
this dimension. For example:</p>
</dd>
<dd>
<pre>
<span class="keyword">my</span> <span class="variable">@Dim</span> <span class="operator">=</span> <span class="variable">$Var</span><span class="operator">-></span><span class="variable">Dim</span><span class="operator">;</span>
</pre>
</dd>
<dd>
<p>Now <code>@Dim</code> contains the following list: <code>([1,5], [0,2])</code>.</p>
</dd>
</li>
<dt><strong><a name="item_get"><code>Get(DIM)</code></a></strong>
<dd>
<p>For normal variants <a href="#item_get"><code>Get</code></a> returns the value of the variant, just like the
<a href="#item_value"><code>Value</code></a> method. For VT_ARRAY variants <a href="#item_get"><code>Get</code></a> retrieves the value of a single
array element. In this case <code>DIM</code> must be a list of array indices. E.g.</p>
</dd>
<dd>
<pre>
<span class="keyword">my</span> <span class="variable">$Val</span> <span class="operator">=</span> <span class="variable">$Var</span><span class="operator">-></span><span class="variable">Get</span><span class="operator">(</span><span class="number">2</span><span class="operator">,</span><span class="number">0</span><span class="operator">);</span>
</pre>
</dd>
<dd>
<p>As a special case for one dimensional VT_UI1|VT_ARRAY variants the <a href="#item_get"><code>Get</code></a>
method without arguments returns the character array as a Perl string.</p>
</dd>
<dd>
<pre>
<span class="keyword">print</span> <span class="variable">$String</span><span class="operator">-></span><span class="variable">Get</span><span class="operator">,</span> <span class="string">"\n"</span><span class="operator">;</span>
</pre>
</dd>
</li>
<dt><strong><a name="item_isnothing"><code>IsNothing()</code></a></strong>
<dd>
<p>Tests if the object is an empty VT_DISPATCH variant. See also nothing().</p>
</dd>
</li>
<dt><strong><a name="item_isnullstring"><code>IsNullString()</code></a></strong>
<dd>
<p>Tests if the object is an empty VT_BSTR variant. See also nullstring().</p>
</dd>
</li>
<dt><strong><a name="item_lasterror"><code>LastError()</code></a></strong>
<dd>
<p>The use of the <code>Win32::OLE::Variant-</code>LastError()> method is deprecated.
Please use the <code>Win32::OLE-</code>LastError()> class method instead.</p>
</dd>
</li>
<dt><strong><a name="item_number">Number([FORMAT[, LCID]])</a></strong>
<dd>
<p>This method converts the VARIANT value into a formatted number string. The
FORMAT can be either an integer constant or a hash reference. Valid constants
are 0 and LOCALE_NOUSEROVERRIDE. You get the value of LOCALE_NOUSEROVERRIDE
from the Win32::OLE::NLS module:</p>
</dd>
<dd>
<pre>
<span class="keyword">use</span> <span class="variable">Win32::OLE::NLS</span> <span class="string">qw(:LOCALE)</span><span class="operator">;</span>
</pre>
</dd>
<dd>
<p>LOCALE_NOUSEROVERRIDE tells the method to use the system default number
format for the specified locale, disregarding any changes that might have
been made through the control panel application.</p>
</dd>
<dd>
<p>The hash reference could contain the following keys:</p>
</dd>
<dd>
<pre>
NumDigits number of fractional digits
LeadingZero whether to use leading zeroes in decimal fields
Grouping size of each group of digits to the left of the decimal
DecimalSep decimal separator string
ThousandSep thousand separator string
NegativeOrder see L<Win32::OLE::NLS/LOCALE_INEGNUMBER></pre>
</dd>
</li>
<dt><strong><a name="item_put">Put(DIM, VALUE)</a></strong>
<dd>
<p>The <a href="#item_put"><code>Put</code></a> method is used to assign a new value to a variant. The value will
be coerced into the current type of the variant. E.g.:</p>
</dd>
<dd>
<pre>
<span class="keyword">my</span> <span class="variable">$Var</span> <span class="operator">=</span> <span class="variable">Variant</span><span class="operator">(</span><span class="variable">VT_I4</span><span class="operator">,</span> <span class="number">42</span><span class="operator">);</span>
<span class="variable">$Var</span><span class="operator">-></span><span class="variable">Put</span><span class="operator">(</span><span class="number">3.1415</span><span class="operator">);</span>
</pre>
</dd>
<dd>
<p>This changes the value of the variant to <code>3</code> because the type is VT_I4.</p>
</dd>
<dd>
<p>For VT_ARRAY type variants the indices for each dimension of the contained
SAFEARRAY must be specified in front of the new value:</p>
</dd>
<dd>
<pre>
<span class="variable">$Array</span><span class="operator">-></span><span class="variable">Put</span><span class="operator">(</span><span class="number">1</span><span class="operator">,</span> <span class="number">1</span><span class="operator">,</span> <span class="number">2.7</span><span class="operator">);</span>
</pre>
</dd>
<dd>
<p>It is also possible to assign values to *every* element of the SAFEARRAY at
once using a single <a href="#item_put"><code>Put()</code></a> method call:</p>
</dd>
<dd>
<pre>
<span class="variable">$Array</span><span class="operator">-></span><span class="variable">Put</span><span class="operator">(</span><span class="operator">[[</span><span class="number">1</span><span class="operator">,</span><span class="number">2</span><span class="operator">]</span><span class="operator">,</span> <span class="operator">[</span><span class="number">3</span><span class="operator">,</span><span class="number">4</span><span class="operator">]]</span><span class="operator">);</span>
</pre>
</dd>
<dd>
<p>In this case the argument to <a href="#item_put"><code>Put()</code></a> must be an array reference and the
dimensions of the Perl list-of-lists must match the dimensions of the
SAFEARRAY exactly.</p>
</dd>
<dd>
<p>The are a few special cases for one-dimensional VT_UI1 arrays: The VALUE
can be specified as a string instead of a number. This will set the selected
character to the first character of the string or to '\0' if the string was
empty:</p>
</dd>
<dd>
<pre>
<span class="keyword">my</span> <span class="variable">$String</span> <span class="operator">=</span> <span class="variable">Variant</span><span class="operator">(</span><span class="variable">VT_UI1</span><span class="operator">|</span><span class="variable">VT_ARRAY</span><span class="operator">,</span> <span class="string">"ABCDE"</span><span class="operator">);</span>
<span class="variable">$String</span><span class="operator">-></span><span class="variable">Put</span><span class="operator">(</span><span class="number">1</span><span class="operator">,</span> <span class="string">"123"</span><span class="operator">);</span>
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?