OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Вторник, 03 Декабрь, 2024 19:38

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 395 ]  На страницу Пред.  1 ... 16, 17, 18, 19, 20
Автор Сообщение
 Заголовок сообщения: Re: BlackBox 2.0
СообщениеДобавлено: Вторник, 08 Август, 2023 00:43 
Аватара пользователя

Зарегистрирован: Четверг, 08 Октябрь, 2009 15:00
Сообщения: 3806
arisu писал(а):
возьмите уже у меня нормальные регулярки. ;-) код там, конечно, адский жоп — зато работает. я TextCmds под регулярки адаптировал, удобно. в замене вдобавок есть приятные фичи типа «преобразовать в верхний/нижний регистр», «capitalise», и прочая. надо бы ещё вызов команды добавить — в смысле, вызывать команду для обработки subexpressions в заменяторе. положительно не понимаю, как вы без регулярок живёте.

Регулярные выражения всё же это уже как дополнение. Не оставляю попытки сохранять минимализм базового фреймворка.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: BlackBox 2.0
СообщениеДобавлено: Вторник, 08 Август, 2023 12:44 

Зарегистрирован: Воскресенье, 25 Декабрь, 2022 23:14
Сообщения: 1533
Иван Денисов писал(а):
Регулярные выражения всё же это уже как дополнение. Не оставляю попытки сохранять минимализм базового фреймворка.
ну, я тут считаю, что движок регулярок — это то, что должно быть сразу в коробке. сам по себе движок — один модуль, без внешних зависимостей. ну, монстр, 80 кб. но это всё ещё лучше, чем CpcRegul, с его бабелем.

а как только вы ощутите прелесть регулярок и расширеной замены — то никаких вопросов о том, должно ли это быть сразу в поставке, и вовсе не останется. ;-)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: BlackBox 2.0
СообщениеДобавлено: Воскресенье, 17 Сентябрь, 2023 17:47 

Зарегистрирован: Воскресенье, 25 Декабрь, 2022 23:14
Сообщения: 1533
ошибочка в 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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: BlackBox 2.0
СообщениеДобавлено: Понедельник, 18 Сентябрь, 2023 10:34 
Аватара пользователя

Зарегистрирован: Четверг, 08 Октябрь, 2009 15:00
Сообщения: 3806
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

Большое спасибо, внёс исправление.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: BlackBox 2.0
СообщениеДобавлено: Пятница, 10 Ноябрь, 2023 00:49 
Аватара пользователя

Зарегистрирован: Четверг, 08 Октябрь, 2009 15:00
Сообщения: 3806
Бывает вот такой баг, при попытке прокрутки документа после перехода на позицию в документе, которая требует сдвига лифта скроллбара. Похоже что-то неверно немного с алгоритмом прокрутки документов.


Вложения:
bugAjustLines.png
bugAjustLines.png [ 310.9 КБ | Просмотров: 510922 ]
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: BlackBox 2.0
СообщениеДобавлено: Пятница, 10 Ноябрь, 2023 01:29 

Зарегистрирован: Воскресенье, 25 Декабрь, 2022 23:14
Сообщения: 1533
я сейчас не полезу смотреть (простите), но могу вам навскидку сказать одну штуку: текстовые скроллбары пытаются делать вид, что они скролят в каких-то виртуальных пикселах, поэтому домножают позицию на довольно большое число. я в своё время попадал на трапы из-за переполнения, и что-то где-то по этому поводу правил: то ли тупо проверку и clamp перед домножением вкрячил, то ли что-то подобное. возможно, вы на это же самое налетели. простите за невнятное описание, сейчас несколько другим занят, нет рыбов^w силов пальцем в код показать.

p.s.: это где-то в сообщениях закопано, там не то чтобы сразу очевидно было: я как обычно раскручивал от трапа обратно, пока не нашёл виноватого где-то аж через три, вроде бы, подсистемы от текста.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: BlackBox 2.0
СообщениеДобавлено: Пятница, 10 Ноябрь, 2023 01:35 

Зарегистрирован: Воскресенье, 25 Декабрь, 2022 23:14
Сообщения: 1533
алсо, не связаное с предыдущим. после каких-то изменений (довольно давно) у меня перестала возникать ситуация, когда после некоторых трапов навсегда исчезает каретка. помните, мы про это где-то тут говорили? если у вас тоже — может, вы отследили, вследствие чего? мы, вроде как, оба переписывали работу с окнами и вы мои изменения для восстановления работы поиска брали; я подозреваю, что это с одним из них связано.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: BlackBox 2.0
СообщениеДобавлено: Вторник, 16 Апрель, 2024 23:57 
Аватара пользователя

