Язык ISBL

 

Примеры вычислений на ISBL

 

Пример использования оператора цикла по условию

Доработаем пример, описанный в разделе «Пример использования оператора условного ветвления», так, чтобы пользователь мог выбирать единицу измерения разницы между датами и запрос значений появлялся на экране до тех пор, пока пользователь не нажмет на кнопку Выход. При этом зададим значения дат по умолчанию: первая дата равна текущей дате, вторая дата равна «09.05.2008». Для запроса параметров будем использовать функцию InputDialogEx(). Эта функция, в отличие от функции InputDialog(), позволяет управлять списком кнопок в окне ввода. В приведенном ниже примере в окне ввода будет три кнопки: Вычислить - по действию аналогична кнопке ОК, Выход – аналогична кнопке Отмена, и Описание – кнопка, при нажатии на которую будет открываться текст описания программы.

 

ResButton = ""

Template1 ="Разница  в %0:s равна %1:s."

Template2 ="Разница  между датами %0:s и %1:s в %2:s равна %3:s."

Values = "*Дата 1|*Дата 2|*Разница в "

ValueTypes ="Дата|Дата|Признак:днях,месяцах,годах"

DefaultValues = Today() & "|09.05.2008|днях"

Buttons ="Вычислить|Выход|Описание"

while ResButton <<>> "Выход"

  // Запросим у пользователя даты и ед. измерения разницы между ними.

  InputValues =    InputDialogEx(Values;DefaultValues;ValueTypes;;;;;Buttons)

  // Определим, какая кнопка была нажата (ее название возвращается функцией

  // InputDialogEx после значений всех запрашиваемых параметров).

  ResButton = SubString(InputValues;"|";4)

  if ResButton =="Вычислить"

    // Присвоим введенные значения параметров переменным

    Date1 = SubString(InputValues;"|";1)

    Date2 = SubString(InputValues;"|";2)

    DiffUnit = SubString(InputValues;"|";3)

    // Определим разницу между датами.

    Count = Abs(DateDiff(Copy(DiffUnit;1;1);Date1;Date2))

    Info1 = Format(Template1; ArrayOf(DiffUnit;Count))

    Info2 = Format(Template2; ArrayOf(Date1;Date2;DiffUnit;Count))

    MessageBoxEx("Результат";;Info1;;;Info2)

  endif

  if ResButton =="Описание"

    /* При составлении справочного текста используем две          

      зарезервированные константы:

      tab - символ табуляции, и cr - символ перевода строки */

   EditText(tab & 'Программа позволяет вычислить разницу между датами, введенными в полях "*Дата 1" и "*Дата 2", в единицах измерения, указанных в поле "*Разница в". ' & cr & tab & 'Если Вы хотите узнать разницу, то введите нужные значения и нажмите на кнопку "Вычислить".' & cr & tab & 'Для завершения работы нажмите на кнопку "Выход"')

  endif

endwhile  

При выполнении этого текста, например, в сценарии системы DIRECTUM, на экране появится окно для ввода значений:

При нажатии на кнопку Вычислить будет выдано сообщение с разницей между датами:

При нажатии на кнопку Выход выполнение программы завершится.

При нажатии на кнопку Описание будет выдано окно с текстом описания программы:

 

 

См. также:

·         Общие сведения о примерах использования выражений и операторов ISBL;

·         Пример использования оператора условного ветвления;

·         Пример использования оператора цикла по значениям.