<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Серый форум &mdash; CMD/BAT: возврат значений из процедур через параметры]]></title>
	<link rel="self" href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=7876&amp;type=atom" />
	<updated>2012-12-19T06:34:07Z</updated>
	<generator>PunBB</generator>
	<id>https://forum.script-coding.com/viewtopic.php?id=7876</id>
		<entry>
			<title type="html"><![CDATA[Re: CMD/BAT: возврат значений из процедур через параметры]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=67142#p67142" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>wisgest пишет:</cite><blockquote><p>Что нибудь поправить?</p></blockquote></div><p>По-моему — нормально.</p>]]></content>
			<author>
				<name><![CDATA[alexii]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=1844</uri>
			</author>
			<updated>2012-12-19T06:34:07Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=67142#p67142</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: CMD/BAT: возврат значений из процедур через параметры]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=67140#p67140" />
			<content type="html"><![CDATA[<p>Т. к. возражений не было, <a href="http://forum.script-coding.com/viewtopic.php?pid=67139#p67139">добавил</a>.<br />Что нибудь поправить?</p><p>----------------<br /></p><div class="quotebox"><cite>wisgest пишет:</cite><blockquote><p>Если выйти за диапозон -4294967295..4294967295, то выводится сообщение об ошибке…</p></blockquote></div><p>Как я понял, ошибка возникает не в EXIT /B — после него можно указать любое целое десятичное число, оно будет лишь преобразованно к указанному диапазону (вероятно, по модулю 0x100000000). По-видимому, ошибка возникала в SET /A (я для простоты душевной использовал шестнадцатеричные значения, а т.к. после EXIT /B можно указать лишь десятичное, преобразовывал их через SET /A.)</p>]]></content>
			<author>
				<name><![CDATA[wisgest]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=3850</uri>
			</author>
			<updated>2012-12-19T05:31:07Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=67140#p67140</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: CMD/BAT: возврат значений из процедур через параметры]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=67014#p67014" />
			<content type="html"><![CDATA[<p>Насколько я могу судить через <em>%errorlevel%</em> можно возвратить 32-битное целое число со знаком, т.е. от -2147483648&nbsp; до 2147483647<br />(если указать значение между 2147483648 и 4294967295 то оно будет преобразованно к отрицательному от -2147483648 до -1,<br />а если между -4294967295 и -2147483649, то к положительному от 1 до 2147483647).<br />Если выйти за диапозон -4294967295..4294967295, то выводится сообщение об ошибке:<br /></p><div class="quotebox"><blockquote><p>Неверное число. Числа ограничены 32 битами точности.</p></blockquote></div><p>значение <em>%errorlevel%</em> не изменяется, но возврат по EXIT /B происходит.</p>]]></content>
			<author>
				<name><![CDATA[wisgest]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=3850</uri>
			</author>
			<updated>2012-12-16T15:16:55Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=67014#p67014</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: CMD/BAT: возврат значений из процедур через параметры]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=67013#p67013" />
			<content type="html"><![CDATA[<p>Извинятся не за что, всё правильно.<br />Я тоже думаю, что такой подход имеет право на жизнь.<br />Добавлять в ту тему имеют право не только модераторы, но и любые участники со статусом «разработчик».<br />Если не будет возражений или этого не сделает кто-то другой раньше, то через пару дней добавлю.<br /></p><div class="quotebox"><cite>Arigato пишет:</cite><blockquote><p>P.S. У меня есть и много других интересных идей с бат-файлами, если это кому-то нужно, буду ими делиться в этом разделе.</p></blockquote></div><p>Конечно нужно!</p>]]></content>
			<author>
				<name><![CDATA[wisgest]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=3850</uri>
			</author>
			<updated>2012-12-16T14:56:33Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=67013#p67013</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[CMD/BAT: возврат значений из процедур через параметры]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=67010#p67010" />
			<content type="html"><![CDATA[<p>Я извиняюсь за создание новой темы, но у меня нет прав писать в форуме forum.script-coding.com/viewtopic.php?pid=20814</p><p>Информация в соответствующей теме мне показалась интересной, особенно полезным был прием с возвратом значений локальных для подпрограммы переменных.</p><p>Сам я раньше использовал несколько иной способ возврата значений из функций, думаю, что он имеет право на жизнь, как третий вариант:</p><div class="codebox"><pre><code>@ echo off
set /p a=Enter a: 
call :sqr %a%
echo %a%^^2 = %errorlevel%
pause
exit /b

:sqr
:: Квадрат числа %1
setlocal
set /a result=%1*%1
endlocal &amp; exit /b %result%</code></pre></div><p>Т.е. возвращаем значение через %errorlevel%. Единственное ограничение такого способа: результат работы функции должен быть целочисленным.</p><p>Если модераторы сочтут нужным, то было бы неплохо добавить в ту тему третий способ.</p><p>P.S. У меня есть и много других интересных идей с бат-файлами, если это кому-то нужно, буду ими делиться в этом разделе.</p>]]></content>
			<author>
				<name><![CDATA[Arigato]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=29277</uri>
			</author>
			<updated>2012-12-16T14:00:46Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=67010#p67010</id>
		</entry>
</feed>
