Нативный CopyMemory24.09.2023, 11:14. Показов 8745. Ответов 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 |
| 22.11.2023, 10:18 | |
|
0
|
|
|
Испарился
1741 / 637 / 45
Регистрация: 10.09.2021
Сообщений: 2,769
|
|
| 22.11.2023, 11:46 | |
|
да надо самому научиться пользоваться дизассемблером
реверс-инженеринг - это интересно Добавлено через 1 минуту вот например, мне нужен был исходный код функции InputBox, если бы я получил этот исходный код сразу через дизассемблер например, то я сразу бы и узнал про функцию DialogBoxParam и кучу бы времени сэкономил Добавлено через 51 секунду самому можно быть маэстро короче
0
|
|
| 25.11.2023, 09:49 [ТС] | |
|
Небольшое лирическое отступление.
Кликните здесь для просмотра всего текста
Периодически можно увидеть вопрос, как можно защитить свой vba проект. Есть встроенная защита паролем, есть хак с правкой бинарника vba, но это не надежные способы. Не так давно появился Vba-compiler очень продуманый, который стоит как грузовик (если бы его у нас еще можно было купить )) Я кстати попробовал его в триал режиме, там действительно компилится библиотека, из которой функции подключаются через Declare (в vb использовать эту библиотеку не получилось) В этой связи думается, что, так скажем, 32-битная эпоха, длившаяся очень долго, была на самом деле золотым временем в VBA. Потому, что макросы VBA можно было спокойно и легко писать на VB6 и компилить в библиотеку. И уровень защиты отличный + 2x скорость. Сейчас, конечно везде и всюду x64.. И в этом плане для VBA-шников, я думаю, также как и для других пользователей VB должен быть интересен Twin Basic.. Сам я пока не пользовался, и не видел большого энтузиазма от местных респондентов, так понимаю, продукт сырой.. Собственно, на этом мысль заканчивется..
Добавлено через 23 минуты Продолжение мысли:
Или вопросы типа "как ограничить использование файла по времени". Гипотетически это легко все можно было бы реализовать в виде vb-шной библиотеки. Коненчо существует С++ xll, но на VB то это все гораздо проще.
0
|
|
|
Испарился
1741 / 637 / 45
Регистрация: 10.09.2021
Сообщений: 2,769
|
||
| 25.11.2023, 13:43 | ||
|
0
|
||
| 25.11.2023, 16:02 [ТС] | ||
|
0
|
||
| 26.11.2023, 04:57 [ТС] | |
|
The trick, но там же не получится подключить 64й Excel в референсах и использовать все его типы и объекты, я не проверял конечно, но, что точно, это нельзя будет использовать в одном потоке с vba
0
|
|
| 27.11.2023, 12:31 [ТС] | ||||||||
|
Простой код
Добавлено через 18 минут Хорошую информацию нашел (перевод)
0
|
||||||||
| 28.11.2023, 04:35 [ТС] | ||||||
|
The trick, такое же поведение, как и в предыдущих случаях с tlb первый вызов нормальный, на втором случается это
А это же еще и cdecl..
0
|
||||||
|
Испарился
1741 / 637 / 45
Регистрация: 10.09.2021
Сообщений: 2,769
|
||
| 28.11.2023, 19:32 | ||
|
Добавлено через 52 секунды testuser2, ты тут самый активный кстати по моему)))
1
|
||
|
Модератор
|
|||
| 28.11.2023, 21:12 | |||
|
0
|
|||
|
Испарился
1741 / 637 / 45
Регистрация: 10.09.2021
Сообщений: 2,769
|
||
| 29.11.2023, 11:12 | ||
|
Добавлено через 58 секунд fafalone кстати это наверное примерно такой же гений как и the trick
2
|
||
| 30.11.2023, 04:59 [ТС] | ||||||
|
The trick, блин, я что-то понапутал со своими CM-ками видимо ) Скажи пожалуйста, как в TLB прописать 64 битный параметр?
Добавлено через 6 минут Вижу в Windows Data Tipes есть LONG_PTR может быть его прописывать в odl? Добавлено через 2 часа 21 минуту Точно, это он. 3 параметр это size_t
0
|
||||||
| 30.11.2023, 14:23 [ТС] | ||||||
|
Это я думал, что в odl поддерживаютя стандартные типы windows, он же вроде с-подобный такой, даже не знаю, можно ли там делать проверку типа #If Win64, но, сделать универсальную кроссбитную тлб на самом деле оказалось очень просто - 3й параметр надо задекларить как void (без звездочки) и все закрутилось на vba x64, при чем там быстрее оказалось на 12%. Проверил таже RtlCopyMemory (доступную в 64битной версии kernel32) и она оказалась медленей чем Move на 10%.
Добавлено через 2 часа 38 минут C tlb-шкой можно строки копировать так (без StrPtr)
1
|
||||||
| 30.11.2023, 14:23 | |
|
Помогаю со студенческими работами здесь
100
CopyMemory жжет
memcpy/CopyMemory + 2-мерный динамический массив CreateFileMapping ошибка в CopyMemory Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Камера 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, то после закрытия окошка. . .
|
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога
Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
|