Статьи

Синтаксис

Вот краткое изложение синтаксиса ManuScript.
Метод состоит из последовательности операторов следующих видов:

Блок (Block):
{ операторы }
например,
{
   a=4;
}

Цикл While:
while (условие) блок
например,
while (i<3) {
   Sibelius.MessageBox(i);
   i=i+1;
}

Переключатель (Switch):
switch (тестовое выражение) {
   case (проверочное выражение 1) блок
    [ case (проверочное выражение 2) блок ]
   …
   [ default блок ]
}

Оператор switch состоит из ‘тестового’ выражения, множества операторов case и, если необходимо, оператора default. Если значение тестового выражения совпадает с одним из проверочных, то выполнится блок операторов, следующих за этим оператором case. Если не одно из них не совпадёт, то выполнится блок, следующий за оператором default. Например:
switch (note.Accidental) {
   case (DoubleSharp) {
      Sibelius.MessageBox("Double sharp");
   }
   case (DoubleFlat) {
      Sibelius.MessageBox("Double flat");
   }
   default {
      Sibelius.MessageBox("No double");
   }
}

Условный оператор if else:
if (выражение) блок [ else блок ]
например,
if (found) {
   Application.ShowFindResults(found);
} else {
   Application.NotFindResults();
}

Цикл For each:
for each переменная in выражение
блок

Он последовательно устанавливает переменную в значение каждого подобъекта того объекта, который определён в выражении.
Обычно, это только один тип подобъектов, которые может этот объект содержать. Например, NoteRest (типа аккорда) может содержать только объекты типа Нота (Note). Однако, если возможно наличие более одного типа подобъектов, можно определить его тип:
for each Тип переменная in выражение
блок

Например:
for each NoteRest n in thisstaff {
   n.AddNote(60); // добавить среднюю До
}

Цикл For:
for переменная = значение to значение [ step значение ]
блок

Значение переменной пошагово изменяется, начиная с первого значения, до второго (величина шага определяется после слова step, либо равняется 1) и останавливается за один шаг до последнего значения.
Так, например:
for x=1 to note.NoteCount {
   ...
}

работает правильно.

Присвоение:
переменная = выражение;
например,
value=value+1;
или
variable.variable = expression;
или
Question.CurrentAnswer=True;

Вызов метода:
переменная.идентификатор(разделённые запятой параметры);
например,
thisbar.AddText(0,”Jonathan Finn”,”Composer”);

Вызов отдельного метода:
идентификатор(разделённые запятой параметры);
Вызывается метод из этого плагина, например:
CheckIntervals();

Возврат значения:
return выражение;
Возвращает значение из метода плагина, определённое в выражении. Если метод не содержит оператор return, возвращается значение `null’ (нулевое число, пустая строка или описанный ниже объект null).