<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Серый форум &mdash; VBScript: работа с массивами строк с помощью компонента CkStringArray]]></title>
	<link rel="self" href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=2894&amp;type=atom" />
	<updated>2009-03-09T15:17:25Z</updated>
	<generator>PunBB</generator>
	<id>https://forum.script-coding.com/viewtopic.php?id=2894</id>
		<entry>
			<title type="html"><![CDATA[VBScript: работа с массивами строк с помощью компонента CkStringArray]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=20405#p20405" />
			<content type="html"><![CDATA[<p>Компонент <strong>ChilkatUtil.dll</strong>, который содержит несколько полезных COM-серверов (в т.ч. <strong>CkStringArray</strong>), устанавливается вместе с <a href="http://forum.script-coding.com/viewtopic.php?id=2878">Chilkat Spider</a>.</p><p>Объект <strong>CkStringArray</strong> предоставляет удобные методы для работы с массивами строк. Это служебный класс, используемый многими компонентами Chilkat, объект, который содержит 0 или больше строк, которые могут быть найдены по индексу. Причина создания этого объекта — унификация работы с массивами строк в различных языках программирования. Документацию по этому компоненту можно найти <a href="http://www.chilkatsoft.com/refdoc/xCkStringArrayRef.html">здесь</a>.</p><p>Возможности объекта:<br />* всегда упорядоченное хранение элементов; добавление элемента в конец, в начало, в указанный индекс; получение и удаление элемента по индексу; получение последнего элемента массива, в т.ч. с возможностью его одновременного удаления из массива (стек);<br />* сортировка;<br />* сохранение в файл и восстановление из файла; сохранение в файл указанного элемента;<br />* удаление, поиск и проверка вхождения элемента по его содержимому;<br />* пополнение массива из строки с разделителями, многострочного текста, сохранение в многострочный текст;<br />* режим автоматического Trim (включая vbCrLf) при добавлении элементов;<br />* режим автоматического накопления строк без дубликатов;<br />* сохранение массива в формате base64 и восстановление из него;<br />* нахождение пересечения, разности, объединения двух массивов;</p><p>Демонстрация некоторых свойств и методов:<br /></p><div class="codebox"><pre><code>Set oList = CreateObject(&quot;Chilkat.CkStringArray&quot;)
oList.Append &quot;Abc&quot;
oList.Append &quot;123&quot;
oList.Append &quot;Chilkat Software, Inc.&quot;
&#039; добавление элемента в указанный индекс:
oList.InsertAt 0, &quot;abc&quot; &#039; в начало
&#039; сортировка:
oList.Sort 1
For i = 0 To oList.Count - 1
    WScript.Echo oList.GetString(i)
Next
WScript.Echo
&#039; сохранение в файл:
oList.Crlf = 1
oList.SaveToFile &quot;c:\temp\testing\strings.txt&quot;
&#039; очистка:
oList.Clear()
&#039; восстановление из файла:
oList.LoadFromFile &quot;c:\temp\testing\strings.txt&quot;
&#039; удаление элемента по его содержимому:
oList.Remove &quot;abc&quot;
&#039; удаление элемента по индексу:
oList.RemoveAt 2
&#039; автоматический Trim (включая vbCrLf) при добавлении элементов:
oList.Trim = 1
&#039; пополнение из строки с разделителями:
oList.SplitAndAppend &quot;раз, два, три&quot;, &quot;,&quot;
&#039; сохранение массива в формате base64
base64 = oList.Serialize()
&#039; восстановление массива из формата base64:
oList.Clear()
oList.AppendSerialized base64
For i = 0 To oList.Count - 1
    WScript.Echo oList.GetString(i)
Next
WScript.Echo
&#039; поиск:
startIndex = 0
index = oList.Find(&quot;два&quot;, startIndex)
If (index &gt;= 0) Then
    WScript.Echo oList.GetString(index)
End If
&#039; проверка вхождения:
If oList.Contains(&quot;два&quot;) = 1 Then
    WScript.Echo &quot;найдено&quot;
End If</code></pre></div><p>Накопление строк без дубликатов:<br /></p><div class="codebox"><pre><code>Set oList = CreateObject(&quot;Chilkat.CkStringArray&quot;)
oList.Unique = 1 &#039; не добавлять дубликаты
oList.Append &quot;раз&quot;
oList.Append &quot;два&quot;
oList.Append &quot;два&quot;
For i = 0 To oList.Count - 1
    WScript.Echo oList.GetString(i)
Next</code></pre></div><p>Нахождение пересечения массивов:<br /></p><div class="codebox"><pre><code>Set oList = CreateObject(&quot;Chilkat.CkStringArray&quot;)
oList.Append &quot;abc&quot;
oList.Append &quot;zzz&quot;
Set oList2 = CreateObject(&quot;Chilkat.CkStringArray&quot;)
oList2.Append &quot;abc&quot;
oList2.Append &quot;yyy&quot;
oList2.Intersect(oList)
For i = 0 To oList2.Count - 1
    WScript.Echo oList.GetString(i) &#039; abc
Next</code></pre></div><p>Объединение массивов без дубликатов:<br /></p><div class="codebox"><pre><code>Set oList = CreateObject(&quot;Chilkat.CkStringArray&quot;)
oList.Append &quot;abc&quot;
oList.Append &quot;zzz&quot;
Set oList2 = CreateObject(&quot;Chilkat.CkStringArray&quot;)
oList2.Append &quot;abc&quot;
oList2.Append &quot;yyy&quot;
oList2.Unique = 1
oList2.Union(oList)
WScript.Echo oList2.SaveToText()</code></pre></div>]]></content>
			<author>
				<name><![CDATA[The gray Cardinal]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=2</uri>
			</author>
			<updated>2009-03-09T15:17:25Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=20405#p20405</id>
		</entry>
</feed>
