Нативный CopyMemory24.09.2023, 11:14. Показов 9847. Ответов 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 |
|
Вернулся
1748 / 644 / 45
Регистрация: 10.09.2021
Сообщений: 2,786
|
|
| 30.11.2023, 15:06 | |
|
0
|
|
| 30.11.2023, 15:14 [ТС] | |
|
HackerVlad, факт есть, а вот практической значимости я так и не смог найти. Есть еще один факт, еще мене значимый, но более загадочный, что StrPtr принимает не только строку но и long, но вот цифры, которые он(она х.з) при этом возвращает, я не смог разгадать..
0
|
|
|
Вернулся
1748 / 644 / 45
Регистрация: 10.09.2021
Сообщений: 2,786
|
|||
| 30.11.2023, 17:32 | |||
|
Добавлено через 38 секунд StrPtr он мой, а если функция то она моя Добавлено через 1 минуту Добавлено через 2 минуты а если втюхивать Long то наверное значит адрес на переменную лонг по логике, хотя хрен его знает! The Trick, думаю, точно знает...
0
|
|||
| 30.11.2023, 17:59 [ТС] | |
|
Когда ты вводдишь strptr( то видишь подсказку, что параметр должен быть строковый, но, фактически, функция хавает еще variant и long. И это очень быстрая функция, которая ожидаемо должна быть простой по алгоритму. Ну там наверное без ассемблера не обошлось
Добавлено через 5 минут Это могла быть функция тупо читающая указтель по указателю (что она и делает) в любых условиях, и это было бы суперполезно.. но тут другая логика, которая очень часто прослеживается в VB..
0
|
|
|
Вернулся
1748 / 644 / 45
Регистрация: 10.09.2021
Сообщений: 2,786
|
|
| 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
|
||||||
|
Вернулся
1748 / 644 / 45
Регистрация: 10.09.2021
Сообщений: 2,786
|
|
| 11.03.2024, 22:59 | |
|
0
|
|
| 17.07.2025, 14:58 [ТС] | |||||||
|
В истории VBA, кажется произошло что-то колоссальное! На Гитхабе появился код, позволяющий манипулировать указателями в памяти чистыми средствами VBA, без объявления api-деклараций https://github.com/WNKLER/RefTypes. Я это узнал, поскольку подписан на Кристиана Буса, а он сделал "Starred" на этот репозиторий. Там была такая аннотация
2
|
|||||||
|
dive
4988 / 4731 / 849
Регистрация: 13.04.2015
Сообщений: 9,958
|
|
| 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 Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Клиент
Uhbif79 18.06.2026
Здесь простой клиент для работы с сервером.
|
Сервер
Uhbif79 18.06.2026
Выкладываю простейший сервер.
|
Дефенестрация
kumehtar 18.06.2026
Узнал интересное слово. Дефенестрация. Это когда ты выбрасываешь кого-либо или что-либо из окна. Возьму на вооружение)))
|
Дихотомия добра и зла
kumehtar 18.06.2026
Как Дзен-буддисты говорят о добре и зле: не нужно воевать против зла, нужно воевать против невежества. Тогда добро станет ествественным, и поэтому вечным. Но дело в том, что невежество всё время. . .
|
|
Своя Интернет-Компания
iceja 18.06.2026
Я программист с экономическим образованием, пишу свой проект, это SaaS для бизнесов. Мне нужен co-founder с высшим экономическим образованием, и/ или инвестор. Сейчас проект в интенсивной разработке,. . .
|
24 Мат модель здравосохранения: функциональные требования к строительству пищеблока
anaschu 18.06.2026
СРесурсами1: финансовый SD-контур, калькулятор функциональных требований пищеблока
Сегодня разделили затраты в агенте Экономика по образцу модели НАСОСЫ, добавили расчёт ROI и построили первый. . .
|
23. что сделано за последнее время.
anaschu 17.06.2026
• Эталон: Клиника НИИ питания РАМН, Москва — централизованный пищеблок, 225 коек, 180 пациентов
• Git: репозиторий med2, ветка абсентеизм. Рабочий файл: СРесурсами1_v4. alp
• Смежный проект:. . .
|
22. Подключение слоя системной динамики (потоковые диффуры): экономические метрики модели
anaschu 17.06.2026
Апдейт модели: финансовый контур, разделение затрат
Продолжаю развивать модель рабочего коллектива на AnyLogic. В этот раз работа шла над агентом Экономика — финансовым SD-слоем модели. Задача:. . .
|