# Создание web-страниц с доступом к MATLAB

## 9. Взаимосвязь web-страницы и MATLAB: кнопка для счёта

Основная процедура:

    sub CalcMatLab(MyInp,MyOut)
      Dim myv, MyRes, myor, MyArr, cFig, iFig, Ub, ib, moFile1, moFile2, MyCom, Myfn
      '===Проверяем, есть ли MATLAB. Если нет, то выходим из процедуры.=========================
      if MatLab is Nothing then
        alert "MATLAB не подключен - счёт невозможен"
        exit sub ' если нет Matlab - выходим
      end if
      '===Начинаем текстовый вывод.==========
      myv = MyInp.Value ' все символы области ввода
      if ver>=13 then
        myor=MatLab.Execute(myv) ' выполнили команды
      else
        Ub = len(myv) ' число символов в области ввода
        MyCom=""
        for ib=1 to Ub ' берём каждый символ области ввода
          MyCom = MyCom & ChrW(Asc(Mid(myv,ib,1))) ' преобразовываем каждый символ в слово
        next
        MyRes=MatLab.Execute(MyCom) ' выполнили команды
        Ub = len(MyRes) ' число символов для области вывода
        myor = "" ' будем преобразовывать
        for ib=1 to Ub ' каждый символ
          myor = myor & Chr(AscB(Mid(MyRes,ib,1))) ' преобразовали очередной символ в байт
        next
      end if
      execute ("call SaveArea(myv,""" & cpath & "\" & MyInp.id & ".txt"")")
      myor = "<pre>" & myor & "</pre>" ' для текстового вывода
      '===Закончили текстовый вывод. Начинаем вывод графических результатов.==
      MatLab.Execute("findobj;") ' все графические объекты
      MyRes = MatLab.Execute("max(ans(find(ans==fix(ans))))") ' наибольшее целое - число графических объектов
      MyArr = split(MyRes,"=",-1,1) ' разделяем строку по знаку равенства
      cFig = CInt(MyArr(1)) ' число после знака = количество созданных графических объектов
      if cFig>0 then ' есть фигуры
        moFile1 = "C:\" & MyOut.id & "_"
        moFile2 = cpath & "\" & MyOut.id & "_"
        if (fso.FileExists(moFile2 & "1.emf")) then
          fso.DeleteFile(moFile2 & "*.emf")
        end if
        for iFig=1 to cFig ' записываем каждую фигуру в нужный файл и читаем его в документ
          Myfn = moFile1 & Cstr(iFig) & ".emf" ' имя файла фигуры
          MyCom = "print -dmeta " & chr(39) & Myfn & chr(39) & " -f" & Cstr(iFig) ' команда печати фигуры в файл
          MatLab.Execute(MyCom) ' печатаем фигуру в файл
          myor = myor & "<center><img border=1 src=""" & moFile2 & Cstr(iFig) & ".emf" & """></img></center><br>" ' добавили
          if iFig<cFig then
            myor = myor & "<br>" ' между фигурами - пропуск строки
          end if
          MyCom = "delete(" & Cstr(iFig) & ")" ' Команда удаления окна фигуры
          MatLab.Execute(MyCom) ' Удаляем фигуру
        next
        fso.MoveFile "C:\Out*.emf", cpath
      end if
      execute ("call SaveArea(myor,""" & cpath & "\" & MyOut.id & ".txt"")")
      MyOut.innerHTML = myor ' текстовый и графический вывод
    end sub

    sub SaveArea(MyValue,FileName) ' запоминает область в файле
      Dim mf
      Set mf = fso.OpenTextFile(FileName,2,True)
      mf.Write(MyValue)
      mf.close
    end sub