|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
27.07.2016, 19:15 | #1 |
Пользователь
Регистрация: 20.07.2013
Сообщений: 42
|
Надо передать в функцию массив байт, как массив dword-ов.
У меня есть массив с байтами. И функция, которая работает с массивом DWORD-ов. По сути это один и тот-же массив. Но вместо того, чтобы передать массив напрямую в функцию Calk, мне приходится его преобразовывать в массив DWord-ов. В принципе код не очень большой. Но как-то это некрасиво. Да и память лишнюю расходуем. Интересует, можно-ли сделать приведение одного типа массива в другой, какой-то функцией. Ведь в памяти процесса массивы все равно получаются одинаковые.
Код:
Последний раз редактировалось Kuzya69; 27.07.2016 в 19:23. |
27.07.2016, 19:35 | #2 | ||
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
Цитата:
Цитата:
p.s. почему-то не увидел в вашем примере SetLength() для обоих массивов. Вы этот код опустили для упрощения? |
||
27.07.2016, 19:48 | #3 |
Пользователь
Регистрация: 20.07.2013
Сообщений: 42
|
Жаль, что нет таких функций. По сути можно конечно и без математических операций преобразовать, напрямую считав из памяти процесса массив байт, как массив dwor-ов. Но опять-же получим два одинаковых массива в памяти, а вдруг их размер будет ОООООчень большим.
Можно, уже вставил функцию вычитывающую из массива байт dword-ы. В принципе работает. Интересует вопрос именно с приведением типов. Все-таки быстродействие повысится, без выполнения лишних операций. Да я много чего опустил, чтоб не засорять вопрос ненужными операторами. PS Тут посетила мысль, а что если присвоить указатель на массив байт, указателю на массив dword-ов? Прокатит такое? Последний раз редактировалось Kuzya69; 27.07.2016 в 19:53. |
27.07.2016, 20:05 | #4 | ||
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
Цитата:
А указатель на динамический массив указывает не на данные, а на управляющую структуру. Если не ошибаюсь, то в книге Стив Тейксейра, Ксавье Пачеко есть описание этой структуры. Цитата:
Не думаю, что быстродействие сильно повысится - по сути там у Вас всего одна/две команды преобразования байт в DWORD. |
||
27.07.2016, 21:28 | #5 |
Лис
Старожил
Регистрация: 18.09.2015
Сообщений: 2,409
|
Есть директива absolute, есть указатели.
Код:
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
У дзен программиста программа делает то что он хотел, а не то что он написал . |
27.07.2016, 22:23 | #6 |
Пользователь
Регистрация: 20.07.2013
Сообщений: 42
|
|
27.07.2016, 22:35 | #7 | |
Лис
Старожил
Регистрация: 18.09.2015
Сообщений: 2,409
|
Цитата:
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
У дзен программиста программа делает то что он хотел, а не то что он написал . |
|
30.07.2016, 01:27 | #8 |
Пользователь
Регистрация: 20.07.2013
Сообщений: 42
|
"Чего-то не выходит каменный цветок, Данила-мастер."
Это из анекдота. Я написал такое: Код:
Но компиллятор уже ругается на MD[i] "[DCC Error] MyLib.dll(): E2016 Array type required" Что я упустил? Если описать так: TADWord=array [0..65536] of DWord; То компиллятор молчит. Так как все-таки втащить в прогу динамический массив? |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Как методу передать массив байт | vovken1997 | Общие вопросы C/C++ | 6 | 08.07.2013 20:57 |
Дан массив из 9 байт расматривая его как массив 72 бит подсчитать число нулей в этом массиве. | noob asm | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 6 | 16.04.2012 19:04 |
как можно передать массив по ссылке в функцию в java? | videolord | Общие вопросы по Java, Java SE, Kotlin | 1 | 03.11.2011 18:21 |
Как передать Динамический массив в функцию? | RainCat | Помощь студентам | 4 | 13.04.2011 11:25 |
Как конвертировать массив символов в массив байт | davinci | C++ Builder | 6 | 30.10.2010 18:09 |