![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Пользователь
Регистрация: 20.07.2013
Сообщений: 42
|
![]()
У меня есть массив с байтами. И функция, которая работает с массивом DWORD-ов. По сути это один и тот-же массив. Но вместо того, чтобы передать массив напрямую в функцию Calk, мне приходится его преобразовывать в массив DWord-ов. В принципе код не очень большой. Но как-то это некрасиво. Да и память лишнюю расходуем. Интересует, можно-ли сделать приведение одного типа массива в другой, какой-то функцией. Ведь в памяти процесса массивы все равно получаются одинаковые.
Код:
Последний раз редактировалось Kuzya69; 27.07.2016 в 19:23. |
![]() |
![]() |
![]() |
#2 | ||
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
![]() Цитата:
Цитата:
p.s. почему-то не увидел в вашем примере SetLength() для обоих массивов. Вы этот код опустили для упрощения? |
||
![]() |
![]() |
![]() |
#3 |
Пользователь
Регистрация: 20.07.2013
Сообщений: 42
|
![]()
Жаль, что нет таких функций. По сути можно конечно и без математических операций преобразовать, напрямую считав из памяти процесса массив байт, как массив dwor-ов. Но опять-же получим два одинаковых массива в памяти, а вдруг их размер будет ОООООчень большим.
Можно, уже вставил функцию вычитывающую из массива байт dword-ы. В принципе работает. Интересует вопрос именно с приведением типов. Все-таки быстродействие повысится, без выполнения лишних операций. Да я много чего опустил, чтоб не засорять вопрос ненужными операторами. PS Тут посетила мысль, а что если присвоить указатель на массив байт, указателю на массив dword-ов? Прокатит такое? Последний раз редактировалось Kuzya69; 27.07.2016 в 19:53. |
![]() |
![]() |
![]() |
#4 | ||
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
![]() Цитата:
А указатель на динамический массив указывает не на данные, а на управляющую структуру. Если не ошибаюсь, то в книге Стив Тейксейра, Ксавье Пачеко есть описание этой структуры. Цитата:
Не думаю, что быстродействие сильно повысится - по сути там у Вас всего одна/две команды преобразования байт в DWORD. |
||
![]() |
![]() |
![]() |
#5 |
Лис
Старожил
Регистрация: 18.09.2015
Сообщений: 2,409
|
![]()
Есть директива absolute, есть указатели.
Код:
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
У дзен программиста программа делает то что он хотел, а не то что он написал . |
![]() |
![]() |
![]() |
#6 |
Пользователь
Регистрация: 20.07.2013
Сообщений: 42
|
![]() |
![]() |
![]() |
![]() |
#7 | |
Лис
Старожил
Регистрация: 18.09.2015
Сообщений: 2,409
|
![]() Цитата:
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
У дзен программиста программа делает то что он хотел, а не то что он написал . |
|
![]() |
![]() |
![]() |
#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 |