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

Страницы: 1 2 3 4 5 6 7 8 9 10 11 ... 25 След.
Замена x^2 на pow(x,2), парсинг
 
Готовый вариант
Код
Public Function parsing_1(txt As String, x As String, kks As String) As String
    Static bInit As Boolean, RE1 As Object, RE2 As Object, RE3 As Object, RE4 As Object
    If bInit Then
    Else
        Set RE1 = CreateObject("VbScript.RegExp"): RE1.Global = True
        Set RE2 = CreateObject("VbScript.RegExp"): RE2.Global = True
        Set RE3 = CreateObject("VbScript.RegExp"): RE3.Global = True
        Set RE4 = CreateObject("VbScript.RegExp"): RE4.Global = True
        RE1.Pattern = "\s*([*\/\-\+\^])\s*"
        RE2.Pattern = "(\(.*\))\^(\d)"
        RE4.Pattern = "(\d+),(?=\d+)"
        bInit = True
    End If
    
    Dim sRet$
    sRet = RE1.Replace(txt, "$1")               ' убираем лишние пробелы
    sRet = RE2.Replace(sRet, "pow($1,$2)")      ' заменяем (expr)^n на pow((expr),n)
    RE3.Pattern = x & "\^(\d)"                  ' заменяем x^n на pow(KKS,n)
    sRet = RE3.Replace(sRet, "pow(" & kks & ",$1)")
    sRet = RE4.Replace(sRet, "$1.")             'заменяем num,num на num.num
    
    parsing_1 = Replace(sRet, "+-", "-")
End Function
Замена x^2 на pow(x,2), парсинг
 
Можно регулярками зарегулярить
Код
Sub asfas()
    Dim s$: s = "23,21+ -3*x^2+36*(25*x^1 + 36 *x^ 2)^3"
    'требуемый результат: 23.21-3*pow(KKS,2)+36*pow((25*pow(KKS,1)+36*pow(KKS,2)),3)
    Dim RE As New RegExp
'    Dim coll
    RE.Global = True
    
    RE.Pattern = "(\(.*\))\^(\d)"         'заменяем (expr)^n на pow((expr),n)
    Dim s2$: s2 = RE.Replace(s, "pow($1,$2)")
    
    RE.Pattern = "x\s?\^\s?(\d)"          'заменяем x^n на pow(KKS,n)
    s2 = RE.Replace(s2, "pow(KKS,$1)")
    
    
    RE.Pattern = "\s*([*\/\-\+])\s*"      'убираем лишние пробелы
    s2 = RE.Replace(s2, "$1")
    
    s2 = Replace(s2, "+-", "-")
    s2 = Replace(s2, ",", ".")
    Debug.Print s2    ' 23.21-3*pow(KKS.2)+36*pow((25*pow(KKS.1)+36*pow(KKS.2)).3)
End Sub
VBA: данные из xml-файла сразу в массив или Recordset, Макросом загрузить данные из xml-файла без выгрузки на лист
 
По информации от Дипсика, рабоать с XML в ADO-Recordset можно (но зачем... :)), но ваш файл не соответствует структуре ADO XML, поэтому лучше использовать MSXML и т.п.
Библиотеки excel arduino!
 
Вот есть описание некоего "расширения" для работы с Arduino из Excel  https://bhv.ru/wikibook/arduino-plyus-excel-sbor-i-hranenie-dannyh/?srsltid=AfmBOorQ25UYgn8VhnqyKw0XQ4ITPC3oJPB6rGFpaTThmKvUgDDg­vHfE
Подсчитать путь имея широту, долготу, высоту, уклон, скорость
 
Михаил Л, не удивлюсь если в формуле, которую вы ищете присутствует какая-нибудь аппроксимация или интерполляция, поскольку очень сомнительна стабильная точность, так скажем, ежесекундных данных,  там наверняка должно быть какое-то сглаживание, а расстояние - длина сглаженной линии.
Подсчитать путь имея широту, долготу, высоту, уклон, скорость
 
Цитата
Михаил Л написал:
Ищу еще варианты подсчета расстояния.
Возможно лучше вычислять промежуточные расстояния не каждую секунду, а каждые 10 сек или минуту, тогда получится полее сглажено и меньше расстояние.
MultiProcessing или хакерский менеджер процессов на VBA, Воскрешение (вторая жизнь) VBA
 
Вот, кстати, я уже давно слежу за проектом Twin Basic, но давно туда не заходил, а сейчас открыл "features" и прям офигел, там как раз это уже есть - легкие классы-структуры как в C++. Это не трейты, о которых я псал, но это может быть их альтернативной - можно делать класс строк и приделывать к нему множество ручек, причем там поддержка приватных полей - полная красота - так мог бы выглядеть современный VBA.
Изменено: testuser - 14.12.2025 09:19:23
MultiProcessing или хакерский менеджер процессов на VBA, Воскрешение (вторая жизнь) VBA
 
