<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Серый форум &mdash; JS: автовывод размера]]></title>
	<link rel="self" href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=6308&amp;type=atom" />
	<updated>2011-10-12T02:48:57Z</updated>
	<generator>PunBB</generator>
	<id>https://forum.script-coding.com/viewtopic.php?id=6308</id>
		<entry>
			<title type="html"><![CDATA[Re: JS: автовывод размера]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=52394#p52394" />
			<content type="html"><![CDATA[<p>Большое спасибо Вам. Свой просчет понял <img src="//forum.script-coding.com/img/smilies/smile.png" width="15" height="15" /> и правильные коды получил от Вас.<br />Жаль, что я пока недорос до того уровня... некоторые конструкции еще для меня сложны, Rumata, нехватка опыта и малое время изучения сказываются, <img src="//forum.script-coding.com/img/smilies/smile.png" width="15" height="15" />.<br />т.к. используется функция, то можно отказаться от этой строки и упростить код: var r = x;<br />сразу в код внести х вместо r .<br />/как говаривал один очень известный американец при создании сайтов (кодов) - Чем меньше, тем лучше!/</p>]]></content>
			<author>
				<name><![CDATA[stir]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=26486</uri>
			</author>
			<updated>2011-10-12T02:48:57Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=52394#p52394</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: JS: автовывод размера]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=52374#p52374" />
			<content type="html"><![CDATA[<p>Не надо завязывать общеупотребительные функции на один проект. Пусть функция делает что-то одно, но делает это хорошо в заданных рамках. Вынесите все команды проверки диапазона и вывода информации за пределы функции. </p><p>Тоже писал такую функцию, но пользовался ей раза два, не более. Вот ее аналог. Не пугайтесь - она с виду такая страшная, но делает тоже самое, плюс еще пример в конце : )<br /></p><div class="codebox"><pre><code>
Number.human = function(x, d)
{
	var n = Math.abs(x);

	var r = x;
	var s = &#039;&#039;;

	var divs = arguments.callee.divs;
	for (var i = divs.length - 1; i &gt;= 0; i--) {
		if ( n &gt;= divs[i].d ) {
			r /= divs[i].d;
			s = divs[i].s;
			break;
		}
	}

	return r.toFixed(d) + s;
};

Number.human.divs = [
	{ d: 1e3,  s: &#039; K&#039; }, 
	{ d: 1e6,  s: &#039; M&#039; }, 
	{ d: 1e9,  s: &#039; G&#039; }, 
	{ d: 1e12, s: &#039; T&#039; }
];

n = 1234567890;
WScript.Echo(Number.human(n));
WScript.Echo(Number.human(n, 3));</code></pre></div>]]></content>
			<author>
				<name><![CDATA[Rumata]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=24846</uri>
			</author>
			<updated>2011-10-11T14:23:56Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=52374#p52374</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: JS: автовывод размера]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=52372#p52372" />
			<content type="html"><![CDATA[<p>У Вас всё выполняется в соответствии с алгоритмом, который Вы НАПИСАЛИ.<br />То, что Вы ХОТИТЕ правильнее пишется так:</p><div class="codebox"><pre><code>function output(raz) {
//вывод авто по текущему размеру обекта в байтах и выше по ГОСТ
if (raz&lt;0) alert (&quot;По предварительным данным произошла ошибка в программе,&quot;+ &#039;\n&#039; +&quot;размер объекта не может быть отрицательным числом: &quot;+raz);
else if ((0&lt;=raz)&amp;&amp;(raz&lt;1000)) razmer=raz+&#039; B&#039;;
else if ((1000&lt;=raz)&amp;&amp;(raz&lt;1000000)) razmer=(raz/1000)+&#039; kB&#039;;
else if ((1000000&lt;=raz)&amp;&amp;(raz&lt;1000000000)) razmer=(raz/1000000)+&#039; MB&#039;;
else if ((1000000000&lt;=raz)&amp;&amp;(raz&lt;1000000000000)) razmer=(raz/1000000000)+&#039; GB&#039;;
else razmer=(raz/1000000000000)+&#039; TB&#039;;
window.razmer=razmer;
}</code></pre></div>]]></content>
			<author>
				<name><![CDATA[Spy00000]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=27060</uri>
			</author>
			<updated>2011-10-11T10:39:28Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=52372#p52372</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: JS: автовывод размера]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=52368#p52368" />
			<content type="html"><![CDATA[<p>Похоже он исполняется только как ОДНО если - то или 1 иначе, т.е. только его чать:</p><p>if (1000000000&lt;=raz&lt;1000000000000) razmer=(raz/1000000000)+&#039; GB&#039;;<br />else razmer=(raz/1000000000000)+&#039; TB&#039;;</p><p>а все выше - просто отбрасывается..</p><p>можно конечно попробовать switch, но его конструкция в явном виде не годится...</p>]]></content>
			<author>
				<name><![CDATA[stir]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=26486</uri>
			</author>
			<updated>2011-10-11T09:31:03Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=52368#p52368</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[JS: автовывод размера]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=52367#p52367" />
			<content type="html"><![CDATA[<p>Простой код собрал в функцию для автовывода сообщения о подсчете занимаемого места файлами и не вижу своего косяка в коде, помогите - почему он выдает вместо, например, 91 мегабайт - 0,091 гигабайт??</p><div class="codebox"><pre><code>&lt;script type=&quot;text/javascript&quot;&gt;
function output(raz) {
//вывод авто по текущему размеру обекта в байтах и выше по ГОСТ
if (raz&lt;0) alert (&quot;По предварительным данным произошла ошибка в программе,&quot;+ &#039;\n&#039; +&quot;размер объекта не может быть отрицательным числом: &quot;+raz);
if (0&lt;=raz&lt;1000) razmer=raz+&#039; B&#039;;
if (1000&lt;=raz&lt;1000000) razmer=(raz/1000)+&#039; kB&#039;;
if (1000000&lt;=raz&lt;1000000000) razmer=(raz/1000000)+&#039; MB&#039;;
if (1000000000&lt;=raz&lt;1000000000000) razmer=(raz/1000000000)+&#039; GB&#039;;
else razmer=(raz/1000000000000)+&#039; TB&#039;;
window.razmer=razmer;
}
&lt;/script&gt;</code></pre></div><p>применяю в теле проги, вот часть кода HTML:<br /></p><div class="codebox"><pre><code>]&lt;script type=&quot;text/javascript&quot;&gt;
//...
//подсчет размеров файлов для 99тхт файла и
var v99=new Array();
var s99=0;
var nnn99=tx99.length;
var fso99 = new ActiveXObject(&quot;Scripting.FileSystemObject&quot;);
for (var i = 0; i &lt; nnn99; i++)
    {
    var namev99=tx99[i];
    //alert(&#039;namev99= &#039;+namev99);    
    var ts=fso99.GetFile(namev99);
    v99[i]=ts.Size;
    s99=s99+v99[i];
    }
//отобразить автоматически в кило мега или гига байтах
alert(&quot;s99 = &quot;+s99);//для контроля значение
output(s99);    
alert(&quot;кол-во файлов в массиве v99 = &quot;+nnn99+&#039;, общим объемом &#039;+razmer);
//...</code></pre></div><p>Все вроде просто..но чего-то упускаю из вида..</p>]]></content>
			<author>
				<name><![CDATA[stir]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=26486</uri>
			</author>
			<updated>2011-10-11T09:12:23Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=52367#p52367</id>
		</entry>
</feed>
