Страницы: Пред. 1 2 3 4 След.
RSS
Размышление о C API Functions для Excel, Испольpование C API Functions для Excel в .xll
 
Цитата
Jack Famous написал:
как мне скопировать коды/библиотеки/всё_нужное_для_того_чтобы_работать из вашей надстройки в свою?
Нужно скопировать лист из моего файлового менеджера в свою надстройку, загрузить туда мою библиотеку и запускать и пользоваться по мере необходимости. xll это ведь обычная dll с интерфейсом понятным Excel. А dll библиотеки обычно и создаются, что бы их подключать к разным проектам.
«Бритва Оккама» или «Принцип Калашникова»?
 
Кабанчик подрос.
«Бритва Оккама» или «Принцип Калашникова»?
 
Протестируем сортировку? У кого как отрабатывает, что нравится, что не нравится. Что необходимо ещё.
Шаблон интерфейса делал по стандартной sort в Excel. Учел разные комбинации параметров, протестировал разные алгоритмы сортировки, алгоритмы вывода индексов, поэтому и понадобилось 10 дней на выбор лучших.
Изменено: bedvit - 28.11.2018 08:13:21
«Бритва Оккама» или «Принцип Калашникова»?
 
bedvit, я бы с радостью, как и всегда, но не могу использовать ваши наработки без самой надстройки.
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Jack Famous, так используйте мою надстройку(библиотеку).
Я выкладываю разработки бесплатно, с возможностью использовать в своих разработках пользователями. Библиотека, кроме указанного функционала (длинная арифметика - два класса и сортировка - один класс) ничего больше не содержит. Моих личных данных в ней нет. Вредоносного кода нет (мне это не нужно, мое имя в разработке мне дороже). Плюс библа выкладывается на разных форумах, продвинутый специалист, может посмотреть, через декомпилирование (реверс-инжиниринг) что там есть. Библа не большая, посмотреть не проблема.
Вы же используете к примеру словари в VBA? Это "Scripting.Dictionary" - объект из Microsoft Scripting Runtime Library (лежит по-моему в "scrrun.dll", там же и другой базовый объект данной библиотеки, хорошо знакомый нам "Scripting.FileSystemObject"). Моя библа, то же самое, просто упакованная в .xll, что бы вам не регистрировать вручную её в реестре, за вас это делает .xll. Я вам могу сбросить и .dll-файл, вернее у вас он есть, посмотрите пользовательский TEMP, туда он распаковывается .xll-ом и регистрируется (при закрытии .xll, автоматом происходит unregister - данные из реестра удаляются, всё это делает стандартная ATL-библиотека от самого Microsoft, через "Regsvr32", руками я ничего не дорабатывал).
Изменено: bedvit - 28.11.2018 12:55:00
«Бритва Оккама» или «Принцип Калашникова»?
 
Цитата
bedvit: Я вам могу сбросить и .dll-файл
вот это было бы здорово  :)
Расскажите пожалуйста, как его прописать в реестре (один раз и менять при обновлении), чтобы можно было подключать при необходимости, как в примере со словарём...
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Регистрация COM.DLL реализована как под админом, так и под пользователем (актуально в офисной части клиентов, без прав администратора)
Регистрация стандартная, в командной строке:
Админ: Regsvr32 "...FullName.DLL" (путь, где лежит файл)
Пользователь (без прав администратора): Regsvr32 /i /n "...FullName.DLL"(путь, где лежит файл)
Удалить из реестра: Regsvr32 /u "...FullName.DLL"(путь, где лежит файл)

Если регистрируем в Win10, то не забываем, что регистрировать надо под правами админа так: правая кнопка -Пуск -Командная строка (администратор)
Под правами пользователя: через обычную командную строку.

За вас, все это, делает .xll (под правами пользователя).
Но если вы хотите сами, вручную, пожалуйста.
Библиотеку .dll прилагаю (х64, если нужна х32 могу выложить и её)
Изменено: bedvit - 28.11.2018 14:59:55
«Бритва Оккама» или «Принцип Калашникова»?
 
bedvit, спасибо вам) попробую, как проект закончу  ;)
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
тут старую как эксель тему подняли, есть в си-апи варианты сделать доступ к содержимому буфера отмены действий без применения отмены?
 
Цитата
DenSyo написал:
есть в си-апи варианты сделать доступ к содержимому буфера отмены действий без применения отмены?
..нда, давайте так:
1.По приведенной ссылке - если нужны будут высокопроизводительные решения, я посмотрю, что можно будет сделать
2.Если у вас вопрос не связанный с приведенной выше ссылкой - создайте новую тему и пример того, что хотите получить (возможно для этого хватит обычных инструментов).
«Бритва Оккама» или «Принцип Калашникова»?
 
