<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>http://sfsys.ru/index.php?action=history&amp;feed=atom&amp;title=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80_%D0%B8%D1%81%D0%BF%D0%BE%D0%BB%D0%BD%D0%B5%D0%BD%D0%B8%D1%8F_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%BD%D0%BE%D0%B3%D0%BE_%D0%BA%D0%BE%D0%B4%D0%B0</id>
	<title>Пример исполнения программного кода - Revision history</title>
	<link rel="self" type="application/atom+xml" href="http://sfsys.ru/index.php?action=history&amp;feed=atom&amp;title=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80_%D0%B8%D1%81%D0%BF%D0%BE%D0%BB%D0%BD%D0%B5%D0%BD%D0%B8%D1%8F_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%BD%D0%BE%D0%B3%D0%BE_%D0%BA%D0%BE%D0%B4%D0%B0"/>
	<link rel="alternate" type="text/html" href="http://sfsys.ru/index.php?title=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80_%D0%B8%D1%81%D0%BF%D0%BE%D0%BB%D0%BD%D0%B5%D0%BD%D0%B8%D1%8F_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%BD%D0%BE%D0%B3%D0%BE_%D0%BA%D0%BE%D0%B4%D0%B0&amp;action=history"/>
	<updated>2026-04-04T13:47:55Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.31.1</generator>
	<entry>
		<id>http://sfsys.ru/index.php?title=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80_%D0%B8%D1%81%D0%BF%D0%BE%D0%BB%D0%BD%D0%B5%D0%BD%D0%B8%D1%8F_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%BD%D0%BE%D0%B3%D0%BE_%D0%BA%D0%BE%D0%B4%D0%B0&amp;diff=3790&amp;oldid=prev</id>
		<title>Admin: 1 revision imported</title>
		<link rel="alternate" type="text/html" href="http://sfsys.ru/index.php?title=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80_%D0%B8%D1%81%D0%BF%D0%BE%D0%BB%D0%BD%D0%B5%D0%BD%D0%B8%D1%8F_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%BD%D0%BE%D0%B3%D0%BE_%D0%BA%D0%BE%D0%B4%D0%B0&amp;diff=3790&amp;oldid=prev"/>
		<updated>2021-03-04T14:58:39Z</updated>

		<summary type="html">&lt;p&gt;1 revision imported&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;Revision as of 14:58, 4 March 2021&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-notice&quot; lang=&quot;en&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(No difference)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
		<author><name>Admin</name></author>
		
	</entry>
	<entry>
		<id>http://sfsys.ru/index.php?title=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80_%D0%B8%D1%81%D0%BF%D0%BE%D0%BB%D0%BD%D0%B5%D0%BD%D0%B8%D1%8F_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%BD%D0%BE%D0%B3%D0%BE_%D0%BA%D0%BE%D0%B4%D0%B0&amp;diff=3789&amp;oldid=prev</id>
		<title>Admin at 16:28, 25 February 2021</title>
		<link rel="alternate" type="text/html" href="http://sfsys.ru/index.php?title=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80_%D0%B8%D1%81%D0%BF%D0%BE%D0%BB%D0%BD%D0%B5%D0%BD%D0%B8%D1%8F_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%BD%D0%BE%D0%B3%D0%BE_%D0%BA%D0%BE%D0%B4%D0%B0&amp;diff=3789&amp;oldid=prev"/>
		<updated>2021-02-25T16:28:10Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;Revision as of 16:28, 25 February 2021&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l271&quot; &gt;Line 271:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 271:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; var aTab=document.getElementById('aCaptchaTable');&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; var aTab=document.getElementById('aCaptchaTable');&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; aTab.style.visibility=&amp;quot;hidden&amp;quot;;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; aTab.style.visibility=&amp;quot;hidden&amp;quot;;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;#160; var adata=document.getElementById('aData').value;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;#160; if (adata=='') {&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;#160; &amp;#160; exit;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;#160; }&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; var src=document.URL;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; var src=document.URL;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Admin</name></author>
		
	</entry>
	<entry>
		<id>http://sfsys.ru/index.php?title=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80_%D0%B8%D1%81%D0%BF%D0%BE%D0%BB%D0%BD%D0%B5%D0%BD%D0%B8%D1%8F_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%BD%D0%BE%D0%B3%D0%BE_%D0%BA%D0%BE%D0%B4%D0%B0&amp;diff=3182&amp;oldid=prev</id>
		<title>Admin: 1 revision imported</title>
		<link rel="alternate" type="text/html" href="http://sfsys.ru/index.php?title=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80_%D0%B8%D1%81%D0%BF%D0%BE%D0%BB%D0%BD%D0%B5%D0%BD%D0%B8%D1%8F_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%BD%D0%BE%D0%B3%D0%BE_%D0%BA%D0%BE%D0%B4%D0%B0&amp;diff=3182&amp;oldid=prev"/>
		<updated>2021-02-07T06:55:29Z</updated>

		<summary type="html">&lt;p&gt;1 revision imported&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;Revision as of 06:55, 7 February 2021&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-notice&quot; lang=&quot;en&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(No difference)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
		<author><name>Admin</name></author>
		
	</entry>
	<entry>
		<id>http://sfsys.ru/index.php?title=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80_%D0%B8%D1%81%D0%BF%D0%BE%D0%BB%D0%BD%D0%B5%D0%BD%D0%B8%D1%8F_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%BD%D0%BE%D0%B3%D0%BE_%D0%BA%D0%BE%D0%B4%D0%B0&amp;diff=3181&amp;oldid=prev</id>
		<title>Admin at 06:03, 30 January 2021</title>
		<link rel="alternate" type="text/html" href="http://sfsys.ru/index.php?title=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80_%D0%B8%D1%81%D0%BF%D0%BE%D0%BB%D0%BD%D0%B5%D0%BD%D0%B8%D1%8F_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%BD%D0%BE%D0%B3%D0%BE_%D0%BA%D0%BE%D0%B4%D0%B0&amp;diff=3181&amp;oldid=prev"/>
		<updated>2021-01-30T06:03:30Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{HeadLinks|&lt;br /&gt;
* [[Main_Page|Начальная страница]]&lt;br /&gt;
* [[Онлайн демонстрации]]}}&lt;br /&gt;
Данная онлайн демонстрация возможностей функции контролируемой среды исполнения [[ExecEx]] использует консольный http сервер и позволяет исполнять произвольный код программы непосредственно из текущей веб-страницы. Консольный сервер не использует подключение к базе данных, поэтому код обращения к базе данных не сможет работать (для демонстрации работы с базой данных, скачайте [[Демо-версия|демонстрационную версию клиента программы]]). Если сервер (работающий на машине с Apache http сервером) в данный момент недоступен, демонстрация не сможет функционировать правильно и будет выдавать сообщение об ошибке. Для уменьшения количества векторов атаки на консольный сервер, функция [[ExecEx]] вызывается со следующими ограничениями (см. описание функции):&lt;br /&gt;
* '''второй аргумент''' при вызове имеет значение: &amp;lt;code&amp;gt;0b1111111111111111111&amp;lt;/code&amp;gt; (запрещены все опасные и визуальные функции, однако, работа с картинками разрешена).&lt;br /&gt;
* исполнение имеет '''ограничение по времени''', фрагмент не может исполняться дольше 5 секунд.&lt;br /&gt;
&lt;br /&gt;
Ограничений по количеству запросов к демонстрации нет, однако, встроенная защита от DOS выведет Captcha и запросит ее решение после нескольких запросов, если Captcha решена неверно несколько раз подряд, будет включена защита, которая не позволит выполнять запросы с текущего IP-адреса в течение двух часов. Описание Captcha и дополнительную информацию по тестовому http серверу ищите в статье [[Онлайн демонстрации]]. Для данного примера использован объект ''XMLHttpRequest'', работающий по технологии ''AJAX''. Во время исполнения кода браузер ожидает получения информации от консольного сервера, по мере поступления, она будет выводиться в лог в нижней части страницы. Следующие функции и события выводят информацию в лог страницы:&lt;br /&gt;
* [[Message]] и [[Writeln]] -- стандартные функции для вывода информации в лог.&lt;br /&gt;
* Переменная ''Result'' позволяет возвратить текстовое значение, которое будет выведено на странице последним, выделено размером шрифта, и отделено от остального вывода полосой.&lt;br /&gt;
** Особое значение переменной ''Result'' может быть с типом ''картинка'', в этом случае, это значение будет перекодировано в строку, а затем в ''base64'' и отослано с меткой о том, что это картинка-результат. Картинка будет выведена на странице после полосы, отделяющей результат от обычного текста. Таким образом демонстрируется возможность передачи в одном пакете данных разного типа (см. ниже примеры).&lt;br /&gt;
* При ошибках компиляции и необработанных исключениях, информация также будет выведена в лог.&lt;br /&gt;
* При превышении времени исполнения, программа прерывается и информация об ошибке будет выведена в лог.&lt;br /&gt;
&lt;br /&gt;
Путь прохождения запроса и ответа на запрос выглядит следующим образом:&lt;br /&gt;
# Java-скрипт в браузере создает URL запроса в виде &amp;lt;code&amp;gt;{{SERVERNAME}}/sfsl/?ExecuteReq=1&amp;lt;/code&amp;gt; и отправляет его на сервер с помощью объекта ''XMLHttpRequest'', в теле запроса выгружается программный код, размещенный на этой странице.&lt;br /&gt;
# Apache http сервер получает POST запрос и передает его на адрес локального консольного SFSL сервера (прокси-запрос)&lt;br /&gt;
# Локальный консольный клиент создает событие типа ''OnTCPConnection'' и передает программе TCP объект соединения с Apache http сервером&lt;br /&gt;
# Программа создает новый поток, и запускает обработку, которая будет заниматься обслуживанием соединения&lt;br /&gt;
## Обработка получает http заголовок с помощью [[IPConnection.HTTPReceiveHeader|HTTPReceiveHeader]] и находит POST запрос с помощью [[IPConnection.HTTPGetOperation|HTTPGetOperation]], после чего также получает тело запроса ([[IPConnection.HTTPReceiveBody|HTTPReceiveBody]]) с кодированном в UTF-8 кодом данной страницы.&lt;br /&gt;
## Обработка создает обратный пакет, не заполняя поле ''Content-Length'' (так как информация будет передаваться по мере поступления и ее размер заранее неизвестен) и отправляет его с помощью [[IPConnection.HTTPSend|HTTPSend]], не разрывая текущего соединения.&lt;br /&gt;
## Обработка выполняет функцию [[ExecEx]] с заданной процедурой вывода информации.&lt;br /&gt;
### Процедура вывода информации, при получении новой строки, переводит ее в формат html и отсылает по активному соединению добавляя метку конца отрезка текста в размере 32-х символов с кодами ''0'', такое количество добавочных символов может быть необходимо при работе по стандарту https, так как передача информации производится блоками, не равными одному байту.&lt;br /&gt;
### Apache http сервер получает информацию и отправляет ее, в свою очередь, в ожидающий браузер.&lt;br /&gt;
### Браузер получает очередной блок информации, разделяет ее на отрезки с помощью меток их концов, и выводит ее в лог отдельными параграфами.&lt;br /&gt;
## По окончании исполнения функции, обработка разрывает связь, работа окончена.&lt;br /&gt;
&lt;br /&gt;
=== Примеры кода ===&lt;br /&gt;
Ниже даны несколько примеров кода, который можно попробовать для исполнения на странице. Однако, посетители сайта могут использовать практически любые примеры кода из данной документации. Нужно только понимать, что консольный сервер не подключен к базе данных, поэтому, не будет возможности работать с функциями, связанными с базой данных. Кроме того, большое количество опасных функций, как уже говорилось выше, запрещены к использованию, чтобы уменьшить вероятность злоупотреблений.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
//Простейший пример, показывающий работу с переменной результата Result и выводом информации&lt;br /&gt;
&lt;br /&gt;
//Изменяем переменную результата&lt;br /&gt;
Result:=&amp;quot;Hello, World!&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
//Выводим произвольную информацию. Заметьте, эта информация будет выведена в лог до текста результата!&lt;br /&gt;
Message(&amp;quot;Вывод информации с помощью функции Message&amp;quot;);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
//Данный пример показывает, как при превышении времени исполнения, исполнение будет прервано и в лог страницы будет введено сообщение об ошибке&lt;br /&gt;
//Пример также демонстрирует разнообразную окраску лога с помощью функции Message&lt;br /&gt;
&lt;br /&gt;
//Выводим сообщения с разными стилями&lt;br /&gt;
Message(&amp;quot;Простой текст&amp;quot;);&lt;br /&gt;
Message(&amp;quot;Голубой (нейтральный) текст&amp;quot;,&amp;quot;.&amp;quot;);&lt;br /&gt;
Message(&amp;quot;Зеленый (положительный) текст&amp;quot;,&amp;quot;i&amp;quot;);&lt;br /&gt;
Message(&amp;quot;Текст об ошибке&amp;quot;,&amp;quot;!&amp;quot;);&lt;br /&gt;
Message(&amp;quot;Текст о серьезной ошибке&amp;quot;,&amp;quot;!!&amp;quot;);&lt;br /&gt;
Message(&amp;quot;Текст о критической ошибке&amp;quot;,&amp;quot;!!!&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
//Ниже дается цикл, который будет исполняться не менее 10 секунд, однако, время исполнения ограничено пятью&lt;br /&gt;
//  данный цикл никогда не будет завершен.&lt;br /&gt;
For i:=1 To 100 Do&lt;br /&gt;
  Message(&amp;quot;Цикл, значение i:=&amp;quot;+i);&lt;br /&gt;
  Sleep(100);&lt;br /&gt;
EndDo;&lt;br /&gt;
//Данное сообщение не будет выедено&lt;br /&gt;
Message(&amp;quot;Цикл окончил работу!&amp;quot;);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
//Данный пример взят со страницы описания функции DecToBase&lt;br /&gt;
//Будет выведено &amp;quot;11101110001010001111010101&amp;quot;&lt;br /&gt;
Message(DecToBase(62432213,2));&lt;br /&gt;
&lt;br /&gt;
//Будет выведено &amp;quot;186A0&amp;quot;&lt;br /&gt;
Message(DecToBase(100000,16));&lt;br /&gt;
&lt;br /&gt;
//Будет выведено &amp;quot;FFFFFFFFFFFFFFFF&amp;quot; (отрицательное основание используется для представления беззнаковых чисел, в числе -1 все 64 бита установлены)&lt;br /&gt;
Message(DecToBase(-1,-16));&lt;br /&gt;
&lt;br /&gt;
//Будет выведено &amp;quot;-BCPNB&amp;quot;&lt;br /&gt;
Message(DecToBase(-77777,16,&amp;quot;ABCDEFGHIJKLMNOP&amp;quot;));&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
//Данный пример взят со страницы описания функции Picture.Rectangle&lt;br /&gt;
//Он позволяет создать и присвоить переменной-результату картинку, которая будет выведена на эту страницу&lt;br /&gt;
aPic:=Picture.Create(400,400);&lt;br /&gt;
aPic.Rectangle(1,1,200,200,,_CLR_RED);&lt;br /&gt;
aPic.Rectangle(201,1,400,200,,_CLR_BLUE);&lt;br /&gt;
aPic.Rectangle(1,201,200,400,,_CLR_GREEN);&lt;br /&gt;
aPic.Rectangle(201,201,400,400,,_CLR_YELLOW);&lt;br /&gt;
aPic.Text(6,6,&amp;quot;1&amp;quot;,&amp;quot;Tahoma|40|B|&amp;quot;+DecToBase(_CLR_YELLOW,16),,,,3);&lt;br /&gt;
aPic.Text(206,6,&amp;quot;2&amp;quot;,&amp;quot;Tahoma|40|B|&amp;quot;+DecToBase(_CLR_GREEN,16),,,,3);&lt;br /&gt;
aPic.Text(6,206,&amp;quot;3&amp;quot;,&amp;quot;Tahoma|40|B|&amp;quot;+DecToBase(_CLR_BLUE,16),,,,3);&lt;br /&gt;
aPic.Text(206,206,&amp;quot;4&amp;quot;,&amp;quot;Tahoma|40|B|&amp;quot;+DecToBase(_CLR_RED,16),,,,3);&lt;br /&gt;
aPic.Rectangle(5,5,aPic.Width-5,aPic.Height-5,_CLR_RED);&lt;br /&gt;
Result:=aPic;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;script type=&amp;quot;text/javascript&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;form&amp;gt;&lt;br /&gt;
&amp;lt;table border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;5&amp;quot; style=&amp;quot;width:100%&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td align=&amp;quot;left&amp;quot;&amp;gt;&amp;lt;b&amp;gt;Программа для исполнения:&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;textarea id=&amp;quot;aData&amp;quot; cols=&amp;quot;100&amp;quot; rows=&amp;quot;30&amp;quot; style=&amp;quot;max-width:100%;min-width:400px;min-height:100px;&amp;quot;&amp;gt;&amp;lt;/textarea&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td align=&amp;quot;left&amp;quot;&amp;gt;&amp;lt;input type=&amp;quot;button&amp;quot; id=&amp;quot;aExecBtn&amp;quot; value=&amp;quot;Исполнить&amp;quot; /&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&amp;lt;table border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;width:100%&amp;quot; id=&amp;quot;aResultTable&amp;quot; align=&amp;quot;left&amp;quot; valign=&amp;quot;top&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td align=&amp;quot;left&amp;quot; valign=&amp;quot;top&amp;quot;&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;table border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;5&amp;quot; id=&amp;quot;aCaptchaTable&amp;quot; style=&amp;quot;visibility:hidden&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td align=&amp;quot;left&amp;quot;&amp;gt;&amp;lt;b&amp;gt;Введите слово с картинки:&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;input type=&amp;quot;text&amp;quot; id=&amp;quot;aCaptcha&amp;quot; value=&amp;quot;&amp;quot; /&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td align=&amp;quot;left&amp;quot;&amp;gt;&amp;lt;input type=&amp;quot;button&amp;quot; id=&amp;quot;aCapBtn&amp;quot; value=&amp;quot;Принять&amp;quot; /&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&amp;lt;/form&amp;gt;&lt;br /&gt;
&amp;lt;script type=&amp;quot;text/javascript&amp;quot;&amp;gt;&lt;br /&gt;
var key=&amp;quot;&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
function decoderesult(astr) {&lt;br /&gt;
  if (astr.indexOf(String.fromCharCode(1))==0) {&lt;br /&gt;
    //Getting the result&lt;br /&gt;
    return '&amp;lt;hr&amp;gt;Переменная результата: &amp;lt;big&amp;gt;'+astr.slice(1)+'&amp;lt;/big&amp;gt;';&lt;br /&gt;
  } else if (astr.indexOf(String.fromCharCode(2))==0) {&lt;br /&gt;
    //Getting the result as a picture&lt;br /&gt;
    astr=astr.slice(1);&lt;br /&gt;
&lt;br /&gt;
    var aresult=document.createElement('div');&lt;br /&gt;
    aresult.innerHTML='&amp;lt;hr&amp;gt;';&lt;br /&gt;
    var cell=document.getElementById('aResultTable').rows[0].cells[0];&lt;br /&gt;
    cell.appendChild(aresult);&lt;br /&gt;
&lt;br /&gt;
    var img=document.createElement('img');&lt;br /&gt;
    img.src='data:image/png;base64,'+astr;&lt;br /&gt;
    img.id='aPicture';&lt;br /&gt;
    var cell=document.getElementById('aResultTable').rows[0].cells[0];&lt;br /&gt;
    cell.appendChild(img);&lt;br /&gt;
    return '';&lt;br /&gt;
  } else {&lt;br /&gt;
    return astr;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function addcaptcha(xcpt) {&lt;br /&gt;
  var cell=document.getElementById('aResultTable').rows[0].cells[0];&lt;br /&gt;
  cell.innerHTML='';&lt;br /&gt;
&lt;br /&gt;
  var atext=xcpt.responseText;&lt;br /&gt;
  var one=String.fromCharCode(1);&lt;br /&gt;
  pos=atext.indexOf(one);&lt;br /&gt;
  key=atext.slice(0,pos);&lt;br /&gt;
  var apic=atext.slice(pos+1);&lt;br /&gt;
&lt;br /&gt;
  var img=document.createElement('img');&lt;br /&gt;
  img.src='data:image/png;base64,'+apic;&lt;br /&gt;
  img.id='aPicture';&lt;br /&gt;
  var cell=document.getElementById('aResultTable').rows[0].cells[0];&lt;br /&gt;
  cell.appendChild(img);&lt;br /&gt;
&lt;br /&gt;
  document.getElementById('aCaptcha').value='';&lt;br /&gt;
  var aTab=document.getElementById('aCaptchaTable');&lt;br /&gt;
  aTab.style.visibility=&amp;quot;visible&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function dothework() {&lt;br /&gt;
  var cell=document.getElementById('aResultTable').rows[0].cells[0];&lt;br /&gt;
  cell.innerHTML='';&lt;br /&gt;
  var aTab=document.getElementById('aCaptchaTable');&lt;br /&gt;
  aTab.style.visibility=&amp;quot;hidden&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
  var src=document.URL;&lt;br /&gt;
  var pos=src.indexOf('//');&lt;br /&gt;
  var src2=src.slice(0,pos+2);&lt;br /&gt;
  src=src.slice(pos+2);&lt;br /&gt;
  pos=src.indexOf('/');&lt;br /&gt;
  src=src2+src.slice(0,pos)+'/sfsl?ExecuteReq=1';&lt;br /&gt;
  var adata=document.getElementById('aData').value;&lt;br /&gt;
  var alen=0;&lt;br /&gt;
  var skipzeros=0;&lt;br /&gt;
&lt;br /&gt;
  var xhttp=new XMLHttpRequest();&lt;br /&gt;
  xhttp.onreadystatechange=function() {&lt;br /&gt;
    if (this.status==403) {&lt;br /&gt;
      if (this.readyState==4) {&lt;br /&gt;
        addcaptcha(this);&lt;br /&gt;
      }&lt;br /&gt;
    } else if (this.readyState&amp;gt;2) {&lt;br /&gt;
      var atext=this.responseText;&lt;br /&gt;
      atext=atext.slice(alen);&lt;br /&gt;
&lt;br /&gt;
      //skipping zeros from the previous batch&lt;br /&gt;
      if (skipzeros==1) {&lt;br /&gt;
        ipos=0;&lt;br /&gt;
        while (ipos&amp;lt;atext.length) {&lt;br /&gt;
          if (atext.charAt(ipos)==zero) {&lt;br /&gt;
            ipos=ipos+1;&lt;br /&gt;
          } else {&lt;br /&gt;
            break;&lt;br /&gt;
          }&lt;br /&gt;
        }&lt;br /&gt;
        alen=alen+ipos;&lt;br /&gt;
        atext=atext.slice(ipos);&lt;br /&gt;
        skipzeros=0;&lt;br /&gt;
        if (ipos==atext.length) {&lt;br /&gt;
          skipzeros=1;&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
&lt;br /&gt;
      var atext2='';&lt;br /&gt;
      var zero=String.fromCharCode(0);&lt;br /&gt;
      while (atext.indexOf(zero)&amp;gt;=0) {&lt;br /&gt;
        var ipos=atext.indexOf(zero);&lt;br /&gt;
        ipos=ipos+1;&lt;br /&gt;
        atext2=atext2+'&amp;lt;p&amp;gt;'+decoderesult(atext.slice(0,ipos))+'&amp;lt;/p&amp;gt;';&lt;br /&gt;
        //skipping all attached zeros&lt;br /&gt;
        while (ipos&amp;lt;atext.length) {&lt;br /&gt;
          if (atext.charAt(ipos)==zero) {&lt;br /&gt;
            ipos=ipos+1;&lt;br /&gt;
          } else {&lt;br /&gt;
            break;&lt;br /&gt;
          }&lt;br /&gt;
        }&lt;br /&gt;
        skipzeros=0;&lt;br /&gt;
        if (ipos==atext.length) {&lt;br /&gt;
          skipzeros=1;&lt;br /&gt;
        }&lt;br /&gt;
        alen=alen+ipos;&lt;br /&gt;
        atext=atext.slice(ipos);&lt;br /&gt;
      }&lt;br /&gt;
&lt;br /&gt;
      //end of connection&lt;br /&gt;
      if (this.readyState==4) {&lt;br /&gt;
        if (atext.length&amp;gt;0) {&lt;br /&gt;
          atext2=atext2+'&amp;lt;p&amp;gt;'+decoderesult(atext)+'&amp;lt;/p&amp;gt;';&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
      &lt;br /&gt;
      var aresult=document.createElement('div');&lt;br /&gt;
      aresult.innerHTML=atext2;&lt;br /&gt;
      var cell=document.getElementById('aResultTable').rows[0].cells[0];&lt;br /&gt;
      cell.appendChild(aresult);&lt;br /&gt;
    }&lt;br /&gt;
  };&lt;br /&gt;
  xhttp.open(&amp;quot;POST&amp;quot;,src,true);&lt;br /&gt;
  xhttp.send(adata); &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
document.getElementById('aCapBtn').onclick = function() {&lt;br /&gt;
  var aval=document.getElementById('aCaptcha').value;&lt;br /&gt;
  var src=document.URL;&lt;br /&gt;
  var pos=src.indexOf('//');&lt;br /&gt;
  var src2=src.slice(0,pos+2);&lt;br /&gt;
  src=src.slice(pos+2);&lt;br /&gt;
  pos=src.indexOf('/');&lt;br /&gt;
  src=src2+src.slice(0,pos)+'/sfsl?CaptchaSolve&amp;amp;Key='+key+'&amp;amp;Answer='+btoa(aval);&lt;br /&gt;
  var xcpt2=new XMLHttpRequest();&lt;br /&gt;
  xcpt2.onreadystatechange=function() {&lt;br /&gt;
    if (this.readyState==4) {&lt;br /&gt;
      if (this.status==200) {&lt;br /&gt;
        dothework();&lt;br /&gt;
      } else if (this.status==403) {&lt;br /&gt;
        addcaptcha(this);&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  xcpt2.open(&amp;quot;GET&amp;quot;,src,true);&lt;br /&gt;
  xcpt2.send();  &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
document.getElementById('aExecBtn').onclick = function() {&lt;br /&gt;
  var cell=document.getElementById('aResultTable').rows[0].cells[0];&lt;br /&gt;
  cell.innerHTML='';&lt;br /&gt;
  var aTab=document.getElementById('aCaptchaTable');&lt;br /&gt;
  aTab.style.visibility=&amp;quot;hidden&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
  var src=document.URL;&lt;br /&gt;
  var pos=src.indexOf('//');&lt;br /&gt;
  var src2=src.slice(0,pos+2);&lt;br /&gt;
  src=src.slice(pos+2);&lt;br /&gt;
  pos=src.indexOf('/');&lt;br /&gt;
  src=src2+src.slice(0,pos)+'/sfsl?CaptchaReq';&lt;br /&gt;
&lt;br /&gt;
  var xcpt=new XMLHttpRequest();&lt;br /&gt;
  xcpt.onreadystatechange=function() {&lt;br /&gt;
    if (this.readyState==4) {&lt;br /&gt;
      if (this.status==200) {&lt;br /&gt;
        dothework();&lt;br /&gt;
      } else if (this.status==403) {&lt;br /&gt;
        addcaptcha(this);&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  xcpt.open(&amp;quot;GET&amp;quot;,src,true);&lt;br /&gt;
  xcpt.send();&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
		
	</entry>
</feed>