Вверх ↑
Этот топик читают: Гость
Ответов: 5
Рейтинг: 0
#1: 2011-12-18 09:28:31 ЛС | профиль | цитата
Допустим есть два моих компонента (разных) оба работают с массивом вещественных чисел. как передать массив из одного компонента в другой. желательно это сделать напрямую без внешних хранилищ.
карма: 0

0
vip
#1.1контекстная реклама от партнеров
Ответов: 8701
Рейтинг: 806
#2: 2011-12-18 10:50:07 ЛС | профиль | цитата
garikaa, code_26219.txt и пусть себе работают, или имелся ввиду IC и массив внутри?
карма: 19

0
файлы: 1code_26219.txt [444B] [154]
Ответов: 16884
Рейтинг: 1237
#3: 2011-12-18 12:28:43 ЛС | профиль | цитата
garikaa писал(а):
есть два моих компонента (разных)
Леонид, занался экстрасенсорикой

карма: 24
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 8701
Рейтинг: 806
#4: 2011-12-18 13:33:48 ЛС | профиль | цитата
Tad, да как-то задавал здесь подобные вопосы по массивам, и Вы, и Ivan (молодец, вырос очень прямо на глазах ) помогли, правда выяснил, что ускорения обработки массива внутри IC и снаружи не произошло, т. к. сама обработка была ресурсоёмкой
карма: 19

0
Ответов: 5
Рейтинг: 0
#5: 2011-12-19 10:01:24 ЛС | профиль | цитата
Имеется ввиду есть элементы (ну не знаю ..., например, типа Label, Button и т.п.) внутри него происходит расчет результатом чего есть значения (массив), далее этот массив (значения) надо передать в другой элемент, для выполнения следующего расчета. Если с механизмом выходной и входной массив более менее понятно, то как передать значения не совсем ясно.
карма: 0

0
Ответов: 1523
Рейтинг: 175
#6: 2011-12-19 10:17:29 ЛС | профиль | цитата
garikaa писал(а):
есть элементы..., например, типа Label
Понятно
garikaa писал(а):
внутри него происходит расчет результатом чего есть значения (массив)
Не понятно
карма: 1
Не так страшна ошибка, как опасность её не заметить.

0
Ответов: 3889
Рейтинг: 362
#7: 2011-12-19 10:25:49 ЛС | профиль | цитата
garikaa писал(а):
есть элементы (ну не знаю ..., например, типа Label, Button и т.п.) внутри него происходит расчет

AFAIK, доступных пользователю "расчётов" названные стандартные элементы сами по себе не производят и уж тем более не выдают в виде массивов. Массивы и матрицы в HiAsm в массе своей "вертикальные", не событийные типы данных. Вам стоит ознакомиться со справкой HiAsm, определиться с терминологией и только тогда пытаться говорить на одном языке с остальными.
------------ Дoбавленo в 10.26:
garikaa писал(а):
есть два моих компонента

Без схемы и компонентов трудно о чём-то говорить, терзают смутные сомнения, о компонентах ли вообще речь ибо умеющий писать компоненты на ObjectPascal должен знать, как объявить публичный массив. А делающий компоненты из нескольких готовых компонент, один из которых массив, должен по идее уже знать о парадигме движения данных в HiAsm...
карма: 1

0
Ответов: 5
Рейтинг: 0
#8: 2011-12-19 12:08:12 ЛС | профиль | цитата
Ну вот гениальностью и продвинутостью прям задавили.
Надо выполнить расчет в компоненте. За основу взял, например, Label удалил из него все ненужное вставил свой расчет ввел входные и выходные данные. Естественно назвал его по другому, изменил в нем переменные, подпрограммы и т.п. Единственное НО, расчет разбит на несколько компонент. Сделано это для того, что бы можно было изменять варианты расчета (использовать разные модели). По этому между компонентами передаются данные, условно если сказать, то порядка 7000 значений. Можно конечно сделать просто (НО ТАК НЕ ПРАВИЛЬНО, как мене кажется) сохранять в компоненте результат в файл, в следующем считывать. Вопрос простой как передать значение из одного компонента в другой. Простое число (вещественное), а точнее массив таких чисел.
И не надо пожалуйста цепляться к словам, знаете помогите, если нет не надо меня посылать к истоком программирования и философствовать здесь на эту тему..
карма: 0

0
Разработчик
Ответов: 25690
Рейтинг: 2088
#9: 2011-12-19 12:24:53 ЛС | профиль | цитата
garikaa писал(а):
Простое число (вещественное), а точнее массив таких чисел.
И не надо пожалуйста цепляться к словам, знаете помогите, если нет не надо меня посылать к истоком программирования и философствовать здесь на эту тему..

Хорошо, не буду отправлять к истокам, но скажу на языке программировани -- необходимо передать указатель на стандартный тип массива в следующий элемент. Если тип массива нестандартный, то необходимо его создать как отдельный класс в первом элементе, но во втором элементе необходимо указать юнит первого элемента в секции uses.
карма: 20

0
Ответов: 5
Рейтинг: 0
#10: 2011-12-19 12:45:53 ЛС | профиль | цитата
Вот уже лучше.
У меня выглядит как то так.
{Создал:}
unit Sv;
....
const ...
var {например} a:array[1..10] of real;
...
{*************************************************************************}
{Первый Компонент изменяет массив а:}
unit hiStream;
....
uses ...,Sv;
...
type
THIStream = class(TDebug)
.....
procedure _work_doID(var _Data:TData; Index:word);
.....
{Тут вносим изменения в массив а}
procedure THIStream._work_doID;
...
begin
........
end;
.....
{*************************************************************************}
{Во второй компонент надо передать значения массива "а" измененные в первом компоненте:}
unit hiMatMod;
....
uses ...,Sv;
...
type
THIMatMod = class(TDebug)
.....
procedure _work_doDan(var _Data:TData; Index:word);
.....
{Вот тут мы должны получить массив "а" изменённый в первом компоненте}
procedure THIMatMod._work_doDan;
...
begin
........
end;
.....
{*************************************************************************}

карма: 0

0
Разработчик
Ответов: 25690
Рейтинг: 2088
#11: 2011-12-19 14:14:56 ЛС | профиль | цитата
Можно вот так

code_26237.txt
карма: 20

0
файлы: 1code_26237.txt [1.6KB] [181]
Ответов: 5
Рейтинг: 0
#12: 2011-12-19 16:44:09 ЛС | профиль | цитата
Большое человеческое СПАСИБО. Именно то, что и спрашивал!
карма: 0

0
12
Сообщение
...
Прикрепленные файлы
(файлы не залиты)