<?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=StreamDecompress</id>
	<title>StreamDecompress - Revision history</title>
	<link rel="self" type="application/atom+xml" href="http://sfsys.ru/index.php?action=history&amp;feed=atom&amp;title=StreamDecompress"/>
	<link rel="alternate" type="text/html" href="http://sfsys.ru/index.php?title=StreamDecompress&amp;action=history"/>
	<updated>2026-04-04T21:20:57Z</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=StreamDecompress&amp;diff=4683&amp;oldid=prev</id>
		<title>Admin: 1 revision imported</title>
		<link rel="alternate" type="text/html" href="http://sfsys.ru/index.php?title=StreamDecompress&amp;diff=4683&amp;oldid=prev"/>
		<updated>2023-11-27T06:43:05Z</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:43, 27 November 2023&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=StreamDecompress&amp;diff=4682&amp;oldid=prev</id>
		<title>1&gt;Admin at 07:43, 9 November 2023</title>
		<link rel="alternate" type="text/html" href="http://sfsys.ru/index.php?title=StreamDecompress&amp;diff=4682&amp;oldid=prev"/>
		<updated>2023-11-09T07:43:04Z</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 07:43, 9 November 2023&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-l22&quot; &gt;Line 22:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 22:&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;lt;code&amp;gt;''&amp;lt;Данные для распаковки (STRING,BUFFER,TEXT)&amp;gt;''&amp;lt;/code&amp;gt; - Функция поддерживает получение информации из строк или буферов. Строки должны иметь формат ANSI, иначе они будут перекодированы в него, что может стать причиной порчи данных.&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;lt;code&amp;gt;''&amp;lt;Данные для распаковки (STRING,BUFFER,TEXT)&amp;gt;''&amp;lt;/code&amp;gt; - Функция поддерживает получение информации из строк или буферов. Строки должны иметь формат ANSI, иначе они будут перекодированы в него, что может стать причиной порчи данных.&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;lt;code&amp;gt;''&amp;lt;Алгоритм (STRING)&amp;gt;''&amp;lt;/code&amp;gt; - {{Optional}} Строка, задающая используемый алгоритм. Поддерживаются следующие алгоритмы:&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;lt;code&amp;gt;''&amp;lt;Алгоритм (STRING)&amp;gt;''&amp;lt;/code&amp;gt; - {{Optional}} Строка, задающая используемый алгоритм. Поддерживаются следующие алгоритмы:&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&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: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;** '''ZLIB''' (по умолчанию): Распаковка будет происходить методом Inflate для данных, ранее упакованных Zlib. При использовании этого метода&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;, &lt;/del&gt;не требуется указывать полный размер упакованного файла до начала распаковки в аргументе &amp;lt;Словарь распаковки&amp;gt;.&lt;/div&gt;&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;** '''ZLIB''' (по умолчанию): Распаковка будет происходить методом Inflate для данных, ранее упакованных Zlib. При использовании этого метода не требуется указывать полный размер упакованного файла до начала распаковки в аргументе &amp;lt;Словарь распаковки&amp;gt;.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&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: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;** '''GZIP''' или '''GZ''': Распаковка будет происходить методом Inflate для данных, ранее упакованных Gzip. При использовании этого метода&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;, &lt;/del&gt;'''требуется''' указывать полный размер упакованного файла до начала распаковки в аргументе &amp;lt;Словарь распаковки&amp;gt; (см. пример).&lt;/div&gt;&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;** '''GZIP''' или '''GZ''': Распаковка будет происходить методом Inflate для данных, ранее упакованных Gzip. При использовании этого метода '''требуется''' указывать полный размер упакованного файла до начала распаковки в аргументе &amp;lt;Словарь распаковки&amp;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;div&gt;* &amp;lt;code&amp;gt;''&amp;lt;Завершающий блок (INT)&amp;gt;''&amp;lt;/code&amp;gt; - {{Optional}} Указывает на то, что это последний блок в серии блоков для распаковки. При распаковке большого блока частями важно, чтобы вызов с аргументом равным ''1'' был последним и единственным и больше вызовов с тем же самым словарем не производилось. &amp;#160;&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;lt;code&amp;gt;''&amp;lt;Завершающий блок (INT)&amp;gt;''&amp;lt;/code&amp;gt; - {{Optional}} Указывает на то, что это последний блок в серии блоков для распаковки. При распаковке большого блока частями важно, чтобы вызов с аргументом равным ''1'' был последним и единственным и больше вызовов с тем же самым словарем не производилось. &amp;#160;&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;lt;code&amp;gt;''&amp;lt;Словарь упаковки или общий размер упакованного блока&amp;gt;''&amp;lt;/code&amp;gt; - {{Optional}} {{ByRef}} При распаковке большого блока частями необходимо передать в этот аргумент переменную, которая в начале упаковки будет равна размеру упакованного файла (для метода Gzip) или нулю (для метода Zlib). Эта переменная будет хранить промежуточное состояние распаковки (чаще всего буфер). После выполнения последней операции распаковки (''Завершающий блок'' равен ''1''), внутренние ресурсы, требуемые на распаковку, освобождаются, и переменная будет хранить неопределенное значение (чаще всего буфер с бесполезной информацией) до того, как она будет удалена из системы.&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;lt;code&amp;gt;''&amp;lt;Словарь упаковки или общий размер упакованного блока&amp;gt;''&amp;lt;/code&amp;gt; - {{Optional}} {{ByRef}} При распаковке большого блока частями необходимо передать в этот аргумент переменную, которая в начале упаковки будет равна размеру упакованного файла (для метода Gzip) или нулю (для метода Zlib). Эта переменная будет хранить промежуточное состояние распаковки (чаще всего буфер). После выполнения последней операции распаковки (''Завершающий блок'' равен ''1''), внутренние ресурсы, требуемые на распаковку, освобождаются, и переменная будет хранить неопределенное значение (чаще всего буфер с бесполезной информацией) до того, как она будет удалена из системы.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>1&gt;Admin</name></author>
		
	</entry>
	<entry>
		<id>http://sfsys.ru/index.php?title=StreamDecompress&amp;diff=4485&amp;oldid=prev</id>
		<title>Admin: 1 revision imported</title>
		<link rel="alternate" type="text/html" href="http://sfsys.ru/index.php?title=StreamDecompress&amp;diff=4485&amp;oldid=prev"/>
		<updated>2022-11-18T09:38:37Z</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 09:38, 18 November 2022&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=StreamDecompress&amp;diff=4484&amp;oldid=prev</id>
		<title>1&gt;Admin: /* Примеры */</title>
		<link rel="alternate" type="text/html" href="http://sfsys.ru/index.php?title=StreamDecompress&amp;diff=4484&amp;oldid=prev"/>
		<updated>2022-10-25T12:25:03Z</updated>

		<summary type="html">&lt;p&gt;‎&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Примеры&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{infobox function&lt;br /&gt;
|name=StreamCompress&lt;br /&gt;
|object=[[Функции общего назначения]]&lt;br /&gt;
|caption=Функции архивации&lt;br /&gt;
|type=1&lt;br /&gt;
|status=1&lt;br /&gt;
|db=0&lt;br /&gt;
|exception=Невозможно превратить в строку, число, неверный аргумент, внешняя ошибка&lt;br /&gt;
|visual=0}}&lt;br /&gt;
{{HeadLinks|&lt;br /&gt;
* [[Main_Page|Начальная страница]]&lt;br /&gt;
* [[Общее_описание_языка|Общее описание]]&lt;br /&gt;
* [[Объекты]]&lt;br /&gt;
* [[Функции общего назначения]]}}&lt;br /&gt;
Функция производит распаковку блока данных по заданному алгоритму. Для последовательной распаковки частей одного большого блока данных, функцию необходимо вызвать несколько раз с каждой частью блока данных. При работе с упаковкой и особенно с распаковкой данных, при некорректных аргументах функции можно получить порчу памяти, поэтому, нужно быть внимательным при написании программ и всегда их проверять.&lt;br /&gt;
&lt;br /&gt;
== Синтаксис ==&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
'''StreamDecompress'''(''&amp;lt;Данные для распаковки (STRING,BUFFER)&amp;gt;''{{Optional|,&amp;lt;Алгоритм (STRING)&amp;gt;{{Default|{{Eq}}&amp;quot;ZLIB&amp;quot;}},&amp;lt;Завершающий блок (INT)&amp;gt;{{Default|{{Eq}}1}}{{ByRef|,&amp;lt;Словарь распаковки или общий размер упакованного блока (INT,?)&amp;gt;}}}}):''&amp;lt;Результат распаковки (STRING,BUFFER)&amp;gt;''&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
==== Аргументы ====&lt;br /&gt;
* &amp;lt;code&amp;gt;''&amp;lt;Данные для распаковки (STRING,BUFFER,TEXT)&amp;gt;''&amp;lt;/code&amp;gt; - Функция поддерживает получение информации из строк или буферов. Строки должны иметь формат ANSI, иначе они будут перекодированы в него, что может стать причиной порчи данных.&lt;br /&gt;
* &amp;lt;code&amp;gt;''&amp;lt;Алгоритм (STRING)&amp;gt;''&amp;lt;/code&amp;gt; - {{Optional}} Строка, задающая используемый алгоритм. Поддерживаются следующие алгоритмы:&lt;br /&gt;
** '''ZLIB''' (по умолчанию): Распаковка будет происходить методом Inflate для данных, ранее упакованных Zlib. При использовании этого метода, не требуется указывать полный размер упакованного файла до начала распаковки в аргументе &amp;lt;Словарь распаковки&amp;gt;.&lt;br /&gt;
** '''GZIP''' или '''GZ''': Распаковка будет происходить методом Inflate для данных, ранее упакованных Gzip. При использовании этого метода, '''требуется''' указывать полный размер упакованного файла до начала распаковки в аргументе &amp;lt;Словарь распаковки&amp;gt; (см. пример).&lt;br /&gt;
* &amp;lt;code&amp;gt;''&amp;lt;Завершающий блок (INT)&amp;gt;''&amp;lt;/code&amp;gt; - {{Optional}} Указывает на то, что это последний блок в серии блоков для распаковки. При распаковке большого блока частями важно, чтобы вызов с аргументом равным ''1'' был последним и единственным и больше вызовов с тем же самым словарем не производилось. &lt;br /&gt;
* &amp;lt;code&amp;gt;''&amp;lt;Словарь упаковки или общий размер упакованного блока&amp;gt;''&amp;lt;/code&amp;gt; - {{Optional}} {{ByRef}} При распаковке большого блока частями необходимо передать в этот аргумент переменную, которая в начале упаковки будет равна размеру упакованного файла (для метода Gzip) или нулю (для метода Zlib). Эта переменная будет хранить промежуточное состояние распаковки (чаще всего буфер). После выполнения последней операции распаковки (''Завершающий блок'' равен ''1''), внутренние ресурсы, требуемые на распаковку, освобождаются, и переменная будет хранить неопределенное значение (чаще всего буфер с бесполезной информацией) до того, как она будет удалена из системы.&lt;br /&gt;
&lt;br /&gt;
==== Возвращаемое значение ====&lt;br /&gt;
В зависимости от аргумента &amp;lt;Данные для распаковки&amp;gt;, функция возвращает:&lt;br /&gt;
* &amp;lt;Данные для распаковки&amp;gt; являются строкой: результат распаковки переменного блока данных в виде строки ANSI (поэтому предпочтительно упаковывать строки UTF-16, предварительно перекодировав их в UTF-8)&lt;br /&gt;
* &amp;lt;Данные для распаковки&amp;gt; являются буфером: результат распаковки переменного блока данных в виде буфера.&lt;br /&gt;
&lt;br /&gt;
== Примеры ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
//Загрузим файл в строку&lt;br /&gt;
сФайл:=FileToString(&amp;quot;C:\ТестовыйФайл.txt&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
//Упакуем строку сФайл с помощью алгоритма GZip частями по 1024 байта&lt;br /&gt;
РазмерБлока:=1024;&lt;br /&gt;
Словарь:=0;&lt;br /&gt;
сРезультат:=&amp;quot;&amp;quot;;&lt;br /&gt;
j:=0;&lt;br /&gt;
For i:=1 To Length(сФайл) div РазмерБлока Do&lt;br /&gt;
  j:=j+РазмерБлока;&lt;br /&gt;
  сРезультат:=сРезультат+StreamCompress(Mid(сФайл,(i-1)*РазмерБлока+1,РазмерБлока),&amp;quot;GZ&amp;quot;,6,0,Словарь);&lt;br /&gt;
EndDo;&lt;br /&gt;
//Упакуем последний блок меньше 1024 байт (возможен пустой блок)&lt;br /&gt;
сРезультат:=сРезультат+StreamCompress(Right(сФайл,Length(сФайл)-j),&amp;quot;GZ&amp;quot;,6,1,Словарь);&lt;br /&gt;
&lt;br /&gt;
//Сохраним упакованный блок в виде файла&lt;br /&gt;
StringToFile(сРезультат,&amp;quot;C:\ТестовыйФайл.gz&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
//Распакуем блок сРезультат с помощью алгоритма GZip частями по 1024 байта&lt;br /&gt;
//Для GZip необходимо также указать общий размер упакованного блока в переменной Словарь при первом вызове&lt;br /&gt;
РазмерБлока:=1024;&lt;br /&gt;
Словарь:=Length(сРезультат);&lt;br /&gt;
сФайл2:=&amp;quot;&amp;quot;;&lt;br /&gt;
j:=0;&lt;br /&gt;
For i:=1 To Length(сРезультат) div РазмерБлока Do&lt;br /&gt;
  j:=j+РазмерБлока;&lt;br /&gt;
  сФайл2:=сФайл2+StreamDecompress(Mid(сРезультат,(i-1)*РазмерБлока+1,РазмерБлока),&amp;quot;GZ&amp;quot;,0,Словарь);&lt;br /&gt;
EndDo;&lt;br /&gt;
//Распакуем последний блок меньше 1024 байт (возможен пустой блок)&lt;br /&gt;
сФайл2:=сФайл2+StreamDecompress(Right(сРезультат,Length(сРезультат)-j),&amp;quot;GZ&amp;quot;,1,Словарь);&lt;br /&gt;
&lt;br /&gt;
//Сравним сФайл и сФайл2&lt;br /&gt;
If сФайл&amp;lt;&amp;gt;сФайл2 Then&lt;br /&gt;
  Message(&amp;quot;Результаты не совпадают!&amp;quot;,&amp;quot;!&amp;quot;);&lt;br /&gt;
Else&lt;br /&gt;
  Message(&amp;quot;Результаты совпадают!&amp;quot;,&amp;quot;I&amp;quot;);&lt;br /&gt;
EndIf;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>1&gt;Admin</name></author>
		
	</entry>
</feed>