Статус: Advanced Member
Группы: Registered
Зарегистрирован: 02.06.2009(UTC)
Сообщений: 346
Сказал «Спасибо»: 50 раз Поблагодарили: 156 раз в 105 постах
Я вспомнил, что собирал архивчик в отладочной конфигурации (Debug), может поэтому не работало. Пересобрал в релиз и вроде стало лучше:
mcadefi_20101123.7z Помните, что пока это тестовая версия. Работа со строками пока не реализована, сообщения об ошибках из маткадовских библиотек игнорируются.
К слову сказать, не много я видел проектов пользовательских библиотек для Mathcad. Я мог бы показать ещё одну интересную библиотечку, но там нужна визуализация двумерных массивов, содержащих изображения. В SMath Studio пока такого нет.
Вот:
http://edu.tnw.utwente.n.../manual/onlinemanual.htm Думается мне, что эту библиотечку можно будет прикрутить.
Россия навсегда! Вячеслав Мезенцев
Статус: Advanced Member
Группы: Registered
Зарегистрирован: 02.06.2009(UTC)
Сообщений: 346
Сказал «Спасибо»: 50 раз Поблагодарили: 156 раз в 105 постах
Ха, работает:
Жаль только посмотреть результаты работы пока нельзя и почему-то в версии для MC14 загрузилась только эта функция
Отредактировано пользователем 23 ноября 2010 г. 17:48:31(UTC)
| Причина: Не указана
Россия навсегда! Вячеслав Мезенцев
4 пользователей поблагодарили уни за этот пост.
Статус: Advanced Member
Группы: Registered
Зарегистрирован: 02.06.2009(UTC)
Сообщений: 346
Сказал «Спасибо»: 50 раз Поблагодарили: 156 раз в 105 постах
Вот почти полная подержка маткадовских библиотек:
mcadefi_20101124.7z Добавил поддержку строк. Осталось только сделать доступными сообщения об ошибках, которые должны регистрироваться.
Ещё я не смог победить баг при освобождении неуправляемой памяти для строк. Не знаю в чём дело, так что пока примирился с возможной утечкой памяти при работе со строками.
Могу ещё до кучи добавить пример пользовательской библиотеки на ассемблере. Да, для SMath Studio можно будет писать численные плагины и на ассемблере, через это дополнение. Может кому-то пригодится.
П.С. Теперь для маткадовских функций в описании пишется и модуль (имя dll'ки), где она находится.
П.С.2 Исправил ссылку, теперь поддерживаются и сообщения об ошибках из самих библиотек. От обилия функций окно с текстом в Сервис\Дополнения... зависает. Уж не знаю на кого грешить. Добавил пакет WSPro, а там больше 300, кажется, функций... и всё, окно в ауте, загрузка процессора 100%.
Отредактировано пользователем 24 ноября 2010 г. 11:06:13(UTC)
| Причина: Не указана
Россия навсегда! Вячеслав Мезенцев
1 пользователь поблагодарил уни за этот пост.
smath оставлено 24.11.2010(UTC)
Статус: Advanced Member
Группы: Registered
Зарегистрирован: 02.06.2009(UTC)
Сообщений: 346
Сказал «Спасибо»: 50 раз Поблагодарили: 156 раз в 105 постах
Россия навсегда! Вячеслав Мезенцев
Статус: Advanced Member
Группы: Registered
Зарегистрирован: 02.06.2009(UTC)
Сообщений: 346
Сказал «Спасибо»: 50 раз Поблагодарили: 156 раз в 105 постах
Андрей, правильно ли я понимаю, что строка хранится вместе с обрамляющими двойными кавычками? В плагине строка передаётся как есть в маткадовский плагин. Ещё есть некоторая неточность при индексировании номера ошибки. При возникновении ошибки в маткадовском плагине, сообщение может не соответствовать. Не понял пока алгоритма выбора сообщения об ошибке из таблицы ошибок (поведение отличается от того же в Маткаде).
Россия навсегда! Вячеслав Мезенцев
Статус: Administration
Группы: Developers, Registered, Knovel Developers, Administrators, Advanced Member
Зарегистрирован: 11.07.2008(UTC)
Сообщений: 912
Сказал «Спасибо»: 647 раз Поблагодарили: 262 раз в 102 постах
уни написал: Андрей, правильно ли я понимаю, что строка хранится вместе с обрамляющими двойными кавычками?
Верно. Двойные кавычки в начале и конце являются ключём к типу данных. Так же и с единицами измерения - апостроф в начале есть такой же ключ.
Статус: Advanced Member
Группы: Registered
Зарегистрирован: 02.06.2009(UTC)
Сообщений: 346
Сказал «Спасибо»: 50 раз Поблагодарили: 156 раз в 105 постах
Тут одна идея возникла. Можно предлагать использовать программу фирмам на подобие этой:
http://www.techwareeng.com/ Там есть ряд продуктов для вычислений. Они "заточены" под Excel, Lotus и Mathcad (см. документацию по ссылкам).
Учитывая наличие дополнения
mcadefi можно, думается мне, уже предлагать не навязчиво попробовать их продукты и с SMath Studio.
Сейчас плагин вполне работоспособен. В следующем релизе сделаю ещё ряд мелких исправлений и дополнений.
Россия навсегда! Вячеслав Мезенцев
Статус: Advanced Member
Группы: Registered
Зарегистрирован: 02.06.2009(UTC)
Сообщений: 346
Сказал «Спасибо»: 50 раз Поблагодарили: 156 раз в 105 постах
Андрей, а чем отличается тип ArgumentSections::FileName от ArgumentSections::String?
mcadefi_20101126.7z Новая версия. Пофиксил некоторые баги, добавил тип параметра INFILE. Плагин
mcadefi должен отрабатывать более корректно. А вот библиотечка от NIT, которую я упоминал выше, использует какие-то странные параметры в описании некоторых функций, которые не определены в заголовочном файле. Поэтому ни Маткад, ни тем более mcadefi не смогут загрузить функции, параметров которых не знают. Такие функции будут просто проигнорированы.
Отредактировано пользователем 26 ноября 2010 г. 15:05:38(UTC)
| Причина: Не указана
Россия навсегда! Вячеслав Мезенцев
Статус: Administration
Группы: Developers, Registered, Knovel Developers, Administrators, Advanced Member
Зарегистрирован: 11.07.2008(UTC)
Сообщений: 912
Сказал «Спасибо»: 647 раз Поблагодарили: 262 раз в 102 постах
Только тем, что будет подставляться в описание функции. Никакого другого функционала от этого не зависит. Если же смотреть с точки зрения чисто логического, то FileName (будучи URI) является частным случаем String.
Статус: Advanced Member
Группы: Registered
Зарегистрирован: 02.06.2009(UTC)
Сообщений: 346
Сказал «Спасибо»: 50 раз Поблагодарили: 156 раз в 105 постах
В маткаде тоже есть параметр INFILE, но там очень много чего зависит от него:
Код:
// File name variables. These are passed as const char *pointers
// if the string doesn't look like it has a path in it then
// the current working directory will be prepended to the string
// before it is passed to the user function.
//
//
// your function will be passed a const char * pointer
#define INFILE 13
Я обработал этот тип как строку за исключением того, что в библиотеку передаю указатель на строку, я не структуру, как в случае со строкой. В Руководстве разработчика такой тип вообще не описан и не используется, как, видимо, и многие другие, только COMPLEX_SCALAR, COMPLEX_ARRAY и STRING. Хотя тесты показали, что Маткад INFILE отрабатывает согласно заголовочника, плагин mcadefi теперь тоже. Правда никаких текущих путей я не трогаю.
Отредактировано пользователем 26 ноября 2010 г. 15:16:29(UTC)
| Причина: Не указана
Россия навсегда! Вячеслав Мезенцев
Статус: Advanced Member
Группы: Registered
Зарегистрирован: 02.06.2009(UTC)
Сообщений: 346
Сказал «Спасибо»: 50 раз Поблагодарили: 156 раз в 105 постах
Как подключить старый паскалевский численный код через интерфейс Mathcad User EFI. На примере древней библиотеки "NUMERICAL RECIPES IN PASCAL".
Один уральский программист (Александров О.Е.) из УПИ (УФУ) с ФизТеха портировал маткадовский интерфейс на паскаль. Получилось два файла:
1.
McadUserTypes.pas 2.
McadUserEx.pas То была часть НИР "Разработка методики создания виртуальных приборов для учебных целей и создание учебно-программного комплекса на базе эмулятора масс-спектрометра МИ-1201 АГМ". По-моему, это единственное место в сети, где человек решил писать пользовательские библиотеки для Mathcad'а на паскале. Это, конечно, не очень хорошо, но это работает, что позволяет подключать сторонний математический код на старом паскале, с которым Вы ну никак не хотите расставаться всю оставшуюся жизнь.
Для подключения своей функции нужно выполнить несколько шагов:
1. Описать функцию в стиле User EFI (см. примеры:
FLMOONUnit.pas )
2. Написать обёртку для Вашей функции в стиле User EFI (примеры там же).
3. Зарегистрировать функцию, вызовом CreateUserFunction() в основном модуле (см. примеры:
MainUnit.pas )
Ниже приведены исходники для Delphi7. И в результате мы имеем:
П.С. А плохо это тем, что отлаживать такой код можно только при помощи специального лога ошибок, который делать вручную. Либо я не понял как это делать в Delphi7. SMath Studio работает в управляемом пространстве .Net, а код написан для неуправляемого пространства Windows. Поэтому, таким образом лучше подключать уже отлаженный код или отлаживать его отдельно, а потом подключать.
Ссылки:
Исходники:
http://pascal.sources.ru/math/nrpas13.htm Исходники плагина:
https://smath.info/svn/p.../NumericalRecipesPascal/ Сам плагин:
nrpas13.dll (нужно положить в папку /plugins/userefi/)
НИР:
http://mp.ustu.ru/Users/NIR_05.01.038/ Отредактировано пользователем 17 апреля 2012 г. 20:12:46(UTC)
| Причина: Не указана
Россия навсегда! Вячеслав Мезенцев
Статус: Newbie
Группы: Registered
Зарегистрирован: 26.09.2012(UTC)
Сообщений: 3
Откуда: Россия
Приветствую.
Версия Smath 0.95(сборка 4594). Из mcadefi_20120411.zip/plugins пара .dll и папка "userefi" скопирована в папку плагинов Smath. При запуске появляется
окно с ошибкой (размер картинки 118 кб). Что можно тут сдалать?
Статус: Advanced Member
Группы: Registered
Зарегистрирован: 02.06.2009(UTC)
Сообщений: 346
Сказал «Спасибо»: 50 раз Поблагодарили: 156 раз в 105 постах
Автор: Balakin Vladimir Приветствую.
Версия Smath 0.95(сборка 4594). Из mcadefi_20120411.zip/plugins пара .dll и папка "userefi" скопирована в папку плагинов Smath. При запуске появляется
окно с ошибкой (размер картинки 118 кб). Что можно тут сдалать?
Не знаю, если честно. Я заменил сборку на новую, которая работает у меня на машине (WinXP, на семерке пока не проверял). Попробуйте ещё раз.
Отредактировано пользователем 27 сентября 2012 г. 7:14:25(UTC)
| Причина: Не указана
Россия навсегда! Вячеслав Мезенцев
Статус: Newbie
Группы: Registered
Зарегистрирован: 26.09.2012(UTC)
Сообщений: 3
Откуда: Россия
На какой версии Smath у Вас работало или работает?
Статус: Advanced Member
Группы: Registered
Зарегистрирован: 02.06.2009(UTC)
Сообщений: 346
Сказал «Спасибо»: 50 раз Поблагодарили: 156 раз в 105 постах
На последней SMath Studio 0.95(сборка 4594). Вообще, ошибка странная, этот Windows 7 мне никогда не нравился. Я попробую запустить SMath на своей Win7 вместе с плагином и посмотрю что будет.
П.С. Посмотрел на чистой семёрке x32. Всё работает. Запускал под админом. Если дадите доступ к системе через Team Viewer 7, то я могу попробовать посмотреть на проблему живьём.
Отредактировано пользователем 27 сентября 2012 г. 21:34:53(UTC)
| Причина: Не указана
Россия навсегда! Вячеслав Мезенцев
Статус: Newbie
Группы: Registered
Зарегистрирован: 26.09.2012(UTC)
Сообщений: 3
Откуда: Россия
У меня в Windows 7 64-разрядной не работает. На следующей неделе в будний день после 18 часов по Москве сможете?
Статус: Advanced Member
Группы: Registered
Зарегистрирован: 02.06.2009(UTC)
Сообщений: 346
Сказал «Спасибо»: 50 раз Поблагодарили: 156 раз в 105 постах
Автор: Balakin Vladimir У меня в Windows 7 64-разрядной не работает. На следующей неделе в будний день после 18 часов по Москве сможете?
Скорее всего мне нужно просто перекомпилировать проект под 64 разряда. Я посмотрю где там и что нужно поменять и сделаю специальный релиз для Win7(x64). Посмотрим что будет. Правда как при этом будут загружаться обычные dll, они ведь тоже для 32-х разрядов?
Россия навсегда! Вячеслав Мезенцев
Статус: Advanced Member
Группы: Registered
Зарегистрирован: 02.06.2009(UTC)
Сообщений: 346
Сказал «Спасибо»: 50 раз Поблагодарили: 156 раз в 105 постах
Вот попробуйте, хотя, думается мне, что может выскочить куда более страшная ошибка
mcaduser-x64.zip Россия навсегда! Вячеслав Мезенцев
Статус: Advanced Member
Группы: Registered
Зарегистрирован: 27.10.2012(UTC)
Сообщений: 73
Сказал(а) «Спасибо»: 403 раз Поблагодарили: 45 раз в 35 постах
Автор: уни К сожалению плагин у меня не работает (win 7, x64). Очень хотелось бы испытать его.
Сначала SMath жалуется что не может наидти файл, потом жалуется про формат файла.
Мартин
Отредактировано пользователем 7 февраля 2013 г. 11:56:05(UTC)
| Причина: Не указана
Пользователь mkraska прикрепил следующие файлы:
Статус: Advanced Member
Группы: Registered, Advanced Member
Зарегистрирован: 15.03.2011(UTC)
Сообщений: 3
Сказал «Спасибо»: 609 раз Поблагодарили: 1 раз в 1 постах
Увы, он и не предназначен для 64-разрядных систем. Я его делал для совместимости с пользовательскими dll Mathcad. Не уверен, что можно так просто использовать 32-разрядные версии дополнений в 64-разрядной среде. У меня просто нет под рукой 64-разрядной системы, а так я бы может нашёл в чём дело. В любом случае это рудимент и его назначение - это использование старого кода, который лень или неохота переписывать под .Net. Как появится рабочая машина с 64-разрядами я попробую собрать дополнение и протестировать его работу.
1 пользователь поблагодарил uni за этот пост.
Быстрый переход
Форум проекта SMath
SMath Studio
- Скачать SMath Studio
--- Архив
--- Ночные сборки
- Примеры использования
- Вопросы по использованию
- Предложения
- Ошибки
Математика
- Документы
- Алгоритмы
- Математические задачи
Общение
- О проекте
- Общение
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.