Нативный CopyMemory24.09.2023, 11:14. Показов 11565. Ответов 122
Метки рассуждения (Все метки)
Натолкнуло на рассуждения, уже ранее упомянутое.. В общем то уже ранее слышал, про замедление работы апишных функций в современных реалиях. Собственно вопрос, возможно ли копирование блока/участка с динамически меняющимся (настраиваемым) значением(?). Собственно копирование то возможно блоков разного размера, есл говорить о больших - замапив на оба блока массивы и выполнив присвоения в цикле с одного массива в другой. Тесты показывают, что блок одинакового размера копируется в 4 раза быстрей с помощью массива long, нежели битового и также в других случаях - чем меньше итераций, тем кратно быстрей. Можно копировать и большие блоки за одну операцию средствами VB. Если создать тип, с фиксированным массивом внутри, то один экземпляр типа (фактически массив) можно присвоить другому экземпляру типа. С динамическими массивами так не получится, блок перезаписывается, также как и у строк. С другой стороны у фиксированого массива свои недостатки, его нельзя замапить изменить его заголовочную структуру и даже поменять указатель на нее
0
|
||||||
| 24.09.2023, 11:14 | |
|
Ответы с готовыми решениями:
122
Private Declare Sub CopyMemory Lib 'kernel32' Alias 'RtlMoveMemory' (Destination As Any, Source As Any, ByVal Length As Long) В WinXP не работает API процедура CopyMemory. Что делать? Почему указатель нулевой при CopyMemory |
|
Вернулся
1782 / 677 / 46
Регистрация: 10.09.2021
Сообщений: 2,840
|
|
| 30.11.2023, 15:06 | |
|
0
|
|
| 30.11.2023, 15:14 [ТС] | |
|
HackerVlad, факт есть, а вот практической значимости я так и не смог найти. Есть еще один факт, еще мене значимый, но более загадочный, что StrPtr принимает не только строку но и long, но вот цифры, которые он(она х.з) при этом возвращает, я не смог разгадать..
0
|
|
|
Вернулся
1782 / 677 / 46
Регистрация: 10.09.2021
Сообщений: 2,840
|
|||
| 30.11.2023, 17:32 | |||
|
Добавлено через 38 секунд StrPtr он мой, а если функция то она моя Добавлено через 1 минуту Добавлено через 2 минуты а если втюхивать Long то наверное значит адрес на переменную лонг по логике, хотя хрен его знает! The Trick, думаю, точно знает...
0
|
|||
| 30.11.2023, 17:59 [ТС] | |
|
Когда ты вводдишь strptr( то видишь подсказку, что параметр должен быть строковый, но, фактически, функция хавает еще variant и long. И это очень быстрая функция, которая ожидаемо должна быть простой по алгоритму. Ну там наверное без ассемблера не обошлось
Добавлено через 5 минут Это могла быть функция тупо читающая указтель по указателю (что она и делает) в любых условиях, и это было бы суперполезно.. но тут другая логика, которая очень часто прослеживается в VB..
0
|
|
|
Вернулся
1782 / 677 / 46
Регистрация: 10.09.2021
Сообщений: 2,840
|
|
| 30.11.2023, 18:17 | |
|
Вообще StrPtr и VarPtr это недокументированные функции VB, поэтому они могли её написать чисто для себя майкры эти, и могли особо не заморачиваться с проверками, а строка там или не строка...
Добавлено через 1 минуту Фактически это значит, что в майкрософте думали чтобы этими функциями StrPtr и VarPtr никто не будет пользоваться... А на деле вышло всё нооборот все ими только и пользуются ибо очень полезно! Добавлено через 3 минуты Когда создавался VB6 в майкрософте думали что все будут пользоваться ANSI строками, так как в 1998 году в Windows98 небыло встроенной поддержки юникода Добавлено через 46 секунд И это просто чудо, что на то время, они почему-то всё же сделали строки в VB в кодировке UTF-16 LE, это нам просто очень повезло. Добавлено через 3 минуты А вот например в дельфи строки в ANSI Добавлено через 4 минуты Вот полезная ссылка по этой теме: https://learn.microsoft.com/ru... dfrom=MSDN
1
|
|
| 11.03.2024, 11:52 [ТС] | ||||||
|
Небольшой тест на копирование перекрывающейся области. Что будет если копировать присвоением? Как я понимаю, присвоение в VB происходит методом "Move" (?). Второй результат при копировании функцией Mikle Quits, у него наверное "Copy", 3й - функция RtlCopyMemory (на vba x64), 4й "__vbaCopyBytes"
0
|
||||||
|
Вернулся
1782 / 677 / 46
Регистрация: 10.09.2021
Сообщений: 2,840
|
|
| 11.03.2024, 22:59 | |
|
0
|
|
| 17.07.2025, 14:58 [ТС] | |||||||
|
В истории VBA, кажется произошло что-то колоссальное! На Гитхабе появился код, позволяющий манипулировать указателями в памяти чистыми средствами VBA, без объявления api-деклараций https://github.com/WNKLER/RefTypes. Я это узнал, поскольку подписан на Кристиана Буса, а он сделал "Starred" на этот репозиторий. Там была такая аннотация
2
|
|||||||
|
bite
5011 / 4841 / 852
Регистрация: 13.04.2015
Сообщений: 10,121
|
|
| 17.07.2025, 19:03 | |
|
0
|
|
|
|
|||
| 18.07.2025, 12:25 | |||
|
Как можно было не понять написанное мной? Я написал
Далее я написал Прочитайте название темы - "Нативный CopyMemory". Где в 110 сообщении нативная функция VBA? Может в коде с гита используется цикл как я написал?
0
|
|||
| 18.07.2025, 12:56 [ТС] | ||||
|
0
|
||||
|
|
|||
| 18.07.2025, 13:04 | |||
|
0
|
|||
| 18.07.2025, 13:32 [ТС] | ||||
|
0
|
||||
| 18.07.2025, 13:32 | |
|
CopyMemory жжет
memcpy/CopyMemory + 2-мерный динамический массив CreateFileMapping ошибка в CopyMemory Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Часы с термометром и праздничным календарем
yariko 12.11.2026
Сегодня мы рассмотрим как можно сделать отличные многофункциональные часы.
Итак, поставим конкретную задачу: разработать часы с календарем, двумя термодатчиками, выводом поздравительных сообщений. . .
|
Транслитерация текста с кириллицы на латиницу (вариант №1)
Maks 11.11.2026
Решил облегчить жизнь себе и коллегам админам при создании электронных почтовых ящиков для пользователей, в результате написал обработку "Транслитерация текста" с кириллицы на латиницу, а в ней. . .
|
Книги по геймдизайну, левел-дизайну, игровым механикам и проектированию игрового опыта
8Observer8 08.11.2026
Содержание блога | English Version
1. 2003 - 06 - Designing Virtual Worlds (1st Edition)
Автор: Richard A. Bartle | Объем: 768 стр.
Ссылки: Amazon
. . .
|
Родители токсичные абьюзеры по отношению к своим детям ругают их оскорбляют не любят
zorxor 08.11.2026
Жить в атмосфере постоянных оскорблений, критики и холодности со стороны родителей — это тяжелое и болезненное испытание, которое оставляет глубокие эмоциональные раны. Токсичное и абьюзивное. . .
|
|
Как только я захожу к себе в свою комнату я сразу же с себя снимаю свои трусы. Ответ от Джемени ИИ.
zorxor 08.11.2026
Джемени, как только я захожу к себе в свою комнату я сразу же с себя снимаю свои трусы.
Многие люди, возвращаясь домой, сразу переодеваются в максимально свободную одежду или вовсе предпочитают. . .
|
Паттерн очереди действий/команд (Action / Command Queue). Система очереди действий и кат-сцен с SDL3 Callbacks, cglm и OpenGL
8Observer8 07.11.2026
Содержание блога | English Version
Руководство для начинающих по реализации паттерна очереди действий/ команд (Action / Command Queue) на C++ (C++20) с использованием официального SDL3 Callbacks. . .
|
Проверка полного ФИО в типовом справочнике
Maks 07.11.2026
Решение реализовано в конфигурации КА2, на примере справочника "КонтактныеЛицаПартнеров".
Задача:
Запрет инициалов.
Не допускаеть использование сокращений вида "И. И. ", "И. И. ", "И И" и. . .
|
Про "Windows must die!"
kumehtar 04.11.2026
Знаете, чет накатило. . . .
Когда-то это было почти боевым кличем: мол, нормальный человек сидит на DOS, OS/ 2 или Linux, а вот это вот - Must Die. А теперь человек произносит «мастдай» с усмешкой - и. . .
|