Можно конечно пойти более простым путем, понаделать com-классов, для строк, допустим StingHelper и в нем много ручек FindLen, FindEnd, FindRevB и т.д. и то же самое для байтовых массивов, для массивов Integer.. В принципе-то конечно тоже вариант.
MultiProcessing или хакерский менеджер процессов на VBA, Воскрешение (вторая жизнь) VBA
 
Цитата
bedvit написал:
Внешний API будет?
Для начала это выглядит (уже так выглядит) просто как расширение стандартной VBE7.dll = "простой" набор плоских функций.., ну можно к ним будет еще добавить свою реализацию Словаря. Но...
Цитата
bedvit написал:
хорошо продуманной реализация дело не простое
Я скажу больше, реализовать полностью, то, что я хотел бы для меня представляется почти не возможным, учитывая нехватку времени, профессионализма, мотивации, смены настроения и т.д. Обясню на простом примере. Есть прекрасная функция InStr которая очень быстрая, но мне не нравится в ней один момент - у нее параметры реализованы через Variant
Код
         VARIANT _stdcall InStr(
                        [in, optional] VARIANT* Start, 
                        [in, optional] VARIANT* String1, 
                        [in, optional] VARIANT* String2, 
                        [in, optional, defaultvalue(0),
          custom(270D72B0-FFB8-11CF-A4BD-00A0C90F26EE, 1)

Это какбы не очень хорошо, но с этим я могу смириться.. У этой функции есть "сестра" InStrB, такая же прекрасная, предназначенная для Строк Ansi. Это прекрасно, но я решаю, что мне не хватает у функций InStr 5го параметра - длины участка строки, на котором функция должна искать подстроку. Я делаю реализация и называю ее InStrLen, что выглядит также лаконично и понятно. Также я делаю реализацию InStrEnd, которую по названию также понятно, что это за функция. Потом я хочу еще сделать реализацию InStr для байтовых массивов и также даю ей понятное название InStrByt. Дальше по накатанной InStrLenByt, InStrEndByt, .. дальше InStrRevLenByt - тут уже как-то не лаконично и не запоминающееся, уже какая-то ерунда начинается. Фактически возникает такая ситуация, назовем ее нейминг-хелл, когда запас простых понятных и вто же время кратких имен начинает исчерпываться. Конечно это одна из основных причин, почему было придумано OOP, поскольку оно решает эту проблемму - создаем класс строки и для нее методы Find, FindB, FindRev и т.д., потом создаем класс байтового массива и для просто создаем интерфейсы с теми же самыми именами. Но я не хочу создавать конечно же кучу COM-классов для всего на свете, это не тот путь который мне нравится. Тут мы подходим к финальной стадии, того, что я хотел бы создать - трейты (по аналогии с трейтами в языке Rust). Трейты - это такие штуки, которые бы позволили добавлять свои "интерфейсы" для всего на свете. Но как их реализовать на VBA? Для этого нужно, во-первых, создать дополнительный вспомогательный текстоый редактор для VBA, в котором можно создавать эти трейты и использовать, а из него уже текст должен будет раскладываться в стандартный VBA-код и попадать в оригинальный редактор VBA. Вот, собственно, такая, относительно простая мысль, но не так уж простая в реализации.
Изменено: testuser - 13.12.2025 14:51:59
MultiProcessing или хакерский менеджер процессов на VBA, Воскрешение (вторая жизнь) VBA
 
Цитата
testuser написал:
просто в целях показать, как правильно надо кодить для молодежи! )
А вообще я только недавно начал кодить на C, так что те у кого есть чувство юмора поймут )
Цитата
MultiZeus написал:
ИИ крут, но для VBA это проблема, т.к. мало в сети интернет технических моментов, связанных с данным языком и ИИ пытается наложить концепции из других языков на данный и получается то, что получается!
То что на VBA мало кода для каких-то сложных вещей, это один момент, и вполне понятный, поскольку основное назначение во много определсяет судьбу языка и итоговую содержание контента с ним связанного, которым в конечном итоге заполнен интернет, и который вобрали в себя LLM-ки. Другой момент, что в VBA много неочевидных моментов, таких, что без явного указания ByVal, аргумент передается ByRef, что при считывании файла в строку стандартными средствами он обязательно будет преобразован из Ansi в Unicod (хотя это не всегда нужно) и т.д. Третий момент, тот, что в VBA банально мало стандартного набора функций для работы с теми же строками и др. вещами. Можно, наверное, сказать так, что в VBA не хватает многих кирпичиков, подобных тем, что есть во многих современных языках и позволяют в них писать код более лаконично и понятно. Именно с целью, хотябы частично закрыть некоторые пробелы, я принялся писать свою библиотеку, которая в дальнейшем должна помочь мне и может быть кому-то еще писать многие вещи более правильно и без обилия "бойлеров".
Изменено: testuser - 13.12.2025 11:48:06
MultiProcessing или хакерский менеджер процессов на VBA, Воскрешение (вторая жизнь) VBA
 