Зарегистрирован: Четверг, 08 Октябрь, 2009 15:00
Сообщения: 3806
Теперь в список ресурсов возможно добавить файл с манифестом.
Синтаксис немного замысловатый, чтобы минимально модифицировать структуру парсера. Но всё работает!
Код:
1 MANIFEST (1 'BlackBox.exe.manifest')


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: BlackBox 2.0
СообщениеДобавлено: Понедельник, 24 Июнь, 2024 15:41 
Аватара пользователя

Зарегистрирован: Четверг, 08 Октябрь, 2009 15:00
Сообщения: 3806
Благодаря бдительности Антона Шелина, после обсуждения в чате 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



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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: BlackBox 2.0
СообщениеДобавлено: Вторник, 25 Июнь, 2024 08:51 

Зарегистрирован: Воскресенье, 25 Декабрь, 2022 23:14
Сообщения: 1533
спасибо! ещё начало цикла можно на четыре байта равнять: немножко, но помогает. надо будет глянуть — добавил ли я это, или только собирался. если добавил — то выдерну патч.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: BlackBox 2.0
СообщениеДобавлено: Среда, 31 Июль, 2024 18:56 
Аватара пользователя

Зарегистрирован: Четверг, 08 Октябрь, 2009 15:00
Сообщения: 3806
Обновил код StdStdCFrames, там немного упрощено вычисление цветов. Доработаны скроллбары, и сделано, чтобы элементы управления корректно масштабировались.

Осталось ещё сделать деревья, устранить баги в моей реализации многострочных полей, и это уже очень здорово!

Почти всё готово.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: BlackBox 2.0
СообщениеДобавлено: Воскресенье, 20 Октябрь, 2024 16:08 

Зарегистрирован: Воскресенье, 25 Декабрь, 2022 23:14
Сообщения: 1533
драные в задницу дегенераты из гугеля в очередной раз положили на стандарты жопу, которая у них вместо головы. идиотский 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 *)

это не критично, просто иначе вместо возврата ошибки на кривом потоке надувалка трапнется.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: BlackBox 2.0
СообщениеДобавлено: Среда, 23 Октябрь, 2024 03:54 

Зарегистрирован: Воскресенье, 25 Декабрь, 2022 23:14
Сообщения: 1533
p.s.: окей. технически это дырка в RFC 1951 (который вообще очень плохо написан, кстати). там сказано, что смещение должно быть в диапазоне, но не сказано, считать ли диапазоном номера байтов, или размер словаря. технически 32768 — это получается «copy literal n times», причём сначала надо заполнить словать один раз (потому что RFC позволяет вставлять байты из неинициализированого словаря). я продолжаю считать, что нормальный компрессор не будет делать такие трюки, и хоть они легальны, но зопфля всё равно корявая.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: BlackBox 2.0
СообщениеДобавлено: Среда, 23 Октябрь, 2024 13:16 
Аватара пользователя

Зарегистрирован: Четверг, 08 Октябрь, 2009 15:00
Сообщения: 3806
Спасибо, внесу правку


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: BlackBox 2.0
СообщениеДобавлено: Воскресенье, 10 Ноябрь, 2024 02:01 
Аватара пользователя

Зарегистрирован: Четверг, 08 Октябрь, 2009 15:00
Сообщения: 3806
Добавил выбор цвета по-умолчанию в настройках. Блэкбокс имел всегда такую опцию для сохранения цвета Ports.defaultColor, но не было возможности рисовать любым цветом этот самый defaultColor. Теперь в настройках любой цвет возможно выбрать для этой цели.

Опция удобна для работы светлым шрифтом по тёмному фону.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 395 ]  На страницу Пред.  1 ... 16, 17, 18, 19, 20

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 0


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Вся информация, размещаемая участниками на конференции (тексты сообщений, вложения и пр.) © 2005-2024, участники конференции «OberonCore», если специально не оговорено иное.
Администрация не несет ответственности за мнения, стиль и достоверность высказываний участников, равно как и за безопасность материалов, предоставляемых участниками во вложениях.
Без разрешения участников и ссылки на конференцию «OberonCore» любое воспроизведение и/или копирование высказываний полностью и/или по частям запрещено.
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB