Список форумов Форум Libreoffice

Форум Libreoffice

Добро пожаловать на Форум Libreoffice!
 
 FAQFAQ   ПоискПоиск   ПользователиПользователи   ГруппыГруппы   РегистрацияРегистрация 
 ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 

English French German Italian Portuguese Russian Spanish
BeanShell & Basic - пример взаимодействия

 
Начать новую тему   Ответить на тему    Список форумов Форум Libreoffice -> Basic
Предыдущая тема :: Следующая тема  
Автор Сообщение
mathnew



Репутация: 0    

Зарегистрирован: 20.08.2011
Сообщения: 24

СообщениеДобавлено: Пт Сен 23, 2011 12:28 pm    Заголовок сообщения: BeanShell & Basic - пример взаимодействия Ответить с цитатой

На BeanShell (фактически на Java) существует большое число интересных разработок программ, которые можно использовать в Basic.
Вопрос в том, как передать из Basic'a значения аргументов для функций, определенных или используемых в BeanShell и получить обратно (в Basic) результат вычисления (обработки) в программе на BeanShell.
Как это можно сделать, покажем на примере "классической" задачи по вычислению гипотенузы прямоугольного треугольника по его катетам.
1. Сервис - Макросы - Управление макросами - BeanShell... - Макросы LibreOffice - Создать
Создаем библиотеку Library1.
2. Library1 - Создать
Создаем макрос Sqrt (расширение .bsh добавится автоматически)
3. Содержимое этого макроса, вставленное по умолчанию, следует удалить и вставить следующий код:
Sqrt.bsh
Код:
//Получаем аргументы из Basic
a=ARGUMENTS[0];
b=ARGUMENTS[1];

// Определяем нашу функцию
pifagor(x,y) {
gipo=Math.sqrt(x*x+y*y);
return gipo;
}

//Возвращаем значение в Basic
return  pifagor(a,b);

Макрос на Basic, вызывающий этот скрипт на BeanShell, такой:
Код:
Sub sqrt_bsh

scriptbsh="Library1.Sqrt.bsh"
   
script = createUnoService("com.sun.star.script.provider.MasterScriptProviderFactory")._
   createScriptProvider("")._
    getScript("vnd.sun.star.script:" & scriptbsh & "?language=BeanShell&location=share")

a=3
b=4

stret = script.invoke(array(a,b), array(), array())

MsgBox "c = " & stret

End Sub


Иллюстрации прилагаются.


Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Показать сообщения:   
Начать новую тему   Ответить на тему    Список форумов Форум Libreoffice -> Basic Часовой пояс: GMT
Страница 1 из 1

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


Powered by phpBB © 2001, 2005 phpBB Group
Вы можете бесплатно создать форум на MyBB2.ru, RSS