Выбрать дату в календареВыбрать дату в календаре

Страницы: 1 2 3 4 5 6 7 8 9 10 11 ... 90 След.
Многопоточность в VBA
 
Сложность реализации сторонней многопоточной библы в том, как передать туда алгоритм, который должен выполнятся в потоках.
Предположем у нас есть массив с которым надо что то сделать. Передать массив, выделить потоки, посчитать сколько элементов в какой поток пойдет не вопрос. Сложность передать алгоритм, что делать с этими элементами ,в каком виде он будет? Ну и плюс не все алгоритмы можно эффективно распараллелить, но эту другой вопрос. Предположим алгоритм хорошо параллелится.
Изменено: bedvit - 24.09.2025 20:53:25
«Бритва Оккама» или «Принцип Калашникова»?
Многопоточность в VBA
 
testuser, а что должно быть в многопоточной функции из сторонней библиотеки, что бы она была нужна в VBA?
«Бритва Оккама» или «Принцип Калашникова»?
Многопоточность в VBA
 
testuser, не уловил мысль, поделитесь более подробной информацией, как это поможет при реализации многопоточности через СОМ библиотеку или другими методами?
«Бритва Оккама» или «Принцип Калашникова»?
Многопоточность в VBA
 
Цитата
nilske написал:
evgeniygeo , решение  платное , а ссылка секретная ))
прочитал с интересом тему. Судя по всему, товарищ проиграл другу.
Цитата
testuser написал:
биг-дату какую-нить пообрабатывать
У меня есть свои инструмент на С++ типа параллельный FOR, для любого количества передаваемых массивов (сам вычисляет количество потоков, под ядра ЦП, сам разбивает массивы на нужные блоки, сам обрабатывает ошибки и исключения и т.д.). Его можно упаковать в СОМ, но как прикрутить динамически изменяемую логику для обработки этих массивов из VBA в С++ я не знаю. Т.е. то что будет выполнятся в потоках, и пользователь на VBA сам указывал что. Передавать указатель на функцию - сомневаюсь, что интерпретатор VBA сможет обрабатывать параллельно функции если их вызвать из С++.  Можно сделать парсинг строки с каким то набором операторов, типа создать свой скриптовый язык... нужно ли это и стоит ли это таких усилий, кажется, что нет
Изменено: bedvit - 23.09.2025 09:49:07
«Бритва Оккама» или «Принцип Калашникова»?
Многопоточность в VBA
 
Цитата
AltцGamer написал:
Он утверждает, что такую библиотеку сложно реализовать на VBA
Он прав.

testuser, а для каких задач на VBA нужна многопоточность?
«Бритва Оккама» или «Принцип Калашникова»?
Многопоточность в VBA
 
В VBA можно зарустить ассинхронные процедуры, но сам VBA не поддерживает многопотосность.
«Бритва Оккама» или «Принцип Калашникова»?
Многопоточность в VBA
 
https://www.planetaexcel.ru/forum/?PAGE_NAME=read&FID=1&TID=120692
«Бритва Оккама» или «Принцип Калашникова»?
Инструменты для работы с массивами (XLL, COM): ListViev
 
Добавил возможность выгружать данные в новую или уже существующую сводную таблицу.
Давайте попробуем выгрузить  в сводную таблицу 100 000 000 строк...

Изменено: bedvit - 22.08.2025 15:46:32
«Бритва Оккама» или «Принцип Калашникова»?
100 000 000 строк в ListView за 15 секунд. Разгон с закисью азота.
 
KrutojBep, это мои инструменты, можно почитать здесь.
«Бритва Оккама» или «Принцип Калашникова»?
Инструменты для работы с массивами (XLL, COM): ListViev
 
AltцGamer, вот и попробуйте, и нам расскажите) По ссылке выше есть и 32 разрядная версия.
Сейчас столбцы вставляются в соответствии с загруженным диапазоном из Excel (если это XLL)  или массива (если это СОМ).
Существует и возможность доработки функционала, что бы вставлять столбцы прямо в форме. Пока это никому не нужно было, поэтому сейчас этого функционала нет.
Изменено: bedvit - 20.08.2025 08:50:20
«Бритва Оккама» или «Принцип Калашникова»?
Инструменты для работы с массивами (XLL, COM): ListViev
 
Кому интересно можно протестировать демо-версию, работают еще не все кнопки, но основные уже работают, см. рис. (и последние две работают, не отметил)


Скачать можно здесь.
Изменено: bedvit - 15.08.2025 18:00:27
«Бритва Оккама» или «Принцип Калашникова»?
100 000 000 строк в ListView за 15 секунд. Разгон с закисью азота.
 
