С++-библиотека-фреймворк для VBxx07.10.2025, 02:21. Показов 4051. Ответов 41
Метки нет (Все метки)
Всязи с недавно открывшейся возможностью по написанию такой библиотеки, появилась мысль по написанию такой библиотеки, хотя такая мысль была у меня давно, но не было возмжоности, а теперь есть возможность, надо бы найти мысль, надо ее вспомнить, то о чем я думал. Если перейти к конкретике, я думал, о том, чего не хватает в VB и то что это на самом деле не так сложно восполнить, зная С/С++ (или другие компилируемые языки, тот же пурик, дельфин и пр.). Чуть позже составлю примерный список из того, что можно было реализовать исходя из моего слегка ограниченного видения..
Добавлено через 11 минут 1) InStr для массивов. Итак, начнем с функции InStr. Не хватает реализации этой функции для массивов, говоря по иному, чтобы функция могла искать блок памияти в другом блоке памяти, реализовать хочу, как поиск любого массива внутри любого массива (не ссылочного ест-но) 2) RichEdit также как здесь. Это сложновато, но надеюсь на нейросеть и ее натасканность нейросетей на C++ и готовую кодовую базу по этому оконному элементу. 3) различные строковые функции из js/php/python. 4) MemCopy, GetMem*, PutMem* для VBA
0
|
|
| 07.10.2025, 02:21 | |
|
Ответы с готовыми решениями:
41
Можно ли программно подключить библиотеку VBA, в частности библиотеку Microsoft Visual Basic for Application Extensebility?
Помогите пожалуйста с Инициализацией Dll библиотеки |
|
bite
5011 / 4841 / 852
Регистрация: 13.04.2015
Сообщений: 10,121
|
||
| 06.11.2025, 19:44 | ||
|
0
|
||
|
bite
5011 / 4841 / 852
Регистрация: 13.04.2015
Сообщений: 10,121
|
|
| 06.11.2025, 20:10 | |
|
1
|
|
| 07.11.2025, 02:21 [ТС] | |
|
Меня вот вопрос мучает, но я ни как не могу сообразить. Вот ищем подстроку в строке, совпал первый символ, после этого начинаем 2й внутренний цикл на сопоставление остальных символов. Если 2й цикл не отрабатывает полностью, то мы возвращаемся на 1й цикл. Вопрос должны ли мы возвратиться в ту же позициую, с которой перешли во второй цикл, или же продолжить с той позиции, на которой закончил 2й цикл?
Добавлено через 39 минут Первый вариант правильный. Это понятно на прмере, если искать "aab" в "aaabbbaaa"
0
|
|
|
|
|||||||
| 07.11.2025, 05:06 | |||||||
|
"Функция find() возвращает индекс первого вхождения подстроки или отдельного символа в строке в виде значния типа size_t:"
0
|
|||||||
| 07.11.2025, 07:35 [ТС] | ||||||
|
Argus19, смотря какой массив, если там нуль-чары, то, может быть find и не подойдет. Допустим я хочу в бинариках копаться..
Добавлено через 2 минуты Я знаю, что есть winapi strstr и пр., но то, что для текста, как правило "боится" нулевых символов (кроме вбшного instra) Добавлено через 2 часа 3 минуты И вновь исправленный вариант инстра. Самое дурное, что я уже раньше не раз разбирал этот инстр по полочкам, реализовывал его на VBA и Twin Basic, в т.ч. с указателями, но мне всегда лень смотреть и искать старые коды. Кликните здесь для просмотра всего текста
В дальнейшем я хочу реорганизовать эту функцию в C-макрос с байтовым поиском, а на основе этого макроса, сделать поиск для строк и массивов, and Any. Да, конечно стоит посмотреть встроенные функции C/C++ для поиска байт
0
|
||||||
| 08.11.2025, 15:55 [ТС] | |||||||||||||||||||||
|
Попытался реализовать групповое присваивание, как в Твинбейсике, но получилось сделать это только на VBA ито с некоторыми нюансами, лишний аргумент понадобися в Property Get. The trick, ты не мог бы подсказать, в чем может быть причина. Ошибка - что-то свзяанное с DLL.
VB-реализация
C-реализация
Весь проект сдесь. Добавлено через 17 минут кажется я начинаю догадываться, наверное это обе должны быть функции, которые возвращают HRESULT Добавлено через 25 минут Сделал тестовую библиотечку на VB6, будем разбираться Кликните здесь для просмотра всего текста
Добавлено через 46 минут Кажется я еще раз начал догадывться - propget надо реализовывать не как функцию, а как GetMem
0
|
|||||||||||||||||||||
| 09.11.2025, 09:30 [ТС] | |||||||||||||||||
|
В общем причина выяснена, winapi функция VariantCopy не правильно копирует ссылки. Однако есть еще VariantCopyInd, которая
0
|
|||||||||||||||||
| 11.11.2025, 17:17 [ТС] | |
|
В сегоднешнем "выпуске" своего псевдо-блога Занимательные ручки, я хотел бы сделать лирическое отступление, не флуда ради, но, может быть, лучшего в какой-то степени понимания некоторых принципиальных вещей, ибо, когда мы о чем-то говорим, мы не редко начинаем лучше это понимать, в каких - аспектах.
многотекста
Есть несколько причин, которые немного мешают мне, в продвижении развития данной библиотеки. 1я это время, ускользающее как песок сквозь сито, 2я, можно скать, психологическая, в виду ожидаемой сложности, того что я хотел бы реализовать и не навязчиво гнетущей мысли, о том, что, возможно, библиотека будет не достаточно прекрасной без данного составляющего сегмента (хотя это, безусловно спорный вопрос, поскольку почему бы именно в этой библиотеке и пр. и пр. не очевидно). А реализовать бы я хотел одну, не много не мало, концептуальную, вещь, достаточно простую в понимании но, не достаточно простую в реализации. Для этой вещи, во-первых мне нужны все-возможные строковые функции, идеи, с которыми в принципе нет ни каких проблэм, они имеются, во-вторых это текстовый редактор, с подстветкой синтаксиса. С этим было бы все гораздо проще, если бы существовал стандартный контрол RichTextBox под x64, который прекрасно существует под x86 в VB6, также он доступен в x86 vba, но все уже менее прекрасно, поскольку, при его установке где-нибудь, вас начнут преследовать не навязчивые, но строго-регламентированные предупреждения (при каждом включении) о небезопасности этого устаревшего агрегата. Учитывая мою некоторую зацикленность на vba, самоопределяющаяся потребность в относительно современном x64 текстовом аппарате стала как нельзя очевидной.
Я кстати пробовал тот "устаревший аппарат" и он мне не малым понравился, даже учитывая отсутствие некоторых базвовых вещей, таких как получение длины содержащегося текста (по моему там даже такого нет, но строку по номеру строки (изв. за тафталогию) там стандартно не получить, это я помню точно). Итак, что же на ближайшем горизонте - это, без сомнения, стандартный оконный класс RichEdit, тем более что реализацию для работы с ним я видел на vbforums, и, надо сказать, она не так проста, как это можно представить. Другой вариант библиотека scintilla.dll, реализацию которой я также видел на vbforums (ныне не очен доступен в моем регионе/операторе) и там автор пишет, не много не мало, о нескольких месяцах работы над реализацией. И это прям вау!, столько времени потратить на.. хмм неужели все так сложно.. Добавлено через 2 часа 31 минуту Следующая часть "выпуска" будет посвящена сложности написания кода в C, которые могут возникнуть у любого (например у меня), кто, например, привык кодить на VB и др. похожих языка, например JS (шутка). Одно из первых что может сбивать с толку это семантика указателей, которая, подчас может выглядеть не достаточно интуитивно, как, может быть, хотелось бы этого ожидать, другой вопрос, как могло бы это быть если бы это было как-то по другому, также, не в малости сложны, поэтому не будем вдаваться в какие-то критические рассуждения, а просто попытаемся осмыслить, что жэ это такое. Кликните здесь для просмотра всего текста
Когда мы видим переменную
char *pcBuf, то мозг безусловно хочет ассоциировать суть переменной, с ее литеральным названием. Говоря о сути я име в виду данные переменной - тот участок памяти, в котором хранится значение этой переменной (в данном случае в формате char). В VB (также как и во многих других, в особенности скриптовых ЯП) переменная это имя, имя это переменная, а то, что у ней могут быть какие-то указатели в скрытом не видимом бэкграунде, про это можно конечно помнить и знать, но не свосем обязательно. В C не так, там pcBuf это указатель (и буква p должна нам об этом напоминать), тобеж целочисленное 32/64 битное значение, в д. сл. указывающее на то место, где лежит значение переменно. А вот звездочка, уже раскрывает главную сущность переменной, получить ее значение, т.е. *pcBuf это значение. Поэтому присвоение значения одной переменной другой (имеющих указатель) будет выглядеть так *pcBuf = *pcBuf2а это pcBuf = pcBuf2 - присвоение указателя одной переменной другой. Однако путаница может возникнуть в это месте char *pcBuf = pcBuf2 - сдесь будет присвоение именно указателя одной переменной указателю другой, хотя можно было бы подумать, что в значение пытаются записать указатель. Тобеж при инициализации, работает какбы другая логика, она конечно во многом удобная, но ..Я думаю, человек привыкший к VB (возможно даже любой подавляюще статистический) хочет увидеть имя переменной, олицетворяющее ее значение и ее суть, а указатель если он есть, то это как некий хвостик, некая приставка. Т.е. допустим, далеко не отходя от синтаксиса C данная логика могла бы выглядеть так pcBuf - значение&pcBuf - указатель&&ppcBuf - указатель на указатель (если такой у переменной имеется)pcBuf = pcBuf2 - присвоение значения&pcBuf=&ppcData - присвоение указателя (первого уровня)Поскольку прозвучали некие намеки на, как бы, критику С, будет справедливым также немного покритиковать VB. В VB, чтобы передать массив ByRef нужно обязатлельно передавать указатель на указатель SAFEARRAY в стек, когда во многих случаях могло бы хватить одного указателя на SAFEARRAY. Чтобы передать строку ByRef в VB-шных функциях нужно обязательно передавать в стек указатель на переменную содержаую указатель буфера BSTR, хотя где-то было бы лучше передать указатель на BSTR. Это было бы возможно, наверное если бы в VB поддерживался оператор const.
0
|
|
| 12.11.2025, 01:52 [ТС] | ||
char @rcSrc = rrsaSrc->pvData
0
|
||
|
Модератор
|
|||
| 12.11.2025, 09:27 | |||
|
testuser2, instrB Использует
1
|
|||
| 12.11.2025, 12:39 [ТС] | |
|
The trick, спасибо посмотрю, как будет возможность
Добавлено через 2 часа 53 минуты The trick, а что это за программа, что она делает? Я нашел там контрол для работы со скинтиллой (там в принципе понятно, работает через сообщения окну), но к сожалению не нашел, как увидеть окно с подстветкой какого-нибудь текста. Нет, в принципе, конечно понятно, что работаь с ней можно. Но скинтилла, конечно это должен быть чрезвычайно мощный инструмент, для меня пожалуй, наверное достаточно будет Rich Edit. Кстати, для скинтиллы, вроде какой-то даже activex существует.
0
|
|
| 13.11.2025, 18:00 [ТС] | |
|
Я слышал когда-то, что в музыкальной индустрии, скрипты очень в ходу. У меня вообще мысль, сделать, для начала, альтернативный редактор формул для Эксель, идея фикс конечно сделать редактор для VBA (вспомогательный), но доберусь я к этому наверное может быть к новому году.
Добавлено через 11 минут Cделал запрос, на поддержку макросов в оффисных документов в техподдержку GitVerse, мне ответили, что зафиксировали мое пожелание, так что может быть и появится, будем подождать.. Добавлено через 4 часа 13 минут Лайвхак для VB-шников - если заметили, что вы косячите в условиях (в Си) - вместо == пишете =, то эти косяки можно найти такой регуляркой if \(\*?\w+ ?[=]{1} ?\*?\w+Добавлено через 7 минут А так можно исправить такие случае нужно это (if \(\*?\w+ ?)[=]( ?\*?\w+) заменить на это $1==$2
0
|
|
| 14.11.2025, 01:23 [ТС] | |
|
Сделал функцию InStrRevB, но вот не задача, не обратил внимания, что в оригинальном InStrRev параметр Start считается от начала строки, я же сделал прямой счет от конца (отрицательные значения Start считаются от начала). T.е. Start:=1 у меня это будет 1й символ с конца строки. Но функция-то ищет от конца и сама логика какбы подсказывает считать от конца. В связи с этим нужен консилиум VB-сообщества, как все-таки лучше считать от конца, или более консервативный т.ск. вариант?
0
|
|
| 15.11.2025, 10:56 [ТС] | |
|
The trick, я так и сделал, пусть лучше будет как в оригинале )
Добавлено через 1 час 10 минут Еще один лайвхак с регулярками. Если вам нужно создать C-макрос из какого-то участка кода, то его во-первых нужно скопировать куда нужно, затем нужно каждую строчку экранировать обратным слешем. Чтобы не делать это "в-ручную" надо выделить весь код и во вставке/замене заменить (\r\n) на \$1
0
|
|
| 15.11.2025, 10:56 | |
|
Классы, динамические библиотеки. VB6 Не хватает библиотеки Подключение нужных библиотек при переносе программы на другой ПК Электронные библиотеки или кто откуда качает киниги Где можно скачать библиотеку чтобы рисовать в VISIO стены, двери или окна Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Часы с термометром и праздничным календарем
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. А теперь человек произносит «мастдай» с усмешкой - и. . .
|