Нативный CopyMemory24.09.2023, 11:14. Показов 8751. Ответов 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 |
|
Испарился
1741 / 637 / 45
Регистрация: 10.09.2021
Сообщений: 2,769
|
|
| 30.11.2023, 15:06 | |
|
0
|
|
| 30.11.2023, 15:14 [ТС] | |
|
HackerVlad, факт есть, а вот практической значимости я так и не смог найти. Есть еще один факт, еще мене значимый, но более загадочный, что StrPtr принимает не только строку но и long, но вот цифры, которые он(она х.з) при этом возвращает, я не смог разгадать..
0
|
|
|
Испарился
1741 / 637 / 45
Регистрация: 10.09.2021
Сообщений: 2,769
|
|||
| 30.11.2023, 17:32 | |||
|
Добавлено через 38 секунд StrPtr он мой, а если функция то она моя Добавлено через 1 минуту Добавлено через 2 минуты а если втюхивать Long то наверное значит адрес на переменную лонг по логике, хотя хрен его знает! The Trick, думаю, точно знает...
0
|
|||
| 30.11.2023, 17:59 [ТС] | |
|
Когда ты вводдишь strptr( то видишь подсказку, что параметр должен быть строковый, но, фактически, функция хавает еще variant и long. И это очень быстрая функция, которая ожидаемо должна быть простой по алгоритму. Ну там наверное без ассемблера не обошлось
Добавлено через 5 минут Это могла быть функция тупо читающая указтель по указателю (что она и делает) в любых условиях, и это было бы суперполезно.. но тут другая логика, которая очень часто прослеживается в VB..
0
|
|
|
Испарился
1741 / 637 / 45
Регистрация: 10.09.2021
Сообщений: 2,769
|
|
| 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
|
||||||
|
Испарился
1741 / 637 / 45
Регистрация: 10.09.2021
Сообщений: 2,769
|
|
| 11.03.2024, 22:59 | |
|
0
|
|
| 17.07.2025, 14:58 [ТС] | |||||||
|
В истории VBA, кажется произошло что-то колоссальное! На Гитхабе появился код, позволяющий манипулировать указателями в памяти чистыми средствами VBA, без объявления api-деклараций https://github.com/WNKLER/RefTypes. Я это узнал, поскольку подписан на Кристиана Буса, а он сделал "Starred" на этот репозиторий. Там была такая аннотация
2
|
|||||||
|
sleep
4931 / 4593 / 840
Регистрация: 13.04.2015
Сообщений: 9,752
|
|
| 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 | |
|
Помогаю со студенческими работами здесь
120
CopyMemory жжет
memcpy/CopyMemory + 2-мерный динамический массив CreateFileMapping ошибка в CopyMemory Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Символьное дифференцирование
igorrr37 13.02.2026
/ *
Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2).
Унарный минус обозначается как !
*/
#include <iostream>
#include <stack>
#include <cctype>. . .
|
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
|
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу,
и светлой Луне.
В мире
покоя нет
и люди
не могут жить в тишине.
А жить им немного лет.
|
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила»
«Время-Деньги»
«Деньги -Пуля»
|
|
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога
Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога
Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
|
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
|