Если без конвертации данных (без преобразования: число как текст - загружается с амперсандом (')), то можно уместится и в 4,3 секунды.

Изменено: bedvit - 15.08.2025 12:42:34
«Бритва Оккама» или «Принцип Калашникова»?
100 000 000 строк в ListView за 15 секунд. Разгон с закисью азота.
 
Мое почтение, джентльмены.
«Бритва Оккама» или «Принцип Калашникова»?
Инструменты для работы с массивами (XLL, COM): ListViev
 
Мое почтение, джентльмены.
К вашему вниманию ListViev для массивов COM SafeArray (VT_ARRAY | VT_VARIANT)

Умеет:
+Показывать данные из массива с возможностью редактирования в форме с помощью ListViev
+Сортировать
+Фильтровать
+Транспонировать
+Сериализовать данные в файл
+Десериализовать данные из файл
+Шифровать данные
+Выгружать на лист Excel в формате для выгрузки на лист Excel (числа как текст и т.д)
+Загружать данные с листа Excel
+Дозагружать данные с листа Excel
+Добавлять новые строки
+Удалять строки
+Перемещать строки

Немного статистики:
+Максимальное количество строк 100 000 000
+Максимальное количество столбцов ?

Тайминги:
Загрузка 100 000 000 строк -15 секунд

Если данный инструмент интересен залью в COM вам для тестирования.

Видео работы инструмента см. ниже.


«Бритва Оккама» или «Принцип Калашникова»?
Инструменты для работы с массивами (и не только) в VBA (и не толко)
 
Всем привет.
Сейчас для массивов кроме уже существующих инструментов:
+Сортировки
+Фильтрации
+Транспонирования
+Преобразования регистра
+Изменения размерности (добавление не только столбцов но и строк)
+Сериализации
+Шифрования
+Преобразования в формат для выгрузки на лист Excel (числа как строки и т.д)
Появились и новые:
++Удаление нужных столбцов или строк из массива
++Объединение двух массивов (количество столбцов может быть разное)
++Сравнение двух массивов (по размерности, количеству элементов в размерности, типу, значениям)
++UnPivot массива
++Объединение всех элементов через нужный разделитель в строку

+++Есть возможность добавить в СОМ свой конструктор форм на win api с контролами и функционалом, которого нет в VBA, смотри пример.
Здесь работы много, будет реализация если соберется необходимый минимум из спецов.

Этот инструментарий я использую и готов поделится.
Нужно лишь время для портирования в СОМ.

Что из нового будет интересно и что стоит забросить в СОМ?
Изменено: bedvit - 17.07.2025 10:12:35
«Бритва Оккама» или «Принцип Калашникова»?
Инструменты для работы с массивами в VBA (COM), Фильтр для массива
 
Недавно потребовался инструмент, который загружает и фильтрует данные из разных Excel-файлов. Решил сделать GUI для формирования условий для данного фильтра.
Пока это выглядит вот так
GUI можно использовать из библиотеки COM или XLL. Возвращает массив условий для фильтра и строку для пользователя для удобства.
Изменено: bedvit - 11.06.2025 23:14:59
«Бритва Оккама» или «Принцип Калашникова»?
Странное поведение Like (VBA)
 
sokol92, Владимир, спасибо за доп. информацию.
Остались нераскрыты несколько пунктов по ссылке:
1. "If either <expression> or <like-pattern-expression> is Null, the result is Null."
Видим что не всегда выполняется, пример:
Код
Debug.Print "" Like "[]" 'True. По ссылке: <expression> is Null, значит результат Null, т.е. False

2."<like-pattern-charlist-range>: This adds a range of characters to the character list, including all characters considered greater than or equal to the first <like-pattern-charlist-char> and considered less than or equal to the second <like-pattern-charlist-char>. If the end character of this range is considered less than the start character, runtime error 93 (Invalid pattern string) is raised."
Видим что условие выполняется в примере ниже, последний символ НЕ больше первого, но выдается ошибка, пример:
Код
Debug.Print "F" Like "*[F-F]" 'почему Error? ведь True

3.Ничего не поясняется про такой пример:
Код
Debug.Print "5" Like "*[1-4-6]" 'True - диапазон с конца маски?
Debug.Print "2" Like "[1-4-6]"  'True - диапазон с начала маски?
Debug.Print "-" Like "[1-2-3]" 'почему True? ведь "-" не в начале и не в конце.

4."The next characters in <like-pattern-expression> do not form a valid, complete <like-pattern-element> according to the grammar. In this case, runtime error 93 (Invalid pattern string) is raised. Note that this runtime error is only raised if no other result has been produced before pattern matching proceeds far enough to encounter this error in the pattern."
Код
Debug.Print "F" Like "F[" 'почему False, а не Error?

Это стало понятно из тестов, что маска проверяется не всегда до конца, что приводит пользователя в замешательство, когда одна часть результатов False, другая Error 93. Лично вижу, что проверка маски до конца более правильный вариант, в ущерб снижения скорости выполнения для проверки оставшийся части маски. Здесь вопрос к обсуждению, что предпочтительнее: скорость или гарантированная ошибка при некорректной маске?
Опрос: Что для вас важнее?
Изменено: bedvit - 21.05.2025 12:59:46
«Бритва Оккама» или «Принцип Калашникова»?
Странное поведение Like (VBA)
 
Цитата
Бог Excel и гамбургеров написал:
Да, конечно. Тут всё подробно:  Microsoft Specification
Не ожидал, что у вас настолько глубокие знания!
Предлагаю бан для этого субъекта, пусть почитает правила форума.
«Бритва Оккама» или «Принцип Калашникова»?
Странное поведение Like (VBA)
 
Цитата
Бог Excel и гамбургеров написал:
Потому что сперва проверяется строка, если пусто, тогла FAlse!
А здесь строка пустая, но почему True... ай-я-яй
Код
Debug.Print "" Like "[]" 'True


Цитата
Бог Excel и гамбургеров написал:
Потому что *[1-4-6] = {1-6} = 5
{1-6} = 2 , но почему False... ай-я-яй
Код
Debug.Print "2" Like "*[1-4-6]" 'False


Цитата
Бог Excel и гамбургеров написал:
Потому что *[F-F] это не диапазон!
Извините, а что же это?

Цитата
Бог Excel и гамбургеров написал:
Звёздочка определяет поведение и преобразует всё в единый диапазон на основании таблицы ASCII, Иззи!
Можно ссылку, подтверждающие ваши слова, ибо все это выглядит как, прямо скажем... ваши фантазии. Или троллинг.
Изменено: bedvit - 16.05.2025 14:31:01
«Бритва Оккама» или «Принцип Калашникова»?
Безопасность проекта
 
Цитата
Ronin71 написал:
...если верить описанию, это кого угодно собьёт с толку )))
еще одна ложка дегтя...
Заходим в любой онлайн форматировщик (особенно с хорошим ИИ), и код уже смотрится не так страшно...
Изменено: bedvit - 16.05.2025 11:37:21
«Бритва Оккама» или «Принцип Калашникова»?
Странное поведение Like (VBA)
 
