Игры с Evaluate

Clarion, Clarion 7

Модератор: Дед Пахом

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Аватара пользователя
Губин Игорь
✯ Ветеран ✯
Сообщения: 2329
Зарегистрирован: 16 Сентябрь 2005, 16:35
Откуда: Москва
Поблагодарили: 18 раз

Игры с Evaluate

Сообщение Губин Игорь »

finsoftrz писал(а): 05 Август 2023, 20:18 Ну, не совсем разбор, достаточно найти первый "=". Других вариантов я не знаю, скорее всего, их и нет.
Как не назови, суть от этого не меняется. Сложности в этом нет, но потери в скорости есть.
Это я только кажусь дураком! На самом деле я полный идиот!
Аватара пользователя
finsoftrz
✯ Ветеран ✯
Сообщения: 4618
Зарегистрирован: 06 Ноябрь 2014, 12:48
Благодарил (а): 6 раз
Поблагодарили: 37 раз

Игры с Evaluate

Сообщение finsoftrz »

Лайфхак. Можешь редактор с подсветкой синтаксиса и прочими прибамбасами прицепить в программу на базе scintilla.
C6/C11, ШВС, tps/btrieve.
Аватара пользователя
finsoftrz
✯ Ветеран ✯
Сообщения: 4618
Зарегистрирован: 06 Ноябрь 2014, 12:48
Благодарил (а): 6 раз
Поблагодарили: 37 раз

Игры с Evaluate

Сообщение finsoftrz »

Губин Игорь писал(а): 05 Август 2023, 20:19
finsoftrz писал(а): 05 Август 2023, 20:18 Ну, не совсем разбор, достаточно найти первый "=". Других вариантов я не знаю, скорее всего, их и нет.
Как не назови, суть от этого не меняется. Сложности в этом нет, но потери в скорости есть.
По сравнению с компилированным кодом, безусловно.
C6/C11, ШВС, tps/btrieve.
Аватара пользователя
Губин Игорь
✯ Ветеран ✯
Сообщения: 2329
Зарегистрирован: 16 Сентябрь 2005, 16:35
Откуда: Москва
Поблагодарили: 18 раз

Игры с Evaluate

Сообщение Губин Игорь »

Дед Пахом писал(а): 05 Август 2023, 20:19 Я и слов таких не знаю.
А придётся... Если, конечно, в клиентах оборонка, газовики, нефтянка и т.п.
Там принято жёсткое решение по уходу с виндов. Вопрос, лишь, в сроках. В одной конторе ещё работают на виндах, но уже отказываются рассматривать покупку софта не работающего под вайн или не имеющего нативной версии под линукс.
Это я только кажусь дураком! На самом деле я полный идиот!
Аватара пользователя
Дед Пахом
Старичок
Сообщения: 3134
Зарегистрирован: 07 Июль 2005, 16:51
Откуда: Москва, Россия
Благодарил (а): 10 раз
Поблагодарили: 28 раз
Контактная информация:

Игры с Evaluate

Сообщение Дед Пахом »

Я тебе решение предлагаю, а ты мне про какую-то контору.
С уважением, ДП
Аватара пользователя
Губин Игорь
✯ Ветеран ✯
Сообщения: 2329
Зарегистрирован: 16 Сентябрь 2005, 16:35
Откуда: Москва
Поблагодарили: 18 раз

Игры с Evaluate

Сообщение Губин Игорь »

finsoftrz писал(а): 05 Август 2023, 20:20 Лайфхак. Можешь редактор с подсветкой синтаксиса и прочими прибамбасами прицепить в программу на базе scintilla.
А нафига? :dizzy: Тогда уж и интерфейс в сбермегамаркету для заказа чипсов. :lol:

Формулы набивают не пользователи. Они заданы изначально, могут быть свои для каждой записи и могут меняться, время от времени.
Это я только кажусь дураком! На самом деле я полный идиот!
Аватара пользователя
Губин Игорь
✯ Ветеран ✯
Сообщения: 2329
Зарегистрирован: 16 Сентябрь 2005, 16:35
Откуда: Москва
Поблагодарили: 18 раз

Игры с Evaluate

Сообщение Губин Игорь »

Дед Пахом писал(а): 05 Август 2023, 20:28 Я тебе решение предлагаю, а ты мне про какую-то контору.
У меня серийный софт. Решение должно учитывать интересы и таких контор. Да и сейчас у них денег становится всё больше.
Это я только кажусь дураком! На самом деле я полный идиот!
Аватара пользователя
Дед Пахом
Старичок
Сообщения: 3134
Зарегистрирован: 07 Июль 2005, 16:51
Откуда: Москва, Россия
Благодарил (а): 10 раз
Поблагодарили: 28 раз
Контактная информация:

Игры с Evaluate

Сообщение Дед Пахом »

Для нефтяников: vbscript/javascript это не файл, запускаемый посредством RUN. Это _технология_ Active Scripting, встроенная в Windows с 1875 года, позволяет выполнять скрипты в виртуальной скрипт-машине. Есть готовая адаптация на Clarion в исходниках. Нет внешних dll, ocx, exe. По сути, это специфическое Windows API.
С уважением, ДП
Аватара пользователя
Губин Игорь
✯ Ветеран ✯
Сообщения: 2329
Зарегистрирован: 16 Сентябрь 2005, 16:35
Откуда: Москва
Поблагодарили: 18 раз

Игры с Evaluate

Сообщение Губин Игорь »

