Перейти к содержанию
    

Embarcadero C++Builder 10.4. Поделитесь впечатлением.

8 hours ago, _pv said:

в большинстве случаев опять же хватало графиков в отдельном окне, которое гнуплот сам рисует.

Хорошая вещь. Вариант рендеринга данных в график с последующим сохранением в файл или в бинарное поле таблицы базы данных весьма привлекателен. В последнем случае приходилось использовать питон и (довольно тормознутый) matplolib. gnuplot, наверное, пошустрее.

 

8 hours ago, _pv said:

и не без разницы ли притащить .dll и звать из неё функции plot("sin(x)"); или притащить .exe, открыть через popen и отправлять ему команды и читать обратно картинку через fwrite (gp, "plot sin(x)"); / fread?

Разница все же есть: обычно компонент графика на форме/окне берет на себя функции отрисовки, обновления (не только данных, добавления точек, а, например, когда пользователь меняет толщину линии, тип точек и прочие параметры кривой)  и т.п, тут же предлагается бинарную картинку сгенерированную gnuplot'ом отрисовывать самому. А если этих графиков несколько на форме, то в предложенном варианты будет слишком много доп. действий.

 

8 hours ago, _pv said:

ещё как-то давно mathGL использовал, выглядит неплохо, особенно если что-нибудь сложнее одномерных графиков надо

Спасибо, поизучаю.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для Qt есть очень хорошая вещь: Qt Widgets for Technical Applications, правда сложновата из-за скудной документации, но хороших примеров довольно много

Изменено пользователем gridinp

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

26.12.2021 в 14:22, _pv сказал:

gnuplot так встроен в octave.

и не без разницы ли притащить .dll и звать из неё функции plot("sin(x)");

Так он именно встроен в octave, а не просто вызывается, как dll-модуль, из gnuplot.

 

Обычно ситуация такова, что чужие dll, как правило, вообще не вызываются :). Причиной тому служит то, что чужой программный продукт обычно содержит некий свой "фундамент", тогда как в dll вынесены редко или периодически используемые функции. Однако такие "удаленные функции" для своей работы все равно требуют наличия этого фундамента, а зачастую и его "инициации". Исключение составляют dll-модули в составе библиотек, да и то процедура инициации чаще всего оказывается неизбежной.

 

В целом же проблема сводится к тому, что чужие/внешние функции не являются отдельными "кубиками", которые можно легко присоединять к своей программе, а связаны между собой неразрывными связями. Например, я вызываю одну функция, не ведая, что она неавтономна. Тогда как она при своем выполнении вызывает, скажем, пару других функций из того же ушата :), а те, в свою очередь, вызовут еще какие-то функции, а те свои, и т.д. до цепной реакции. Конечно, может случиться и так, что рост этих "метастаз" где-то остановится, но чаще случается так, что "метастазы" дорастают до фундамента, а тот, "возбудившись", грузит в память оптом все функции, какие на нем произрастают. Из-за этого выходит, что для того, чтобы воспользоваться всего лишь одной единственной функцией из чужого продукта, приходится инсталлировать его целиком, а то и предварительно запускать его в виде параллельно работающего приложения.

 

С течением времени программные продуты становятся всё жирнее, превращаясь в отдельную экосистему, из которой снаружи ничего полезного не выудишь. А межпрограммный интерфейс мало кто из них официально поддерживает, а если неофициально, то и не догадаешься как. Но даже, если такой интерфейс возможен, то его использование портит реноме своей программы, когда она столь откровенно паразитирует на чужом продукте, а тем более нелицензированном.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 hour ago, Xenia said:

Так он именно встроен в octave, а не просто вызывается, как dll-модуль, из gnuplot.

...

ничего не понял.

 

вы вроде искали аналог plot() из матлаба для своей программы собираемой msvc?

ну вот установите гнуплот, сделайте

FILE * gp = _popen("gnuplot.exe","w");
fprintf(gp, "set terminal wxt noraise\n");  //чтобы окошко фокус не забирало при каждом обновлении графика.
for (double t = 0; t <= 10; t+=0.1){
  fprintf(gp, "plot sin(x-%G)\n", t);
  fflush(gp);
  Sleep(100);
}

оно?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

43 минуты назад, _pv сказал:

вы вроде искали аналог plot() из матлаба для своей программы собираемой msvc?

ну вот установите гнуплот, сделайте

Если я поступлю, как вы советуете, то gnuplot нарисует график в своем собственном окне, а не в окне моей программы.

Тогда как я бы хотела функцию plot() "приватизировать", чтобы она рисовала графики с моем окне (на моей канве).

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

22 minutes ago, Xenia said:

Если я поступлю, как вы советуете, то gnuplot нарисует график в своем собственном окне, а не в окне моей программы.

Тогда как я бы хотела функцию plot() "приватизировать", чтобы она рисовала графики с моем окне (на моей канве).

ну если только нарисовать картинку, а pan/zoom потом самому руками делать, то картинку у гнуплота можно забрать, а не чтобы он сам окошко рисовал и где угодно потом отрисовать.

есть терминал qt widgetа, можно сказать куда именно ему рисовать в своей программе на Qt.

есть svg/html терминалы, т.е. зравствуй electron и весь этот вот сопуствующий ужос.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

On 12/23/2021 at 9:31 PM, Xenia said:

VS2013 - нормальная среда, не монстроидальная. Да и VS2015 еще терпимая. Тогда как VS2005 и VS2008 - старьё голимое :) , 64-разрядные приложения генерировать неспособное.

Но вопрос у меня другой - как под VS разные графики и диаграммы рисовать, которые на Bulder 6.0 делались в пол тычка мышкой? Т.е. всё, что под Билдером делает teechart?

Или вы всё GUI на MFC пишите?

Есть плагин Cּּ/CLR Windows Forms fur Visual Studio 2017. Позволяет добавлять GUI в С++ проект.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...