Цитата
Дмитрий(The_Prist) Щербаков написал:
Но если вдруг, Like начинает разбор шаблона справа налево
Дмитрий приветствую!
Как хочет, так и сравнивает...и с начала и с конца...пример:
Код
    Debug.Print "5" Like "*[1-4-6]" 'True - диапазон с конца маски
    Debug.Print "2" Like "[1-4-6]"  'True - диапазон с начала маски


Поясню почему возникла эта тема. В С++ нет такого оператора. Я решил максимально точно воспроизвести Like VBA, но у меня не получилось воссоздать этот гениальный алгоритм, где нет четкой парадигмы. Где-то возвращает False, вместо ошибки, где-то True!!! (см. пост 1), где-то считает в одном контексте, где-то в другом, при одинаковой маске или одинаковых строках разные результаты... Где-то маска с открытой скобкой - ошибка "[...", где-то не ошибка (см. сообщение 3) и т.д.

Плюнул, сделал свою реализацию, где [1-4-6] считается валидной маской, всегда считается слева направо, как в регулярках, а не как в Like VBA (в одних случаях с конца, в других с начала, поди угадай какой должен быть результат - см. выше в этом сообщении) . И маска всегда проверяется на закрытую скобку и корректность диапазона "[a-b]" (первый символ не может быть больше последнего, но может быть равен - как в регулярках, в LIke может быть равен, а может быть и ошибка, см. пост 1). т.е. алгоритм должен предполагать только единственный точный валидный! результат, без экстрасенсов и гадалок или возвращать ошибку!
Изменено: bedvit - 15.05.2025 22:59:49
«Бритва Оккама» или «Принцип Калашникова»?
Регулярные выражения (Regexp) в Excel
 
Мое почтение, джентльмены.
Нужны ли сейчас в Excel современные (имеют POSIX-классы. Обратный поиск и другие фичи не тестировал.) регулярные выражения?
В ассортименте: Поиск, вывод нужных символов, замена.
Функционал из стандартных C++ библиотек. Не самописные (да я бы и не смог такой сложности проект быстро сделать, да и не быстро тоже)
К примеру:


Или не актуально?
«Бритва Оккама» или «Принцип Калашникова»?
Странное поведение Like (VBA)
 
nilske, если прочитать мое сообщение 5, то там есть выдержка из спецификации, где написано, почему должно вернутся False (потому что "-" не в начале и не в конце charlist). А возращается True. Поэтому я и спрашиваю, почему так? Где проблема?
«Бритва Оккама» или «Принцип Калашникова»?
Странное поведение Like (VBA)
 