ах так...
Цитата
bedvit написал:
Посему предлагаю рассмотреть, что нужно в действительности, что работало бы быстро и реализовывалось через функцию рабочего листа Excel.
я вас за язык не тянул)
на самом деле, сейчас интересует только сама возможность такового, что бы знать о ней при необходимости, а реализация дело времени. если вам еще интересна тема си-апи, ну гляньте для нас, что есть для работы с буфером...
 
DenSyo, все верно, но ваш вопрос в другом. Или задайте вопрос правильно. Сейчас здесь смешаны 3 разных темы, функции листа, "буфер отмены действий"-что это? и события листа Excel. C API Functions - это высокопроизводительные (потому, что написаны на С/С++) функции листа Excel, с событиями листа и буфером обмена (если вы это подразумевали) они связаны так же, как, к примеру, функция ВПР(). Функции могут принимать и выдавать массивы, но опять же, что нужно в конечном итоге, из вашего вопроса - не ясно.
«Бритва Оккама» или «Принцип Калашникова»?
 
Цитата
bedvit написал:
"буфер отмены действий"-что это?
да, был не прав. отмена действий имеет не буфер, а стек.
вопрос снимаю, здесь пояснение...
 
Цитата
bedvit написал: если нужна х32 могу выложить и её)
bedvit, выложите please, если это возможно и не долго искать... за ранее спасибо (уж очень хочется посмотреть на неё, а у меня 32x)
чтобы не гадать на кофейной гуще, кто вам отвечает и после этого не совершать кучу ошибок - обратитесь к собеседнику на ВЫ - ответ на ваш вопрос получите - а остальное вас не касается (п.п.п. на форумах)
 
JeyCi, здесь все версии. Пользуйтесь.
Изменено: bedvit - 13.06.2019 11:24:26
«Бритва Оккама» или «Принцип Калашникова»?
 
bedvit, спасибо !! за ваши труды и линк
;)  и нравится мне ваша
Цитата
Цель - скорость и удобство работы, создание для скриптовых языков, языков с поддержкой COM - того, чего там нет или есть, но хочется лучше.
и там по линку
Цитата
Результаты на 2-х млн. строк и 4-м столбцам:
действительно, очень достойно!
p.s.
буду [когда время будет] стремиться к такой же скорости по считыванию 500 json-файлов - хоть и понимаю, что чтение из файла - совсем другая (длинная) история... и данных кстати в выходном массиве поменьше будет (до 100 000 строк ~20 столбцов)... - если не добьюсь ок времени - придётся сразу с сайта без записи в txt парсить... секунды - дорогое удовольствие... но, может, когда-нибудь начну (благодаря вам)...
чтобы не гадать на кофейной гуще, кто вам отвечает и после этого не совершать кучу ошибок - обратитесь к собеседнику на ВЫ - ответ на ваш вопрос получите - а остальное вас не касается (п.п.п. на форумах)
 
Цитата
JeyCi написал: а у меня 32x)
если когда-нибудь придётся что-нибудь кому-нибудь переносить:
20 ловушек переноса Си++ - кода на 64-битную платформу
чтобы не гадать на кофейной гуще, кто вам отвечает и после этого не совершать кучу ошибок - обратитесь к собеседнику на ВЫ - ответ на ваш вопрос получите - а остальное вас не касается (п.п.п. на форумах)
 
Последние версии библиотек BedvitCOM (библиотека COM/ActiveX) + BedvitXLL (библиотека XLL c C API Functions для Excel)
«Бритва Оккама» или «Принцип Калашникова»?
 
Сделал два наименования категорий функций для XLL.
С упоминанием названия библиотеки и без упоминания (поскромнее).
Какой оставляем?
«Бритва Оккама» или «Принцип Калашникова»?
 
bedvit, ну ясен пень bedvit оставляем - XLL может быть много, а ваша только одна  :)
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Jack Famous, здесь осуждают :)
«Бритва Оккама» или «Принцип Калашникова»?
 
bedvit, глупости такие - жаль, что у меня прав нет для коммента. Всего 6 букв, которые позволяют сразу найти нужную категорию функции, а они сопли пузырями  дуют…  :D
И это не говоря о том, что это именно ВАШИ функции, которые стали результатом огромной работы  :idea:
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Jack Famous, спасибо за оценку работы. Категории не на что не влияют, может со временем изменю названия, как народ отпишется, мне то в общем без разницы, главное название функций и методов, т.к. они влияют на код. А категории видны лишь в мастере, и на функционал не влияют, просто удобство поиска нужной категории.
«Бритва Оккама» или «Принцип Калашникова»?
 