Дед Пахом писал(а): 05 Август 2023, 20:43 Это _технология_ Active Scripting, встроенная в Windows с 1875 года
1875? Ну нифига себе... :dizzy:

Речь о том, как эта технология работает под Linux/Wine. Требует ли она подключения дополнительных модулей. Есть ли эти модули в репозиториях одобренных свыше вариантов Линукса... И т.д. И т.п.

Т.е., если раньше на слова Линукс и Макось я кривил рожу, то теперь вопросы с маками, практически, исчезли, а вот работоспособность под Linux/Wine становится обязательной и превалирующей.
Это я только кажусь дураком! На самом деле я полный идиот!
Аватара пользователя
Дед Пахом
Старичок
Сообщения: 3134
Зарегистрирован: 07 Июль 2005, 16:51
Откуда: Москва, Россия
Благодарил (а): 10 раз
Поблагодарили: 28 раз
Контактная информация:

Игры с Evaluate

Сообщение Дед Пахом »

Погуглил "wine active scripting", нашёл статью про какой-то релиз Wine от 16-го года, в списке изменений есть "Active Scripting improvements".
С уважением, ДП
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7378
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 13 раз
Поблагодарили: 48 раз

Игры с Evaluate

Сообщение Игорь Столяров »

Губин Игорь писал(а): 05 Август 2023, 19:12 C = 10*B + D
Проблема в том, что Вы не знаете сами является ли эта операция логической или вычислительной с присвоением.
Evaluate расчитает эту строку как логическое сравнение. Если Вы знаете по какому признаку у Вас операция будет
вычислительной - отсекайте всё что справа от "=", расчитывайте и присваивайте тому что слева от "=". Вот и всё. :)
За теми кто отстал - не возвращаться. (С) Кодекс
Аватара пользователя
Губин Игорь
✯ Ветеран ✯
Сообщения: 2329
Зарегистрирован: 16 Сентябрь 2005, 16:35
Откуда: Москва
Поблагодарили: 18 раз

Игры с Evaluate

Сообщение Губин Игорь »

гляну...
Это я только кажусь дураком! На самом деле я полный идиот!
Аватара пользователя
Губин Игорь
✯ Ветеран ✯
Сообщения: 2329
Зарегистрирован: 16 Сентябрь 2005, 16:35
Откуда: Москва
Поблагодарили: 18 раз

Игры с Evaluate

Сообщение Губин Игорь »

Игорь Столяров писал(а): 05 Август 2023, 21:25 Если Вы знаете по какому признаку у Вас операция будет
вычислительной - отсекайте всё что справа от "=", расчитывайте и присваивайте тому что слева от "=". Вот и всё.
да ну, а мужики-то не знают... :dizzy: :lol:

Почему так работает, было понятно после первой же проверки алгоритма. Вопрос в том, что мне жутко не хотелось разбирать формулы и играться с присвоением для каждой записи. Я писал, что есть, относительно очевидный, способ с присвоением через вызываемую в Evaluate дополнительную функцию. Но это, всё равно, накладные расходы, хотя и меньшие, чем с разбором.

В общем, понятно, что фичи нет. Буду тестировать варианты.
Это я только кажусь дураком! На самом деле я полный идиот!
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7378
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 13 раз
Поблагодарили: 48 раз

Игры с Evaluate

Сообщение Игорь Столяров »

Губин Игорь писал(а): 05 Август 2023, 21:31 Буду тестировать варианты
Рассмотрите вот такой вариант.
Т.к. символ "=" вызывает неоднозначность от контекста использования,
добавляем в синтаксис понятие "присвоить значение". Ну например "<<".

1. Проверяем строку на наличие символа "<<".
Если его нет - расчитываем как обычно результат логического сравнения.

2. Если есть (C << 10*B + D) - разрезаем строку по "<<", расчитываем правую часть
и присваиваем результат переменной в левой части. Это две строки кода.

3. Всё. Если оплата повремённая и Заказчик финансово состоялся -
то конечно уже лучше притянуть за уши скрипты и т.д. :)
За теми кто отстал - не возвращаться. (С) Кодекс
Аватара пользователя
finsoftrz
✯ Ветеран ✯
Сообщения: 4618
Зарегистрирован: 06 Ноябрь 2014, 12:48
Благодарил (а): 6 раз
Поблагодарили: 37 раз

Игры с Evaluate

Сообщение finsoftrz »

Губин Игорь писал(а): 05 Август 2023, 21:31
Игорь Столяров писал(а): 05 Август 2023, 21:25 Если Вы знаете по какому признаку у Вас операция будет
вычислительной - отсекайте всё что справа от "=", расчитывайте и присваивайте тому что слева от "=". Вот и всё.
да ну, а мужики-то не знают... :dizzy: :lol:

Почему так работает, было понятно после первой же проверки алгоритма. Вопрос в том, что мне жутко не хотелось разбирать формулы и играться с присвоением для каждой записи. Я писал, что есть, относительно очевидный, способ с присвоением через вызываемую в Evaluate дополнительную функцию. Но это, всё равно, накладные расходы, хотя и меньшие, чем с разбором.

В общем, понятно, что фичи нет. Буду тестировать варианты.т
Потестируй ещё bindexpression. Я не пользовался, а судя по доке, преобразует выражение в некий промежуточный байт код. В то время как evaluate при каждом вызове делает синтаксический разбор. Если делается часто, например, для каждой записи из списка, должно заметно ускорить вычисления.
C6/C11, ШВС, tps/btrieve.
Ответить