Функции для разбора строк с разделителем


GetArrayItem(Строка$,Разделитель$,Номер)
Пояснение
Эта функция возвращает элемент с указанным Номером из строки Строка$. Символ-разделитель задается с помощью параметра Разделитель$.

Помните, что каждый элемент в строке должен быть отделен с помощью разделителя. Это может быть любой символ из таблицы ASCII (0-255), но мы рекомендуем выбирать наименее используемые символы (#,*,/,|...).

Символы из расширенной таблицы ASCII (127-255) могут добавляться с помощью функции CHR().
Примеры
Этот код отображает элементы 1..5 в окне сообщения.

Items$='item1#item2#item3#item4#item5#'
For i=1 To 5
  ArrayItem$=GetArrayItem(Items$,#,i)
  Message("Из строки получен элемент:","ArrayItem$")
Next i


Вот более сложный пример:
Этот код возвращает выделенные элементы списка.

ListBoxGetSelectedItems("SongList","Items$,NumItems$,#,Count")
If (Count<>0)
  For i=1 To Count
    Item$=GetArrayItem(Items$,#,i)
    Message("Выделен элемент:","Item$")
  Next i
End
Дополнительная информация
Запятая не может использоваться (обычным способом) в качестве разделителя. Однако есть возможность обойти это ограничение ;)

Вместо такого кода...
Name$=GetArrayItem(String$,',',1)

или такого...
Name$=GetArrayItem(String$,,,1)

используйте такой:
Name$=GetArrayItem(String$,'0x2C',1)

...где 0x2C является шестнадцатеричным представлением запятой (в таблице ASCII).



GetArrayNum(Строка$,Разделитель$)
Пояснение
Эта функция возвращает число элементов в строке Строка$ с заданным разделителем (Разделитель$).

Эта функция полезна в тех случаях, когда вы не знаете точное число элементов в строке.
Пример
Этот код отображает элементы 1..5 в окне сообщения.

Items$='item1#item2#item3#item4#item5#'
NumberOfItems=GetArrayNum(Items$,#)
For i=1 To NumberOfItems
  ArrayItem$=GetArrayItem(Items$,#,i)
  Message("Из строки получен элемент:","ArrayItem$")
Next i


MMB Программирование без границ :: dgilmour, перевод на русский язык, 2006 :: Все права защищены :: www.mmbscript.ru