<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title><![CDATA[Серый форум &mdash; VBS: Региональные настройки с помощью скрипта VBS]]></title>
		<link>https://forum.script-coding.com/viewtopic.php?id=10205</link>
		<atom:link href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=10205&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «VBS: Региональные настройки с помощью скрипта VBS».]]></description>
		<lastBuildDate>Sat, 22 Oct 2016 10:36:39 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: VBS: Региональные настройки с помощью скрипта VBS]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=108479#p108479</link>
			<description><![CDATA[<p>Забавно, поменял себе системный разделитель на запятую, vbscript продолжает воспринимать число с десятичной точкой, хотя при выводе и заменяет её на запятую. В VBA тоже самое. Наверное, если бы не использовал точку в качестве разделителя всё время своего общения с компьютером, уже знал бы о таком поведении(для меня не очевидном) - век живи, век учись <img src="//forum.script-coding.com/img/smilies/smile.png" width="15" height="15" />. Благодарю за разъяснение этого момента.</p><p>Правда мне это нужно в VBA для задания ширины колонок листбокса в сантиметрах - размер колонок сохранён в текстовой переменной, но часть размеров дробные. При не совпадающем с системным разделителем в этой строке, попытка присвоения свойства контролу вызывает ошибку. Можно было бы заменить сантиметры на твипы, но есть и другие ситуации когда нужно преобразовывать числовое значение из строки.</p><p>И хотя тестовые примеры подтверждают ваши слова, но мне будет спокойнее получать дробь непосредственно в коде <img src="//forum.script-coding.com/img/smilies/smile.png" width="15" height="15" />. А может всё таки использую предложенный вами вариант записи(Mid(1.1, 2, 1) - лаконично, чёрт побери, и никакие объекты не используются!), и понаблюдаю как он будет себя вести на разных локалях у пользователей.</p><p>P.S. почему не пользуюсь чтением из реестра в этом случае - даже не знаю, может быть фобия, может быть желание найти &quot;кроссплатформенный&quot; вариант решения задачи <img src="//forum.script-coding.com/img/smilies/smile.png" width="15" height="15" /></p>]]></description>
			<author><![CDATA[null@example.com (BeS Yara)]]></author>
			<pubDate>Sat, 22 Oct 2016 10:36:39 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=108479#p108479</guid>
		</item>
		<item>
			<title><![CDATA[Re: VBS: Региональные настройки с помощью скрипта VBS]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=108477#p108477</link>
			<description><![CDATA[<div class="quotebox"><cite>BeS Yara пишет:</cite><blockquote><p>Региональные настройки влияют на формат чисел в vbscript.</p></blockquote></div><p>Нет.<br />Региональные настройки могут влиять на преобразование данных в/из строк(у/и).<br />На синтаксис языка программирования и, следовательно, на запись в коде литералов чисел они не влияют:<br /></p><div class="codebox"><pre><code>MsgBox 1.1</code></pre></div><p>(что неявно подразумевает<br /></p><div class="codebox"><pre><code>MsgBox CStr(1.1)</code></pre></div><p>) — всегда правильно, а от настроек уже зависит, что увидит пользователь: «1.1» или «1,1».</p><br /><p>…можно даже сократить до<br /></p><div class="codebox"><pre><code>DecDelimiter = Mid(1.1, 2, 1)</code></pre></div><div class="quotebox"><cite>BeS Yara пишет:</cite><blockquote><p>Тогда можно было бы ограничиться только <br /></p><div class="codebox"><pre><code>
DecDelimiter = &quot;.&quot;
</code></pre></div><p>Правда это не поможет на компе где десятичным разделителем работает запятая...</p></blockquote></div><p>Аналогия была бы верна, если бы я использовал строку, а не число:<br /></p><div class="codebox"><pre><code>DecDelimiter = Mid(&quot;1.1&quot;, 2, 1)</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (wisgest)]]></author>
			<pubDate>Sat, 22 Oct 2016 09:04:57 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=108477#p108477</guid>
		</item>
		<item>
			<title><![CDATA[Re: VBS: Региональные настройки с помощью скрипта VBS]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=108472#p108472</link>
			<description><![CDATA[<p><strong>wisgest</strong><br />С пунктом 2 согласен, как раз из-за подобной редкой но возможной региональной настройки вынужден был отказаться от старого метода(мог давать ошибку если в качестве десятичного разделителя и разделителя разрядов использовались оба символа). Но это легко поправить - вместо 1/10 приводить к строке 11/10:<br /></p><div class="codebox"><pre><code>
DecDilimiter = Mid(CStr(11 / 10), 2, 1)
</code></pre></div><p>Насчёт п.1 или я не что-то не понял, или одно из двух. Региональные настройки влияют на формат чисел в vbscript. Моя идея была в том, чтобы непосредственно в локали пользователя получить дробное число, и взять разделитель из него. Если я сразу в строке указываю символ разделителя, то зачем вся конструкция? Тогда можно было бы ограничиться только <br /></p><div class="codebox"><pre><code>
DecDelimiter = &quot;.&quot;
</code></pre></div><p>Правда это не поможет на компе где десятичным разделителем работает запятая...</p>]]></description>
			<author><![CDATA[null@example.com (BeS Yara)]]></author>
			<pubDate>Sat, 22 Oct 2016 05:01:06 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=108472#p108472</guid>
		</item>
		<item>
			<title><![CDATA[Re: VBS: Региональные настройки с помощью скрипта VBS]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=108458#p108458</link>
			<description><![CDATA[<p><strong>BeS Yara</strong><br />1) Можно сразу «CStr(0.1)» вместо «CStr(1 / 10)» — региональные настройки на синтаксис VBScript не влияют.<br />2) Ответ будет неправильным, например, если в настройках задано не выводить нулевую целую часть числа, т.е. лучше<br /></p><div class="codebox"><pre><code>DecDelimiter = Mid(CStr(1.1), 2, 1)</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (wisgest)]]></author>
			<pubDate>Fri, 21 Oct 2016 18:53:32 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=108458#p108458</guid>
		</item>
		<item>
			<title><![CDATA[Re: VBS: Региональные настройки с помощью скрипта VBS]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=108451#p108451</link>
			<description><![CDATA[<p>Всегда использовал определение разделителя через отлов ошибки преобразования из строки, пока не наткнулся на забавную ситуацию с одной региональной настройкой, при которой мой метод ошибался. С реестром связываться не хотелось(хотя способ с реестром когда-то использовал), и тут в голову пришла простая идея как определить десятичный разделитель в системе без обращений к реестру:<br /></p><div class="codebox"><pre><code>
DecDilimiter = Mid(CStr(1 / 10), 2, 1)
</code></pre></div><p>Может кому-то пригодится как альтернатива <img src="//forum.script-coding.com/img/smilies/big_smile.png" width="15" height="15" />.</p>]]></description>
			<author><![CDATA[null@example.com (BeS Yara)]]></author>
			<pubDate>Fri, 21 Oct 2016 14:56:39 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=108451#p108451</guid>
		</item>
		<item>
			<title><![CDATA[Re: VBS: Региональные настройки с помощью скрипта VBS]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=88820#p88820</link>
			<description><![CDATA[<p>Спасибо. Это я и имел в виду. Я рассматривал обьект WshShell, а в нём метод чтения реестра, но какая ветвь в реестре отвечает за десятичный разделитель, я не нашёл. Спасибо, вы ответили.</p>]]></description>
			<author><![CDATA[null@example.com (Олег)]]></author>
			<pubDate>Tue, 02 Dec 2014 15:25:06 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=88820#p88820</guid>
		</item>
		<item>
			<title><![CDATA[Re: VBS: Региональные настройки с помощью скрипта VBS]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=88818#p88818</link>
			<description><![CDATA[<p>Никто. Потому как региональные настройки разделителей относятся к пользователям, а не к компьютеру.</p><p>Проверить для текущего пользователя можно, например, так:<br /></p><div class="codebox"><pre><code>WScript.Echo WScript.CreateObject(&quot;WScript.Shell&quot;).RegRead(&quot;HKCU\Control Panel\International\sDecimal&quot;)</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (alexii)]]></author>
			<pubDate>Tue, 02 Dec 2014 15:10:58 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=88818#p88818</guid>
		</item>
		<item>
			<title><![CDATA[VBS: Региональные настройки с помощью скрипта VBS]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=88817#p88817</link>
			<description><![CDATA[<p>Никто не подскажет, как с помощью скрипта VBS распознать, установлена на компе точка или запятая в качестве десятичного разделителя в числах? Спасибо.</p>]]></description>
			<author><![CDATA[null@example.com (Олег)]]></author>
			<pubDate>Tue, 02 Dec 2014 14:43:47 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=88817#p88817</guid>
		</item>
	</channel>
</rss>
