Нативный CopyMemory24.09.2023, 11:14. Показов 10743. Ответов 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
|
|
|
Вернулся
1754 / 650 / 45
Регистрация: 10.09.2021
Сообщений: 2,807
|
|
| 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
|
|
|
Вернулся
1754 / 650 / 45
Регистрация: 10.09.2021
Сообщений: 2,807
|
||
| 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
|
||||||
|
Вернулся
1754 / 650 / 45
Регистрация: 10.09.2021
Сообщений: 2,807
|
||
| 28.11.2023, 19:32 | ||
|
Добавлено через 52 секунды testuser2, ты тут самый активный кстати по моему)))
1
|
||
|
Модератор
|
|||
| 28.11.2023, 21:12 | |||
|
0
|
|||
|
Вернулся
1754 / 650 / 45
Регистрация: 10.09.2021
Сообщений: 2,807
|
||
| 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 | |
|
CopyMemory жжет
memcpy/CopyMemory + 2-мерный динамический массив CreateFileMapping ошибка в CopyMemory Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Как у меня протекала болезнь
zorxor 27.08.2026
Здравствуйте, друзья! Эта запись блога предназначена именно для вас - для моих дорогих друзей, которые знали меня лично. Чтобы ответить на вопрос - а что же со мной произошло на самом деле? Я учился. . .
|
Нашел вот забавное видео о измерениях. Лучшее что я видел на эту тему
kumehtar 26.08.2026
ILETXiw9bMQ
Основная суть и тезисы по измерениям:
0D (Нулевое измерение): точка, не имеющая длины, ширины, высоты или объема.
Объект не может перемещаться в 0D.
1D (Первое измерение):. . .
|
[EasyBuilder Pro] Памятка по разработке для панелей Weintek
ФедосеевПавел 26.08.2026
Памятка по разработке для панелей Weintek
ВВЕДЕНИЕ
Ранее, при реализации проектов основное внимание уделял разработке управляющей программы для контроллера, а панели оператора доставалось время. . .
|
Модель по догадкам
anaschu 25.08.2026
Прошло две недели. Я уже рассказывал, как разговаривал с сотрудниками у сортировки и как понял, что главная ветка — не про приёмку, а про отбор. Но тогда я думал, что понял механику. На этой неделе я. . .
|
|
Запись в регистр сведений независимо от заполненности табличной части
Maks 25.08.2026
Реализация из решения ниже выполнена на нетиповом документе с несколькими табличными частями, разработанного в КА2.
Задача:
Обеспечить запись документа в регистр сведений независимо от. . .
|
Ноутбук Альфария
kumehtar 24.08.2026
Встретился тут в сети ноутбук Альфария, примарха Альфа-Легиона. Хотя возможно, это ноутбук Омегона, разумеется.
Ну как вам?
|
Мастера простых решений
DevAlt 23.08.2026
В сишарп стэках winforms, да и wpf существует сложная система связывания
источниках данных и элементов формы(текстовые поля и метки), опирается все
это на технологию событий и мета. . .
|
Цена ошибки
DevAlt 23.08.2026
Человек я беспокойный и потому заинтересовался OCaml,
в чате форсили функторы модулей как суперфичу.
Пытаясь отдуплить концепт, наткнулся на тутор с простым примером.
А главный принцип обучения от. . .
|