<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title><![CDATA[Серый форум &mdash; JScript: Есть ли аналог оператора СТОП?]]></title>
		<link>https://forum.script-coding.com/viewtopic.php?id=6618</link>
		<atom:link href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=6618&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «JScript: Есть ли аналог оператора СТОП?».]]></description>
		<lastBuildDate>Mon, 12 Mar 2012 04:34:14 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: JScript: Есть ли аналог оператора СТОП?]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=57742#p57742</link>
			<description><![CDATA[<p>Rumata, огромное спасибо! Я и ненадеялся на продолжение этой темы, тем более приятно видеть готовый хребет&quot; кода. Я пока что ничего не предпринимал, оставил все на той стадии в виду отложенности задачи на месяц- другой из-за ее не срочности.<br />/Программу я планирую запускать теперь уже на сервере ночью, когда его загрузка =0, а цель программы - подготавливать информацию из файлов=картинок для последующей записи этих данных кратной двд/сд/ -носителю с отслеживанием изменений, созданием баз и пр.. в автоматическом режиме и выводом инфы в лог-файл для контроля. Как то так.. готового варианта для ознакомления пока не создал./</p>]]></description>
			<author><![CDATA[null@example.com (stir)]]></author>
			<pubDate>Mon, 12 Mar 2012 04:34:14 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=57742#p57742</guid>
		</item>
		<item>
			<title><![CDATA[Re: JScript: Есть ли аналог оператора СТОП?]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=57645#p57645</link>
			<description><![CDATA[<div class="quotebox"><cite>stir пишет:</cite><blockquote><p>похоже на набор слов..</p></blockquote></div><p>перечитал Ваш пост #8. Не думаю так, далеко не набор слов. Но Вам надо пересмотреть свое отношение к программированию и стараться как можно меньше применять <em>бейсиковские манеры</em> в других языках. Продумывайте тщательнее алгоритм - начинайте с общих описаний задач, конкретизируйте шаги на каждом этапе детализации, Повторяющиеся действия оформляйте в функции. </p><div class="quotebox"><cite>stir пишет:</cite><blockquote><p>1. Ведем подсчет файлов и занимаемого места в папке Т1, Т2 и т.д. ПРичем заведомо известно, что Т1 меньше Т2 меньше Т3 и т.д.<br />2. Копируем Т1 в сетевую папку Т0 с условием, что Размер Т1 меньше свободного места Т0, если больше - конец программе с выдачей информации<br />3. Копируем Т2... + (зависит от Т1)<br />4. Копируем Т3... + (зависит от Т2)<br />и т.д.</p></blockquote></div><p>.<br /><strong>приближение 1</strong><br /></p><div class="codebox"><pre><code>копирование сетевых папок (сдвиг?)</code></pre></div><p>.<br /><strong>приближение 2</strong><br /></p><div class="codebox"><pre><code>получить список сетевых папок
скопировать каждую папку в предыдущую</code></pre></div><p>.<br /><strong>приближение 3</strong><br /></p><div class="codebox"><pre><code>получить список папок
для каждой папки скопировать если доступно место в предыдущей</code></pre></div><p>.<br /><strong>приближение 4</strong><br /></p><div class="codebox"><pre><code>получить список папок
получить размер первой папки
получить размер второй папки
если места в первой папке недостаточно - завершить программу
скопировать содержимое второй папки в первую
перейти к следующей папке</code></pre></div><p>.<br /><strong>приближение 5</strong> (псевдокод+JScript)<br /></p><div class="codebox"><pre><code>var folders = [t0, t2, ..., tn];

// получить первую папку и ее размер
var f0 = folders[0];
var s0 = f0.size;

for (var i = 1; i &lt; folders.length; i++) {
    // получить вторую папку и ее размер
    var f1 = folders[i];
    var s1 = f1.size;

    // завершить если места недостаточно
    if ( s1 &gt; s0 ) {
        WScript.Echo(&#039;недостаточно места для копирования &#039; + f1 + &#039; в &#039; + f0);
        WScript.Quit(1);
    }

    // скопировать папку f1 в f0
    f1.copyTo(f0);

    // запомнить параметры текущей папки для последующего копирования
    f0 = f1;
    s0 = s1;
}</code></pre></div><p>.<br />Естественно, что на этом шаге, программа далека от завершения: необходимы - детализация чтения папки, получение ее размера и основное действие копирования средствами выбранного языка, необходима обработка логических ошибок (например, сбой обращения к ресурсу), но уже ясно видно как будет выглядеть основной скелет программы.<br />.<br /><strong>приближение 6</strong> (псевдокод+JScript)<br /></p><div class="codebox"><pre><code>// вывести сообщение об ошибке и выйтти
function raiseError(msg)
{
    WScript.Echo(msg);
    WScript.Quit(1);
};

var folders = [t0, t2, ..., tn];

var f0;
var s0;

var e;

// получить первую папку и ее размер
try {
    f0 = folders[0];
    s0 = f0.size;
} catch (e) {
    raiseError(&#039;ошибка чтения папки &#039; + f0);
}

for (var i = 1; i &lt; folders.length; i++) {
    var f1;
    var s0;

    try {
        // получить вторую папку и ее размер
        f1 = folders[i];
        s1 = f1.size;

        // завершить если места недостаточно
        if ( s1 &gt; s0 ) {
            throw new Error(&#039;недостаточно места в &#039; + f0);
        }

        // скопировать папку f1 в f0
        f1.copyTo(f0);

    } catch (e) {
        // обработку всех ошибок сделаем централизованно
        raiseError(&#039;ошибка при копировании &#039; + f1 + &#039; в &#039; + f0 + &#039;\n&#039; + e.message);
    }

    // запомнить параметры текущей папки для последующего копирования
    f0 = f1;
    s0 = s1;
}</code></pre></div><p>.<br />Обратите внимание, что в шестом приближении программа, все еще оставаясь написанной на смеси псевдокода и JScript, уже практически готова, осталось конкретизировать шаги обращения к папкам (получение размера, определение доступности, копирование).</p>]]></description>
			<author><![CDATA[null@example.com (Rumata)]]></author>
			<pubDate>Thu, 08 Mar 2012 10:06:41 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=57645#p57645</guid>
		</item>
		<item>
			<title><![CDATA[Re: JScript: Есть ли аналог оператора СТОП?]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=57632#p57632</link>
			<description><![CDATA[<p><strong>stir</strong>, а чем Вас не устраивает оформление логических блоков кода конструкцией try-catch?</p>]]></description>
			<author><![CDATA[null@example.com (JSmаn)]]></author>
			<pubDate>Thu, 08 Mar 2012 07:52:08 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=57632#p57632</guid>
		</item>
		<item>
			<title><![CDATA[Re: JScript: Есть ли аналог оператора СТОП?]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=57585#p57585</link>
			<description><![CDATA[<p>For a web graphic designer, it is further beneficial to learn at least the basics of some programming languages like HTML, CSS and Jscript.</p>]]></description>
			<author><![CDATA[null@example.com (allenePanek)]]></author>
			<pubDate>Wed, 07 Mar 2012 05:49:01 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=57585#p57585</guid>
		</item>
		<item>
			<title><![CDATA[Re: JScript: Есть ли аналог оператора СТОП?]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=55521#p55521</link>
			<description><![CDATA[<p>Можно наверное было бы использовать совсем другие методы исполнения этой задачи и/или языки программирования, но ХТМЛ с возможностью вставки скриптов и простого запуска на ЛЮБОМ ПК мне нравится особенно. /батник не берем в учет совсем из-за малой возможности в управлении поведении программы человеком, да и красоты вывода инфы там не сделать/</p>]]></description>
			<author><![CDATA[null@example.com (stir)]]></author>
			<pubDate>Wed, 11 Jan 2012 07:17:19 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=55521#p55521</guid>
		</item>
		<item>
			<title><![CDATA[Re: JScript: Есть ли аналог оператора СТОП?]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=55520#p55520</link>
			<description><![CDATA[<p>JSman, извините меня за нескромность мою, но я малость лентяй. </p><p>При написании кода на лету (или по ходу дела - кому как) приходится ставить условия и чем больше требуется многовариантности при сокращении кода, то возникают случаи, когда просто тупо надо закончить выполнение проги и не важно где возникла именно (!) ошибка, которую я предусмотрел - в цикле, при поиске в базах и т.д.</p><p>Ну к примеру при использовании активеХ, мы обращаемся в сетевому диску и ищем там уникальную папку, а если ее нет - останавливаем исполнение проги, а т.к. она сетевая, то выполнив проверку единожды мы не гарантируем разрыв связи в локалке, а значит мы с некоторой периодичностью должны простукивать&quot; доступность этой папки. Это пример работы с одной папкой, а если прога предусматривает их несколько и проверки еще внутренние есть.. я стал уставать от вложенных подпрог-функций и кучи проверок, в итоге задумался почему бы просто не остановить прогу если в очередной раз появится КРИТИЧЕСКАЯ ошибка, которую пользователь НЕ в состоянии ПРЕОДОЛЕТЬ..<br />Итог: в общем это выглядит коряво - установить по ходу исполнения проги вложенных 40 как минимум проверок ИФ-ЕЛСЕ...вот собственно.</p><p>.. в школе я программировал когда-то на бейсике.. там все понятно с разветвлениями, если можно то создаешь подпрограмму и в любое время имеешь возможность к ней обращаться (с этим в яваскрипте нет проблемм - это функции), но вот переходы с ЛЮБОГО места проги просто невозможны (можно прервать цикл, получив к примеру код ошибки, но вытянув его из него надо провести сравнение --- иф-елсе или иное.. и это постоянно, а взаимосвязанные блоки мешают прерывать без последствий общий ход исполнения кода..)</p><p>уф.. похоже на набор слов.. но смысл вышеизложенного мне то понятен.. - я за упрощение кода и/или его адатпацию к элементной электронной логике (я радиолюбитель и логика микросхем мне известна..), а яваскрипт иногда это просто не позволяет.</p><p>Насчет задачи.. сейчас я подумал о создании бекапа на яваскрипте. Есть удаленный сервер 2008, моя машина с хп/7.&nbsp; Т.К. использую ЦМС по автогенерированию страничек сайта по созданному шаблону, где неплохо реализуется код на яваскрипте, то себя особо не утруждая взялся за дело.<br />Планирую запуск осуществлять на самом сервере для уменьшения кода, хотя ранее хотел все делать на своей машине, но из-за умопомрочительных проверок подумываю отказаться от этого. Суть вот в чем: независимо от меня батник еженочно пыхтит и создает базу имен файлов в определенной папке, которую использует ранее созданная мной прога. Но ведь надо и бекап делать иногда! Поэтому моя вторая прога будет создавать куски по 4,3 гига из копий этих файлов. Операторы с завидной периодичностью создают новые файлы, поэтому прога создает свою базу уже записанных файлов и вторую базу - объемов этих файлов. Т.к. файла от 3 мега до 50, то уникальностью будут 2 параметра - имя и размер, мне этого будет достаточно. Прога будет стартовать с нуля, использует не только текстовые базы, но и массивы из них для ускорения работы, при&nbsp; создании дисков прога учитывает заполненность предыдущего диска, автосоздает по шаблону новые имена папок, массивов, ведет лог записанных файлов и ошибок&nbsp; и т.д... вообщем все в двух словах не сказать.<br />Думаю этого достаточно для осмысления большого множества проверок и условий. База/ы/ ежедневно пополня/ю/ется...</p>]]></description>
			<author><![CDATA[null@example.com (stir)]]></author>
			<pubDate>Wed, 11 Jan 2012 07:09:52 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=55520#p55520</guid>
		</item>
		<item>
			<title><![CDATA[Re: JScript: Есть ли аналог оператора СТОП?]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=55197#p55197</link>
			<description><![CDATA[<div class="quotebox"><blockquote><p>Оператор GOTO в JS отсутствует, однако он заменен оператором continie label и&nbsp; break label</p></blockquote></div><p>Я тоже &quot;страдаю&quot; об отсутствии goto, чем он помешал не понятно, не хочешь не пользуйся (это с моей колокольни).<br />Все мои попытки использовать continie label и&nbsp; break label вне циклов привели к ошибкам. Я где то ошибаюсь? Эти конструкции можно использовать вне цикла? КАК?</p><br /><br /><p>С праздником, уважаемые! Супругу не забудьте поцеловать.</p>]]></description>
			<author><![CDATA[null@example.com (Любитель)]]></author>
			<pubDate>Sat, 31 Dec 2011 11:11:20 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=55197#p55197</guid>
		</item>
		<item>
			<title><![CDATA[Re: JScript: Есть ли аналог оператора СТОП?]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=55162#p55162</link>
			<description><![CDATA[<p><strong>stir</strong>, абсолютно не понимаю о чем идет речь. О каком операторе Stop идет речь (из какого языка программирования)? Оператор GOTO в JS отсутствует, однако он заменен оператором continie label и&nbsp; break label. Если идет речь о выходе из функции, то в JS отвечает оператор return. Если интересует выход из программы из среды WSH, то следует использовать WScript.Quit(). Если используете чистый JS из ScriptControl, то есть решение, рассмотренное в соседней теме. Также непонятно, используете ли Вы обработчик try-catch. Хотя бы код привели, чтобы мы поняли.</p>]]></description>
			<author><![CDATA[null@example.com (JSmаn)]]></author>
			<pubDate>Fri, 30 Dec 2011 08:33:32 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=55162#p55162</guid>
		</item>
		<item>
			<title><![CDATA[Re: JScript: Есть ли аналог оператора СТОП?]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=55101#p55101</link>
			<description><![CDATA[<p>Rumata. <br />WScript.Quit(); - в яваскрипте сработает, скрипт закончит работу выведя инфу (ваша строка выше этой)? просто ниразу так не делал.. Сейчас попробую..</p>]]></description>
			<author><![CDATA[null@example.com (stir)]]></author>
			<pubDate>Thu, 29 Dec 2011 07:16:58 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=55101#p55101</guid>
		</item>
		<item>
			<title><![CDATA[Re: JScript: Есть ли аналог оператора СТОП?]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=55100#p55100</link>
			<description><![CDATA[<div class="quotebox"><cite>stir пишет:</cite><blockquote><p>Есть ли выход, чтобы постоянно не мудрить</p></blockquote></div><p>Вырвал из контекста. Тем не менее... <br /></p><div class="quotebox"><cite>stir пишет:</cite><blockquote><p>Вообщем мой код сейчас сильно замусорен всякими условиями и проверками</p></blockquote></div><p>пересмотреть логику скрипта, его алгоритм, что-то еще. </p><p>Лучше сразу отметать ненужное. Например: <br /></p><div class="codebox"><pre><code>if ( проблема ) {
	WScript.Echo(&#039;что-то пошло не так&#039;);
	WScript.Quit();
}</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (Rumata)]]></author>
			<pubDate>Thu, 29 Dec 2011 07:09:58 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=55100#p55100</guid>
		</item>
		<item>
			<title><![CDATA[Re: JScript: Есть ли аналог оператора СТОП?]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=55097#p55097</link>
			<description><![CDATA[<p>сабж про wsh или про javascript как таковой ?</p>]]></description>
			<author><![CDATA[null@example.com (smaharbA)]]></author>
			<pubDate>Thu, 29 Dec 2011 06:21:16 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=55097#p55097</guid>
		</item>
		<item>
			<title><![CDATA[Re: JScript: Есть ли аналог оператора СТОП?]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=55095#p55095</link>
			<description><![CDATA[<p>Думаю, что от большого кол-ва проверок не избавитесь, а для упрощения написания разрешающего условия в начале блоков можно ввести некую глобальную пременную, как бы &quot;семафор&quot;. Т.е. в начале кода объявили ее глобальной, например, со значением &quot;1&quot;, по ходу проверок свободного места и прочего при неудовлетворительных результатах проверок давать семафору значение 0, а на входе блоков проверять лишь его значение.<br />Я как-то в качестве &quot;семафора&quot; использовал строковую глобальную переменную, в которую добавлял в разных функциях описательный текст пользователю по ошибочной ситуации, в &quot;решающих&quot; моментах делал проверку ее длины: если эта переменная пустая - работаем дальше, если в ней что-то есть - кричу об ошибке и привожу ее текст.</p>]]></description>
			<author><![CDATA[null@example.com (Rom5)]]></author>
			<pubDate>Thu, 29 Dec 2011 06:05:34 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=55095#p55095</guid>
		</item>
		<item>
			<title><![CDATA[JScript: Есть ли аналог оператора СТОП?]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=55085#p55085</link>
			<description><![CDATA[<p>Пришел к выводу, что при написании кода вначале надо проверить одно условие и если все ок, то продолжить исполнение кода, а если нет - перейти к функции СТОП и закончить работу кода, но после всего этого исполнение оставшегося кода продолжится.<br />Нужно прервать исполнение, однако в&nbsp; JScript нет такого, это можно сделать, если поставить проверку условия if-else. Если выход из программы-кода единственный, то нет проблемм, а если в оставшемся коде снова проводится проверка и снова надо закончить программу с функией СТОП (где есть вывод ошибки или чего еще в общих словах).</p><p>Оператора GOTO не предусмотрено..&nbsp; Иначе это было бы просто - переход в конец кода с выводом информации и конец исполнения программы.<br />Есть ли выход, чтобы постоянно не мудрить с проверками на одно и тоже условие?</p><p>Слабый пример вышеизложенного примерно так:</p><p>1. Ведем подсчет файлов и занимаемого места в папке Т1, Т2 и т.д. ПРичем заведомо известно, что Т1 меньше Т2 меньше Т3 и т.д.<br />2. Копируем Т1 в сетевую папку Т0 с условием, что Размер Т1 меньше свободного места Т0, если больше - конец программе с выдачей информации<br />3. Копируем Т2... + (зависит от Т1)<br />4. Копируем Т3... + (зависит от Т2)<br />и т.д.</p><p>В итоге можно сразу отмести ненужные действия, как только свободное место Т0 не стало удовлетворять условию. Скажем на п3 (Т2).<br />Особенность еще в том, что на текущую дату я написал код, состоящий из блоков - когда 1 блок входит как функция во 2, а 2 блок входит в 3-ий.. Есть одельно вынесенные функции, которые везде могут использоваться. В самом начале я не думал, что придется вводить условие проверки так часто, что потребуется аналог оператора Goto, в принципе как конец программы.</p><p>Метки - не годятся, т.к. использую блочно-вложенную структуру. Если ничего подобного нельзя сделать, то придется соединять блоки в единый код, за исключением функций. Вообщем мой код сейчас сильно замусорен всякими условиями и проверками, а можно было бы использовать просто переходы...</p>]]></description>
			<author><![CDATA[null@example.com (stir)]]></author>
			<pubDate>Thu, 29 Dec 2011 03:00:01 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=55085#p55085</guid>
		</item>
	</channel>
</rss>