Добавил в beta-версию библиотеки функцию VlookupXLL.
Если понравится народу, добавлю в release - версию.
Функционал:
1.Автоматически преобразует типы данных, если это возможно. Т.е. число сохраненное как текст будет обрабатываться в массиве поиска или в ключе  - как идентичный числу.
2.Регистрозависимая. Данные в разном регистре считаются разными.
3.Два независимых массива. Сравнивает данные в одном независимом массиве с ключом и выводит результат из другого независимого массива. Массивы могут быть разной размерности, даже на разных листах, но с одинаковым количеством элементов. Выводится элемент второго массива, чей порядковый номер совпадает с найденным элементом в первом массиве. Порядок просмотра - как в Excel - столбцы/строки.
4.Два первых вышеописанных отличия от стандартной функции, сказываются на скорости и VlookupXLL отстает от стандартной Vlookup в 2 раза, но обгоняет все остальные аналоги на VBA, формулы массива и т.д. минимум на порядок.

Скачать и протестировать можно здесь (BedvitDLL(1.0.1.6-beta).zip)
Изменено: bedvit - 27.09.2019 20:04:50
«Бритва Оккама» или «Принцип Калашникова»?
 
29/09/2019 - BedvitDLL(1.0.1.7-beta) - Обновление функционала (теперь VlookupXLL работает и с закрытыми книгами)
Итак презентация поподробнее.
VlookupXLL - это смесь ВПР() и ПРОСМОТР().
Что умеет данная функция, чего не умеет ВПР():
1.Автоматически преобразует типы данных, если это возможно. Т.е. число сохраненное как текст будет обрабатываться в массиве поиска или в ключе  - как идентичный числу.
2.Регистрозависимая. Данные в разном регистре считаются разными.
3.Два независимых массива. Сравнивает данные в одном независимом массиве с ключом и выводит результат из другого независимого массива. Массивы могут быть разной размерности, даже на разных листах, и даже книгах! но с одинаковым количеством элементов.
4.Забирает данные из закрытых книг, причем один массив может быть в открытой книге, другой в закрытой.
5.Корректно сравнивает символы, интерпретируемые ВПР() как символы подстановки.
6.Ищет строку с любым количеством знаков, не ограничиваясь 256 (как в ВПР())

Что не умеет:
1. Обратная сторона вышеназванных возможностей (разный тип данных не различает, если можно преобразовать из одного в другой, регистр, знаки подстановки учитываются как обычные символы)
2. Скорость ниже в 2 раза на строках и на порядок в поиске чисел (не знаю/не найду код реализации стандартной ВПР(), пока не понимаю за счет чего так быстро обрабатываются числа).

BedvitDLL(1.0.1.7-beta).zip
Изменено: bedvit - 29.09.2019 22:28:58
«Бритва Оккама» или «Принцип Калашникова»?
 
bedvit, приветствую! А ВПР быстрее связки ИНДЕКС+ПОИСКПОЗ? А на отсортированном массиве?
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Jack Famous, приветствую! Имеется ввиду VlookupXLL? Сортировка не должна влиять на скорость расчета. Сейчас алгоритм простой, простой перебор в первом массиве до первого правильного значения. С комбинацией ИНДЕКС()+ПОИСКПОЗ() не сравнивал. Буду у ПК сравню (только вечером). Если будет возможность и интерес можете раньше результаты теста выложить :)
Это бетта-версия, можно внести некоторые правки в функционал, если такая функция нужна. Отдаю на откуп форуму. Далее можно попробовать оптимизировать алгоритм, поднять производительность.
Может в таком виде она бесполезна, а нужна в другом.
«Бритва Оккама» или «Принцип Калашникова»?
 
bedvit, ну за себя могу сказать, что как обновляемую функцию я такое уже давно не применяю (слишком медленно). Открываю нужные файлы, забираю нужные массивы, сортирую и храню на временных невидимых листах или в памяти.
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Jack Famous, поясните, не понял вашу мысль. Если нужно выбрать 5 значений из миллиона в закрытом файле  - это намного быстрее через данную функцию, чем открыть файл, забрать нужный массив и где-то его хранить. Если использовать закрытый файл как базу данных, работать с ним конечно быстрее если нужное содержимое скопировать в оперативку, но как это относится к функции? Или давайте на примере, что бы понятнее было.
«Бритва Оккама» или «Принцип Калашникова»?
 
bedvit, у меня обычно тот вариант, при котором я открываю файл(-ы), забираю, что нужно и закрываю. А уже потом фильтрую и т.д.. При таком подходе штатных инструментов вполне хватает. Ну и по-прежнему основное, что нужно решить для использования ваших функций, это их самораспаковка/инсталляция при переносе между комьютерами. Как "тёти из бухгалтерии" будут что-то устанавливать мне страшно даже представить, а настроить всем далеко не всегда возможно  :D
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
Страницы: Пред. 1 2 3 4 След.
Наверх