Допустим есть два моих компонента (разных) оба работают с массивом вещественных чисел. как передать массив из одного компонента в другой. желательно это сделать напрямую без внешних хранилищ.
Этот топик читают: Гость
Ответов: 5
Рейтинг: 0
|
|||
карма: 0 |
|
Ответов: 8923
Рейтинг: 823
|
|||
garikaa, code_26219.txt и пусть себе работают, или имелся ввиду IC и массив внутри?
|
|||
карма: 19 |
| ||
файлы: 1 | code_26219.txt [444B] [274] |
Ответов: 16884
Рейтинг: 1239
|
|||
garikaa писал(а): есть два моих компонента (разных) |
|||
карма: 25 |
|
Ответов: 8923
Рейтинг: 823
|
|||
Tad, да как-то задавал здесь подобные вопосы по массивам, и Вы, и Ivan (молодец, вырос очень прямо на глазах ) помогли, правда выяснил, что ускорения обработки массива внутри IC и снаружи не произошло, т. к. сама обработка была ресурсоёмкой
|
|||
карма: 19 |
|
Ответов: 5
Рейтинг: 0
|
|||
Имеется ввиду есть элементы (ну не знаю ..., например, типа Label, Button и т.п.) внутри него происходит расчет результатом чего есть значения (массив), далее этот массив (значения) надо передать в другой элемент, для выполнения следующего расчета. Если с механизмом выходной и входной массив более менее понятно, то как передать значения не совсем ясно.
|
|||
карма: 0 |
|
Ответов: 1535
Рейтинг: 176
|
|||
garikaa писал(а): есть элементы..., например, типа Labelgarikaa писал(а): внутри него происходит расчет результатом чего есть значения (массив) |
|||
карма: 1 |
|
Ответов: 3889
Рейтинг: 362
|
|||
garikaa писал(а): есть элементы (ну не знаю ..., например, типа Label, Button и т.п.) внутри него происходит расчетAFAIK, доступных пользователю "расчётов" названные стандартные элементы сами по себе не производят и уж тем более не выдают в виде массивов. Массивы и матрицы в HiAsm в массе своей "вертикальные", не событийные типы данных. Вам стоит ознакомиться со справкой HiAsm, определиться с терминологией и только тогда пытаться говорить на одном языке с остальными. ------------ Дoбавленo в 10.26: garikaa писал(а): есть два моих компонентаБез схемы и компонентов трудно о чём-то говорить, терзают смутные сомнения, о компонентах ли вообще речь ибо умеющий писать компоненты на ObjectPascal должен знать, как объявить публичный массив. А делающий компоненты из нескольких готовых компонент, один из которых массив, должен по идее уже знать о парадигме движения данных в HiAsm... |
|||
карма: 1 |
|
Ответов: 5
Рейтинг: 0
|
|||
Ну вот гениальностью и продвинутостью прям задавили.
Надо выполнить расчет в компоненте. За основу взял, например, Label удалил из него все ненужное вставил свой расчет ввел входные и выходные данные. Естественно назвал его по другому, изменил в нем переменные, подпрограммы и т.п. Единственное НО, расчет разбит на несколько компонент. Сделано это для того, что бы можно было изменять варианты расчета (использовать разные модели). По этому между компонентами передаются данные, условно если сказать, то порядка 7000 значений. Можно конечно сделать просто (НО ТАК НЕ ПРАВИЛЬНО, как мене кажется) сохранять в компоненте результат в файл, в следующем считывать. Вопрос простой как передать значение из одного компонента в другой. Простое число (вещественное), а точнее массив таких чисел. И не надо пожалуйста цепляться к словам, знаете помогите, если нет не надо меня посылать к истоком программирования и философствовать здесь на эту тему.. |
|||
карма: 0 |
|
Разработчик
Ответов: 26115
Рейтинг: 2126
|
|||
garikaa писал(а): Простое число (вещественное), а точнее массив таких чисел.
И не надо пожалуйста цепляться к словам, знаете помогите, если нет не надо меня посылать к истоком программирования и философствовать здесь на эту тему.. Хорошо, не буду отправлять к истокам, но скажу на языке программировани -- необходимо передать указатель на стандартный тип массива в следующий элемент. Если тип массива нестандартный, то необходимо его создать как отдельный класс в первом элементе, но во втором элементе необходимо указать юнит первого элемента в секции uses. |
|||
карма: 22 |
|
Ответов: 5
Рейтинг: 0
|
|||
Вот уже лучше.
У меня выглядит как то так. {Создал:} 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 |
|
Разработчик
Ответов: 26115
Рейтинг: 2126
|
|||
карма: 22 |
| ||
файлы: 1 | code_26237.txt [1.6KB] [324] |
Ответов: 5
Рейтинг: 0
|
|||
Большое человеческое СПАСИБО. Именно то, что и спрашивал!
|
|||
карма: 0 |
|
12