Страница: 1 |
Страница: 1 |
Вопрос: CopyMemory Lib "kernel32.dll" Alias &quo
Добавлено: 16.03.10 02:57
Автор вопроса: AWP | Web-сайт:
Столкнулся с такое проблемой.
функция CopyMemory при копировании из одного массива в другой, копирует не всё. Массивы: один байтовый, другой с пользовательским типом(7 байт).
Оба массива задаются Redim'ом. Размеры не превышают 4КБ. Размер точно правильные.
Не хотелось бы перебором/маленькими кусками записывать.
Как решить?
Ответы
Всего ответов: 10
Номер ответа: 1
Автор ответа:
Sharp
Лидер форума
ICQ: 216865379
Вопросов: 106
Ответов: 9979
Web-сайт:
Профиль | | #1
Добавлено: 16.03.10 04:03
Код в студию
Номер ответа: 2
Автор ответа:
AWP
ICQ: 345685652
Вопросов: 96
Ответов: 1212
Web-сайт:
Профиль | | #2
Добавлено: 16.03.10 06:53
tmpData - байтовый массив
Data - Двумерный массив с пользовательским типом данных
Номер ответа: 3
Автор ответа:
Sharp
Лидер форума
ICQ: 216865379
Вопросов: 106
Ответов: 9979
Web-сайт:
Профиль | | #3
Добавлено: 16.03.10 16:22
А ты слышал что-нибудь о выравнивании?
Номер ответа: 4
Автор ответа:
AWP
ICQ: 345685652
Вопросов: 96
Ответов: 1212
Web-сайт:
Профиль | | #4
Добавлено: 16.03.10 16:37
подробнее?
Номер ответа: 5
Автор ответа:
Sharp
Лидер форума
ICQ: 216865379
Вопросов: 106
Ответов: 9979
Web-сайт:
Профиль | | #5
Добавлено: 16.03.10 23:21
Даже если структура имеет длину 7 байт, она почти наверняка не находится в памяти по адресам 0, 7, 14 и т.д., а скорее всего 0, 8, 16 и т.д.
Номер ответа: 6
Автор ответа:
AWP
ICQ: 345685652
Вопросов: 96
Ответов: 1212
Web-сайт:
Профиль | | #6
Добавлено: 16.03.10 23:24
это зависит от типов переменных внутри структуры?
Номер ответа: 7
Автор ответа:
Winand
Вопросов: 87
Ответов: 2795
Web-сайт:
Профиль | | #7
Добавлено: 17.03.10 00:48
Не знаю поможет ли это, но вот какие изыскания я получил:
LenB=1
LenB=8
Номер ответа: 8
Автор ответа:
AWP
ICQ: 345685652
Вопросов: 96
Ответов: 1212
Web-сайт:
Профиль | | #8
Добавлено: 17.03.10 01:13
Спасибо. Помогли, я всегда Функцией Len измерял, не думал, что она только для строк правильно работает.
Получилось что размеры идут как-то так: 1, 2, 4, 6, 8, 12, 16. Странная последовательность.
Номер ответа: 9
Автор ответа:
Winand
Вопросов: 87
Ответов: 2795
Web-сайт:
Профиль | | #9
Добавлено: 17.03.10 01:30
*бхах) ну если уж точно, то для строк Len тоже неправильно работает. Строки хранятся в юникоде по 2 байта на символ, а Len возвращается вдвое меньше)
Номер ответа: 10
Автор ответа:
Администратор
ICQ: 278109632
Вопросов: 42
Ответов: 3949
Web-сайт:
Профиль | | #10
Добавлено: 05.04.10 18:57
Функция работает правильно, просто надо почитать, для чего она предназначена Для определения количества символов в строке.