OberonCore https://forum.oberoncore.ru/ |
|
BlackBox 2.0 https://forum.oberoncore.ru/viewtopic.php?f=134&t=6819 |
Страница 20 из 20 |
Автор: | Иван Денисов [ Вторник, 08 Август, 2023 00:43 ] |
Заголовок сообщения: | Re: BlackBox 2.0 |
arisu писал(а): возьмите уже у меня нормальные регулярки. код там, конечно, адский жоп — зато работает. я TextCmds под регулярки адаптировал, удобно. в замене вдобавок есть приятные фичи типа «преобразовать в верхний/нижний регистр», «capitalise», и прочая. надо бы ещё вызов команды добавить — в смысле, вызывать команду для обработки subexpressions в заменяторе. положительно не понимаю, как вы без регулярок живёте. Регулярные выражения всё же это уже как дополнение. Не оставляю попытки сохранять минимализм базового фреймворка. |
Автор: | arisu [ Вторник, 08 Август, 2023 12:44 ] |
Заголовок сообщения: | Re: BlackBox 2.0 |
Иван Денисов писал(а): Регулярные выражения всё же это уже как дополнение. Не оставляю попытки сохранять минимализм базового фреймворка. ну, я тут считаю, что движок регулярок — это то, что должно быть сразу в коробке. сам по себе движок — один модуль, без внешних зависимостей. ну, монстр, 80 кб. но это всё ещё лучше, чем CpcRegul, с его бабелем.а как только вы ощутите прелесть регулярок и расширеной замены — то никаких вопросов о том, должно ли это быть сразу в поставке, и вовсе не останется. ;-) |
Автор: | arisu [ Воскресенье, 17 Сентябрь, 2023 17:47 ] |
Заголовок сообщения: | Re: BlackBox 2.0 |
ошибочка в WinFiles: в `NewLocator`: Код: IF (i > 1) & (loc.path[i-1] = "/") OR (loc.path[i-1] = "\") THEN а должно быть так: Код: IF (i > 1) & ((loc.path[i-1] = "/") OR (loc.path[i-1] = "\")) THEN
|
Автор: | Иван Денисов [ Понедельник, 18 Сентябрь, 2023 10:34 ] |
Заголовок сообщения: | Re: BlackBox 2.0 |
arisu писал(а): ошибочка в WinFiles: в `NewLocator`: Код: IF (i > 1) & (loc.path[i-1] = "/") OR (loc.path[i-1] = "\") THEN а должно быть так: Код: IF (i > 1) & ((loc.path[i-1] = "/") OR (loc.path[i-1] = "\")) THEN Большое спасибо, внёс исправление. |
Автор: | arisu [ Пятница, 10 Ноябрь, 2023 01:29 ] |
Заголовок сообщения: | Re: BlackBox 2.0 |
я сейчас не полезу смотреть (простите), но могу вам навскидку сказать одну штуку: текстовые скроллбары пытаются делать вид, что они скролят в каких-то виртуальных пикселах, поэтому домножают позицию на довольно большое число. я в своё время попадал на трапы из-за переполнения, и что-то где-то по этому поводу правил: то ли тупо проверку и clamp перед домножением вкрячил, то ли что-то подобное. возможно, вы на это же самое налетели. простите за невнятное описание, сейчас несколько другим занят, нет рыбов^w силов пальцем в код показать. p.s.: это где-то в сообщениях закопано, там не то чтобы сразу очевидно было: я как обычно раскручивал от трапа обратно, пока не нашёл виноватого где-то аж через три, вроде бы, подсистемы от текста. |
Автор: | arisu [ Пятница, 10 Ноябрь, 2023 01:35 ] |
Заголовок сообщения: | Re: BlackBox 2.0 |
алсо, не связаное с предыдущим. после каких-то изменений (довольно давно) у меня перестала возникать ситуация, когда после некоторых трапов навсегда исчезает каретка. помните, мы про это где-то тут говорили? если у вас тоже — может, вы отследили, вследствие чего? мы, вроде как, оба переписывали работу с окнами и вы мои изменения для восстановления работы поиска брали; я подозреваю, что это с одним из них связано. |
Автор: | Иван Денисов [ Вторник, 16 Апрель, 2024 23:57 ] |
Заголовок сообщения: | Re: BlackBox 2.0 |
Теперь в список ресурсов возможно добавить файл с манифестом. Синтаксис немного замысловатый, чтобы минимально модифицировать структуру парсера. Но всё работает! Код: 1 MANIFEST (1 'BlackBox.exe.manifest')
|
Автор: | Иван Денисов [ Понедельник, 24 Июнь, 2024 15:41 ] |
Заголовок сообщения: | Re: BlackBox 2.0 |
Благодаря бдительности Антона Шелина, после обсуждения в чате https://t.me/blackbox_20 была внесена правка в компиляторе Добавлена строчка Код: INC(DevCPE.dsize, DevCPM.cacheLineSize); DevCPM.cacheLineSize установлен размером 64 байта. DevCPV486.Allocate Код: PROCEDURE Allocate*; VAR gvarSize: INTEGER; BEGIN DevCPM.errpos := DevCPT.topScope.adr; (* text position of scope used if error *) gvarSize := 0; Variables(DevCPT.topScope.scope, gvarSize); DevCPE.dsize := -gvarSize; INC(DevCPE.dsize, DevCPM.cacheLineSize);(* gap to prevent cache line share between code and data*) Objects(DevCPT.topScope.right) END Allocate; Модуль для проверки: Код: MODULE Test3; VAR j* : INTEGER; PROCEDURE Do1*;BEGIN FOR j:=0 TO 100000000-1 DO END;INC(j);END Do1; PROCEDURE Do2*;BEGIN FOR j:=0 TO 100000000-1 DO END;INC(j);END Do2; PROCEDURE Do3*;BEGIN FOR j:=0 TO 100000000-1 DO END;INC(j);END Do3; PROCEDURE Do4*;BEGIN FOR j:=0 TO 100000000-1 DO END;INC(j);END Do4; END Test3. Test3.Do1 Test3.Do2 Test3.Do3 Test3.Do4 В старом Блэкбоксе выполнение последней процедуры очень долгое, так как данные и код попадают в одну строчку кэша процессора и он код постоянно из-за этого перезагружает при изменении данных. |
Автор: | arisu [ Вторник, 25 Июнь, 2024 08:51 ] |
Заголовок сообщения: | Re: BlackBox 2.0 |
спасибо! ещё начало цикла можно на четыре байта равнять: немножко, но помогает. надо будет глянуть — добавил ли я это, или только собирался. если добавил — то выдерну патч. |
Автор: | Иван Денисов [ Среда, 31 Июль, 2024 18:56 ] |
Заголовок сообщения: | Re: BlackBox 2.0 |
Обновил код StdStdCFrames, там немного упрощено вычисление цветов. Доработаны скроллбары, и сделано, чтобы элементы управления корректно масштабировались. Осталось ещё сделать деревья, устранить баги в моей реализации многострочных полей, и это уже очень здорово! Почти всё готово. |
Автор: | arisu [ Воскресенье, 20 Октябрь, 2024 16:08 ] |
Заголовок сообщения: | Re: BlackBox 2.0 |
драные в задницу дегенераты из гугеля в очередной раз положили на стандарты жопу, которая у них вместо головы. идиотский zopfli иногда генерирует deflate-потоки, в которых можно встретить смещение 32768. не спрашивайте: они гугель, им всё можно. стандарты — это для тупых биокарликов. это я к чему? в inflate, которое с моей png-читалкой, надо сделать фикс: в Код: PROCEDURE (inf: Inflater) InflatedBlock (VAR btdest: ARRAY OF SHORTCHAR; beg, end: INTEGER): INTEGER, NEW; , строку Код: IF (offs < 0) OR (offs > 32767(*inf.dictEnd*)) THEN inf.SetErrorState; RETURN -1 END; (* error! *) следует заменить на две: Код: IF (offs < 0) OR (offs > 32768(*inf.dictEnd*)) THEN inf.SetErrorState; RETURN -1 END; (* error! *) offs := offs MOD 32768; ну и чтобы два раза не вставать: в Код: PROCEDURE (inf: Inflater) ProcessBlockHeader, NEW; в CASE добавить: Код: | 3: inf.SetErrorState (* invalid block code *) это не критично, просто иначе вместо возврата ошибки на кривом потоке надувалка трапнется. |
Автор: | arisu [ Среда, 23 Октябрь, 2024 03:54 ] |
Заголовок сообщения: | Re: BlackBox 2.0 |
p.s.: окей. технически это дырка в RFC 1951 (который вообще очень плохо написан, кстати). там сказано, что смещение должно быть в диапазоне, но не сказано, считать ли диапазоном номера байтов, или размер словаря. технически 32768 — это получается «copy literal n times», причём сначала надо заполнить словать один раз (потому что RFC позволяет вставлять байты из неинициализированого словаря). я продолжаю считать, что нормальный компрессор не будет делать такие трюки, и хоть они легальны, но зопфля всё равно корявая. |
Автор: | Иван Денисов [ Среда, 23 Октябрь, 2024 13:16 ] |
Заголовок сообщения: | Re: BlackBox 2.0 |
Спасибо, внесу правку |
Автор: | Иван Денисов [ Воскресенье, 10 Ноябрь, 2024 02:01 ] |
Заголовок сообщения: | Re: BlackBox 2.0 |
Добавил выбор цвета по-умолчанию в настройках. Блэкбокс имел всегда такую опцию для сохранения цвета Ports.defaultColor, но не было возможности рисовать любым цветом этот самый defaultColor. Теперь в настройках любой цвет возможно выбрать для этой цели. Опция удобна для работы светлым шрифтом по тёмному фону. |
Страница 20 из 20 | Часовой пояс: UTC + 3 часа |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |