Основы офисного программирования и язык VBA


&Вопросы для системного администратора


"100" Чем нужно зажимать сетевой джек:
"100" Специальным инструментом.
"50" Плоскогубцами.
"0" Зубами.
"0" А зачем его вообще зажимать?

"80" Что вы делали на Новый Год:
"0" Гулял с друзьями.
"100" Переставлял Линукс.

"100" Как у вас проложен сетевой кабель:
"50" В коробе.
"0" По полу.
"100" Мы давно перешли на WaveLAN.

То есть первая строка со значком & обозначает начало темы, потом идут группы строк, первая из которых - вопрос, а остальные - ответы. Строки предваряются весовыми коэффициентами: "важности" - для вопросов, и "степени верности" - для ответов. Согласитесь, что ввести и модифицировать такой файл может любой пользователь. Для представления банка данных создадим три тривиальных класса: ' class BLine Public Weight As Integer Public Value As String Public ff As InlineShape Public loc As Range Public Sub Parse (s As String) p1 = InStr (s, """") p2 = InStr (p1 + 1, s, """") If (p1 > 0) And (p2 > p1) Then Weight = Val (Mid (s, p1 + 1, p2 - 1)) Value = Trim (Mid (s, p2 + 1)) Else Weight = 0 Value = s End If End Sub

' class Question Public Question As New BLine Public Answers As New Collection 'Of BLine (s)

' class Theme Public Title As String Public Questions As New Collection 'Of Question (s) Public Selected As Boolean

Как видите, вопрос - это собственно вопрос и коллекция ответов, а тема - это название темы и коллекция вопросов. Это похоже на представление списков в LISP - голова и хвост. Самый главный кирпич всей иерархии, класс BLline, включает в себя строку и ее вес, а также дополнительные поля, смысл которых прояснится позже. Тривиальный метод Perse принимает строку и преобразует ее в поля объекта - немудреный суржик перегрузки конструктора в C++.

Перед тем как собственно выбирать и тасовать вопросы и ответы, построим древовидную структуру, несколько напоминающую DOM-представление,- для этого вызывается специальная функция.


Начало  Назад  Вперед



Книжный магазин