nilske, Вы считаете, что Like работает неправильно? И считаете, что это обсуждать не нужно? Т.е. работет неправильно, ну и ладно, че обсуждать-то, верно? Правильно ли я вас понял?
«Бритва Оккама» или «Принцип Калашникова»?
Странное поведение Like (VBA)
 
nilske, встречный вопрос: а что неправильного в моем шаблоне, какой части спецификации он не соответствует?
«Бритва Оккама» или «Принцип Калашникова»?
Странное поведение Like (VBA)
 
nilske, осталось... читаю спецификацию:
"Дефис ( - ) может стоять либо в начале (после восклицательного знака, если он используется), либо в конце charlist , чтобы соответствовать самому себе. В любом другом месте дефис используется для обозначения диапазона символов."
Пишу код:
Код
Debug.Print "-" Like "[1-2-3]" 'почему True

Вопрос: почему True?
«Бритва Оккама» или «Принцип Калашникова»?
Странное поведение Like (VBA)
 
ZVI, Владимир, приветствую!
Цель вопроса? наверное пообщаться, выйти покурить в перерыв между работой (я не курю, но здесь-то можно в курилке?)
Цитата
ZVI написал:
символ в диапазоне "[1-4]" ИЛИ символ "-" ИЛИ символ "6"
Да все верно, это валидный паттерн для старщего брата - Регулярных выражений. Можно проверить на https://regex101.com/
Собственно складывается впечатление, что Like писали спустя рукава, начали видимо хорошо, паттерны 1-2,3 выполняются с таким же итогом как и итог регулярных выражений...
Потом что-то пошло не так (что-то не смогли?) или решили, а и так хватит... давайте сделаем ограничение на это ("-" разделитель только в конце или в начале, что в регулярках не обязательно), да и норм...
Сомнительно... но Окей...
Смотрим далее
Код
    Debug.Print "F" Like "[" 'Error
    Debug.Print "" Like "[" 'почему False?

Первый паттерн явно ошибочен, не закрыта скобка. Все понятно - ошибка. А второй возвращает False, т.е. маска норм, вопросов не вызывает?
Смотрим регулярки - во всех двух случая ошибочная маска - ошибка (там же на сайте regex101 можно проверить, для всех языков)

Хорошо, специалисты говорят, не надо смотреть ругулярки, смотри спецификацию к оператору Like и не выдумывай лишнего...
Если петтерн не соответствуеn спеке - это все UB...

Ну Ок говорю я, а где в спеке написано что задать диапазон следующим образом [F-F] ошибка? И почему если это ошибка, не выходит сообщение в VBA?
Я вижу в спеке лишь ошибку, если первое значение больше второго (должно быть в возрастающем порядке)
..."[A-Z] является допустимым шаблоном, но [Z-A] не является."...
Если ошибка, зачем возвращается True (я понимаю еще False вместо ошибки, но тоже так себе)? Т.е. все валидно и даже положительный результат сравнения!

Что в итоге: абы как составленный инструмент, где -то возвращающий False, вместо ошибки, где-то True!!!, где-то считает в одном контексте, где то в другом при одинаковой маске или одинаковых строках.
Изменено: bedvit - 15.05.2025 10:02:05
«Бритва Оккама» или «Принцип Калашникова»?
Странное поведение Like (VBA)
 
Мое почтение, джентльмены.
Есть интерес послушать специалистов, почему Like в варианте 3 выдает True, а в последнем варианте ошибку?

Код
Sub TestLikeERR()

    Debug.Print "-" Like "[1-4-6]" 'True
    Debug.Print "5" Like "[1-4-6]" 'False
    Debug.Print "5" Like "*[1-4-6]" 'почему True?
    
    Debug.Print "F" Like "[F-F]" 'True
    Debug.Print "F" Like "*[F-F]" 'почему Error?

End Sub


Настолько впечатлен этим инструментом, что разместил вопрос и здесь.
Изменено: bedvit - 14.05.2025 22:49:33
«Бритва Оккама» или «Принцип Калашникова»?
Как получить сертификат доверенного издателя и подписывать им надстройки?
 
Создать, использовать Code Signing сертификат. Все можно сделать через командную строку.

CodeSigning для разработчиков под Windows по новым правилам
Изменено: bedvit - 16.04.2025 09:57:59
«Бритва Оккама» или «Принцип Калашникова»?
Как получить сертификат доверенного издателя и подписывать им надстройки?
 
Для юр. лиц это не проблема:
https://www.globalsign.com/ru-ru/code-signing-certificate
«Бритва Оккама» или «Принцип Калашникова»?
Страницы: 1 2 3 4 5 6 7 8 9 10 11 ... 90 След.
Наверх