Приложения
Приложение А. Функции, константы и структуры RDS
А.5. Сервисные функции и макросы RDS
А.5.15. Работа с матрицами и массивами
А.5.15.7. rdsCopyVarArray – копировать одну матрицу/массив в другую
Функция rdsCopyVarArray копирует все содержимое одной матрицы (то есть статической или динамической переменной блока, являющейся матрицей или массивом) в другую. Она также может использоваться для копирования в матрицу содержимого переменной произвольного типа, если фактическое значение последней в данный момент является матрицей, совместимой по типу.
BOOL RDSCALL rdsCopyVarArray( LPVOID DestBaseAddr, // Базовый адрес получателя LPVOID SrcBaseAddr // Базовый адрес источника );
Тип указателя на эту функцию
RDS_BpVpV
Параметры
- DestBaseAddr (LPVOID)
- Указатель (может быть любого типа, в т.ч. и void*) на данные матрицы-получателя в дереве переменных блока, то есть указатель на область из восьми байтов, которые эта матрицы занимает в дереве переменных (см. §2.5.3 руководства программиста).
- SrcBaseAddr (LPVOID)
- Указатель на данные переменной-источника (матрицы или переменной произвольного типа). Размещение переменной произвольного типа в памяти описывается в §2.5.6 руководства программиста.
Возвращаемое значение
TRUE – значение переменной скопировано успешно, FALSE – произошла ошибка (попытка копирования матриц несовместимых типов).
Примечания
Эта функция копирует содержимое одной матрицы (массива) в другую, если типы их элементов совместимы. Матрица-получатель данных должна обязательно быть переменной (не важно, статической или динамической) типа «матрица» или «массив», а матрица-источник может быть как матрицей/массивом, так и переменной произвольного типа – в этом случае копирование будет выполнено только в том случае, если ее фактическое значение на момент вызова функции является матрицей. После копирования старое содержимое матрицы, находящейся по указателю DestBaseAddr, будет потеряно, и матрица получит новый размер и новое содержимое. Если копируемая матрица была пустой, матрица-получатель будет очищена (получит размер 0×0).
Если типы элементов источника и получателя совпадают, копирование выполняется быстрее всего. Если типы отличаются, RDS будет выполнять преобразование типа для каждого элемента. Например, если получатель – матрица строк, а источник – матрица вещественных чисел, каждое вещественное число при копировании будет преобразовано в строку.
Сервисные функции RDS одинаково работают с матрицами и с массивами, поэтому с помощью этой функции можно копировать матрицы в массивы и массивы в матрицы.
Пример
Пример использования функции rdsCopyVarArray приведен в §2.6.5 руководства программиста.
См. также