Цитата
evgeniygeo написал:
у Вас ведь и правда хорошо получается, поэтому я очень надеюсь, что Вы не сдадитесь и будете продолжать.
Я в начале, тоже хотел похвалить авторов обсуждаемого продукта, но потом что-то началось, как обычно, поэтому пришлось подождать с комментариями. А так, все довольно не плохо, сайт с форумом, создание видео, и пр. требует определенного времени и навыков. На видео автор говорит хорошо без запинок, и вроде нет там махрового выпендрежа и самолюбования, поэтому можно было бы пожелать только успехов в текущих делах и новых начинаниях, ну может еще коммуникащию более тщательно продумывать, а так как бы это, которое то.. )
MultiProcessing или хакерский менеджер процессов на VBA, Воскрешение (вторая жизнь) VBA
 
Цитата
Тимофеев написал:
Сценарий 3: "Из гетто VBA в мир больших систем"vba' Раньше: VBA - это "игрушечный" язык' Теперь с SDI:
Да черт возми да! а с моей библиотекой vba вообще уходит в космосс!! вот он где дофаминчик то гребаный, как он разгадал эту формулу?! ))
MultiProcessing или хакерский менеджер процессов на VBA, Воскрешение (вторая жизнь) VBA
 
Тимофеев, нее там вопрос был, какой дофамин от того, что безудержно х..чишь ии-ответы на все вопросы, и даже, скорее всего не проверяешь их работу. Или дофамин уже спрятан в заранее припасенном пиве для вечерне-пятничного ублажения? )
MultiProcessing или хакерский менеджер процессов на VBA, Воскрешение (вторая жизнь) VBA
 
Тимофеев, ты хотя бы спойлер бы использовал, а то уже как ребенок рисующий на заборах везде позалез.
Замедление работы макросов в фоновом режиме на ноутбучном железе
 
Цитата
Alex написал:
Но, думаю, не стоит тратить время на разбор чужого кода
Могли бы и не выкладывать, а просто указать что там куча модулей и тонны кода..
Цитата
Тимофеев написал:
вот такой он ИИ
А профит в чем? Дофамин где?
Замедление работы макросов в фоновом режиме на ноутбучном железе
 
Цитата
Тимофеев написал:
TransformStructureFast
Воу-воу полехче, почему все такое "Fast" о.О ))
Замедление работы макросов в фоновом режиме на ноутбучном железе
 
Alex, покажите ваш макрос, может быть его можно распараллелить и сильно убыстрить
MultiProcessing или хакерский менеджер процессов на VBA, Воскрешение (вторая жизнь) VBA
 
bedvit, ну кое-что есть на Гитхабе )
MultiProcessing или хакерский менеджер процессов на VBA, Воскрешение (вторая жизнь) VBA
 
bedvit, если кратко - расширение функционала vba, хочу объединить в одной библиотеке очень много всяких рутинных функций для работы со строками, числами,  массивами, файлами и т.д., также реализовать, условно и буквально говоря интерфейсы для некоторых широко-используемых библиотек. Есть еще одна (а может и не одна, всего не упомню) идея, которую хотелось бы реализовать, но не уверен, что осилю.. В общем это, должно стать как единая точка сборки для очень многого, но при том достаточно легковесная.
MultiProcessing или хакерский менеджер процессов на VBA, Воскрешение (вторая жизнь) VBA
 
Не нраится мне как вы здесь себя ведете, хакеры-ломакеры, но только в целях развития VBA скажу, наывается ATLVBA, просто в целях показать, как правильно надо кодить для молодежи! )
MultiProcessing или хакерский менеджер процессов на VBA, Воскрешение (вторая жизнь) VBA
 
Zeus_0x01, ни скажу, я не вижу здесь профессионалов, достойных, чтобы им сказать надо иметь очень высокий уровень знаний чтобы использовать эту библиотеку, там очень быстрая скорость и есть очень опасные функции! Только за 1000 р. могу показать
MultiProcessing или хакерский менеджер процессов на VBA, Воскрешение (вторая жизнь) VBA
 
Дело в чем, я сам недавно начал пилить одну библиотечку для VBA, опенсорцную, но все же стали мешать мысли, а нафиг это все, а сейчас вот глянул на Тиобе и думешь ну ни чего себе, старик-то не упал.. держится еще на ногах )
MultiProcessing или хакерский менеджер процессов на VBA, Воскрешение (вторая жизнь) VBA
 
