1

Тема: Информационный обмен при множестве объектов

Здравствуйте, специфика нашей работы заключается в том что на одну форму необходимо устанавливать несколько (бывет и несколько десятков) сгенерированных объектов. Объекты могут быть одинаковыми, но при этом, естественно, располагаются в разных местах формы и имеют разные значения внутренних переменных. В данный момент я храню для каждого объекта свою копию входной структуры InputVar и перед вызовом отрисовки копирую свою копию по адресу, выданному библиотекой.
1) Это не является оптимальным. Возможно ли сделать так чтобы при каждом вызове не приходилось копировать кусок памяти, а, например, просто менять указатель на него?
2) Непонятно что делать с выходными переменными. Как понять они относятся ли они к текущему объекту?

2

Re: Информационный обмен при множестве объектов

Здравствуйте.
Правильно ли мы понимаем, что Вам необходимо, что бы имена структуры с входными и структуры с выходными переменными создавались тоже с учётом некоторого префикса? В результате программный код для каждого объекта имел бы свои уникально именованные структуры входных и выходных переменных. Это поможет Вам?

3

Re: Информационный обмен при множестве объектов

По-моему Вы меня не поняли. Мне все-равно как будут называться структуры входных и выходных переменных, т.к. в любом случае это будет одна и та же динамическая библиотека и префикс не спасет. То есть существует 2 объекта, каждый из которых имеет свое состояние, но при этом за их отрисовку отвечает одна библиотека.

4

Re: Информационный обмен при множестве объектов

Давайте уточним.
Форма – это окно операционной системы?
У Вас есть один проект САПР, и по нему Вы генерируете программный код?
Вам нужно иметь возможность последовательно выполнить программный код несколько раз, в каждом случае имея разные значения входных переменных?

5

Re: Информационный обмен при множестве объектов

Да, форма-это окно операционной системы. Кстати в одном приложении у нас несколько форм.
Да, есть один проект САПР, и по нему одна сгенерированная динамическая библиотека.
Да, необходимо несколько раз выполнить один программный код, но значения переменных должны быть разные.

Бороденко Олег пишет:

Давайте уточним.
Форма – это окно операционной системы?
У Вас есть один проект САПР, и по нему Вы генерируете программный код?
Вам нужно иметь возможность последовательно выполнить программный код несколько раз, в каждом случае имея разные значения входных переменных?

6

Re: Информационный обмен при множестве объектов

Мы можем попробовать немного доработать кодогенератор и объявлять не объекты структур, а указатели на них. Т.е. для файлов InputVar.h/c записи

extern struct InputVar
{  ...
} g_InputVar;

struct InputVar g_InputVar;

сменятся на

extern struct InputVar
{  ...
} *g_pInputVar;

struct InputVar *g_pInputVar;

А для файлов OutputVar.h/c записи

extern struct OutputVar
{  ...
} g_OutputVar;

struct OutputVar g_OutputVar;

сменятся на

extern struct OutputVar
{  ...
} const *g_pOutputVar;

struct OutputVar const *g_pOutputVar;

Вас это устроит?


gluhow пишет:

2) Непонятно что делать с выходными переменными. Как понять они относятся ли они к текущему объекту?

Если Вы вызываете функцию OnPaint, загружая перед этим входные переменные состоянием некоторого объекта, то после отработки OnPaint состояние выходных переменных будет соответствовать именно данному объекту. Главное при этом, не использовать входные переменные для хранения (переноса) значений между циклами моделирования, т.е. между вызовами OnPaint.

7

Re: Информационный обмен при множестве объектов

Бороденко Олег пишет:

Мы можем попробовать немного доработать кодогенератор и объявлять не объекты структур, а указатели на них.
Вас это устроит?

Да, вполне устроит. Тогда я буду просто переопределять адреса перед каждой отрисовкой.

А существуют ли внутренние переменные? Я к тому что не будет ли так что внешние переменные я переопределяю, а вычисления все-равно будут вестись корректно только для одного прибора?

8

Re: Информационный обмен при множестве объектов

gluhow пишет:

А существуют ли внутренние переменные? Я к тому что не будет ли так что внешние переменные я переопределяю, а вычисления все-равно будут вестись корректно только для одного прибора?

Нет, существуют только входные, выходные и локальные переменные.
Входные Вы подменяете. Локальные вне вызова OnPaint не существуют. Весь вопрос в выходных, с ними нужно работать осторожно. Не переносить через них значений между циклами моделирования. А так же может быть, что при одном вызове OnPaint, например, в выходную переменную out было записано некое значение, а при следующем вызове логика проекта САПР сработала так, что записи в out не было вообще, и значение в out останется от предыдущего вызова OnPaint.

9

Re: Информационный обмен при множестве объектов

В течение недели мы сделаем доработку кодогенератора и Вас уведомим, напишем сообщение на этой странице.
Будьте добры, напомните нам название Вашей организации.

10

Re: Информационный обмен при множестве объектов

Бороденко Олег пишет:

Весь вопрос в выходных, с ними нужно работать осторожно. Не переносить через них значений между циклами моделирования. А так же может быть, что при одном вызове OnPaint, например, в выходную переменную out было записано некое значение, а при следующем вызове логика проекта САПР сработала так, что записи в out не было вообще, и значение в out останется от предыдущего вызова OnPaint.

Про выходные не до конца понял, ну да ладно, как доберусь до них проверю.

11

Re: Информационный обмен при множестве объектов

Нашли Ваши данные в Вашем профиле пользователя и с форума на всякий случай удалили. Другим пользователям информация о Вас не доступна.

12

Re: Информационный обмен при множестве объектов

Здравствуйте!
Мы доработали кодогенератор, можете скачать новую версию.
Кроме возможности объявлять указатели на структуры переменных, мы добавили опции задания их имён. Также появилась генерация программного кода для 19 новых встроенных функций вычислителя. Более подробное описание смотрите в САПР на Начальной странице.