В обще по мнению Тиобе, VBA вполне сурьезный язык, судя по всему ))
Изменено: testuser - 11.12.2025 12:51:09
MultiProcessing или хакерский менеджер процессов на VBA, Воскрешение (вторая жизнь) VBA
 
Цитата
Msi2102 написал:
И ещё Microsoft начинает отказываться от VBA. Вы бы им написали, а то все потуги насмарку.
Еще к этому добавить импорто-замещение, ИИ-бум.. в общем условия для vba-стратапов (надеюсь это было не сильно пафосно сказано - стартап!). Вообще я в одной статейке видел, что майкры вроде делают ставку на язык формул в ячейках и хотят сделать его тьюринг-полным. Эта идея, кстати, лично мне больше нравится, чем обилие всяких "изделий" с приставкой "повер". Это вполне логично, и как мне кажется, давно надо было сделать.
Кстати где-там VB Classic на Tiobe, надо глянуть.. Глянул - старичек там еще ни чего держится на вершине второй 20ки. Там перед Свифтом Котлин идет, так, что все вполне прям так ни чего себе ) И еще я офигел, как TypeScript оказался там где он есть, не ужели вдияние ИИ-бума?
Код
21   Swift   0.87%
22   Classic Visual Basic   0.78%
23   COBOL   0.78%
24   Prolog   0.76%
25   Ruby   0.67%
26   Dart   0.64%
27   SAS   0.64%
28   Lisp   0.51%
29   Julia   0.48%
30   Objective-C   0.45%
31   Lua   0.40%
32   Haskell   0.35%
33   TypeScript   0.32%
34   Scala   0.32%
35   (Visual) FoxPro   0.31%
36   ABAP   0.29%
37   PL/SQL   0.27%
38   VBScript   0.22%
39   Elixir   0.20%
40   Ladder Logic   0.19%
41   Solidity   0.19%
42   PowerShell   0.17%
43   Zig   0.16%
44   Bash   0.16%
45   Apex   0.15%
46   LabVIEW   0.15%
47   Wolfram   0.15%
48   Erlang   0.14%
49   ML   0.14%
50   RPG   0.14%
Изменено: testuser - 11.12.2025 12:48:51 (Дополнил, список Тиобе, чтоб было более наглядно, выше чего там Classic VB ))
Пользовательская функция сортировки значений диапазона и вывод массивом
 
Цитата
Дмитрий(The_Prist) Щербаков написал:
Он не знал, как заставить UDF функцию листа выполняться для входа в режим отладки.
Сложно предвидеть такой вопрос )
Пользовательская функция сортировки значений диапазона и вывод массивом
 
Цитата
kenigfinn написал:
А может кто-нибудь подсказать, как пошагово выполнить код функции или как попросить функцию остановиться в точке останова? Как вообще проводить отладку Функции, аналогично с Макросом? Может так будет проще разобраться в коде, где косяк...
Точку останова можно поставить щелкнув слева от строки. Пошаговое выполнение - F8, обычное выполнение - F5. Для просмотра текущих значений переменных нужно отобразить "Locals Window"
Пользовательская функция сортировки значений диапазона и вывод массивом
 
kenigfinn, сначала попробуйте отстортировать одномерный массив значений, потом уже переходите на диапазоны. Диапазоны это двумерные массивы.
Код
Dim Arr As Variant, Arr2 As Variant
Arr = Array(2, 5, 7, 1, 9, 8, 3)
Arr2 = Sort0(Arr)

Вообще сортировку не обязательно изобретать, ее легко можно найти в нете.
Многопоточность в VBA
 
Цитата
bedvit написал:
а что должно быть в многопоточной функции из сторонней библиотеки, что бы она была нужна в VBA?
Я бы мог сказать длинный список, чего не хватает в VBA, но это не обязательно связано с многопоточность, функционал для работы с zip, функционал для работы с оффисными файлами (по нормальному, а не через com). Текстовых функций можно было много перенять из js/php/python и т.д. и т.д.
Многопоточность в VBA
 
Цитата
bedvit написал:
как это поможет при реализации многопоточности
Это к мысли об интерпретаторах. Говоря о многопоточности, я думаю в vba возможны 2 варианта - который я описал и использование многопоточных функций из сторонних библиотек. В vba, конечно много чего не хватает и однопоточного vbe7.dll не слишком балует своим арсеналом )
Изменено: testuser - 24.09.2025 15:40:42
Многопоточность в VBA
 
Цитата
bedvit написал:
Можно сделать парсинг строки с каким то набором операторов, типа создать свой скриптовый язык...
На vba есть свой секретный интерпретатор, может интерпетировать все, что помещается в одну строку.
Страницы: 1 2 3 4 5 6 7 8 9 10 11 ... 25 След.
Наверх