| RUSSIAN(Русский) | ENGLISH |  |
Эта функция использует куки. Если браузер не принимает куки, используется светлая тема.

## AL-IV: История версий

#### 19.03.2025 - версия 5.0.2
Исправления: FPC: Восстановлена компиляция под linux;

#### 16.03.2025 - версия 5.0.1
Изменения: C#: {Form}.mouse_xxxx - координаты мыши в событиях мыши возвращаются на момент нажатия / отжатия / перемещения мыши, а не на момент обработки; += `{Memory_stream|_fast}`, старый {Memory_stream} переименован в {Memory_stream_contig|uous_but_slow}; += `{Scan_cat}` - сканирование директории порциями; += `{List_str}` - сортированный список строк с быстрым поиском и ассоциированным тэгом; Исправления: Компилятор: += при поиске констант, декларированных в импортированных модулях, наличие константы с совпадающем именем проверяется во всех модулях, и в случае обнаружения дублирующихся имен генерируется сообщение об ошибке; Обновления: Color Cat v1.6; Zoomer v1.2; Demo\Clock v3.3.3;

#### 23.02.2025
Новости: добавлен домен al-4.ru, который может использоваться для доступа к сайту АЛФОР; для доступа к подсайту KOL может использоваться адрес kol.al-4.ru;

#### 20.02.2025 - версия 5.0
Изменения: += `LOCAL : ... ;` - блок для локальных переменных: переменные, объявленные в таком блоке, инициализируются при входе в блок (каждый раз), и освобождаются при выходе из блока, но не могут использоваться за пределами блока; += `NEXT i +=` expr += `NEXT i -=` expr += `NEXT v.INDEX +=` expr += `NEXT v.INDEX -=` expr Для циклов `FOR i IN` [...] / `FOR v IN A`[...] добавлен оператор продолжения `NEXT`, который позволяет пропустить заданное количество итераций (не менее одной); {File_stream} += Anyway_read_write_file_stream, позволяет открывать файл на чтение/запись с возможностью (разрешением) открыть его одновременно в другом (других) приложении (приложениях) хотя бы на чтение; += `{Memory_mapping}` - класс для отражения файла в память (межпроцессная коммуникация, скорость обмена выше в 5..9 раз, чем с использованием {File_stream}); Исправления: Delphi/FPC: присваивание значения строчной константе вызывало проблему: временно решено для простых строк, заключенных в одну пары двойных кавычек; исправления в {File_dialog}, {Gif}; FPC - Заметка (не исправление): наконец встретились версия Лазарус 3.8 и bgrabitmap 11.6.3 и оказались совместимы друг с другом (как минимум под Windows); Delphi/KOL + Оптимизация (I1): inline-оптимизация отключена для функций, имеющих локальные переменные и параметры - массивы (проблема возникала в Delphi/KOL, но 100%-ной уверенности, что это только для KOL или только для Delphi может вызывать проблемы, нет);

#### 9.02.2025 - версия 4.5.1
Изменения: Delphi/VCL+KOL: изменена реализация процедур-переадресаторов на методы и функции классов с использованием ассемблерного кода. Добавлена опция /$NOJMP для возврата прежнего варианта; Исправления: Delphi/FPC: если главная форма была унаследована от {Form_common}, то ее закрытие не работало;

#### 26.01.2025 - версия 4.5
Изменения: C#: изменен способ защиты объекта, чей метод исполняется: вместо временного увеличения/уменьшения счетчика использования в "подозрительных" методах, внутренний объект This_obj организуется как указатель на слабую ссылку на объект (что в случае уничтожения объекта внутри метода подменяет объект ссылкой на NONE-объект; Delphi/FPC: добавлен метод защиты, ранее применявшийся в реализации C# (до этого защиты не было, кроме некоторой надежды на то, что объект в куче сразу не затирается некоторое время, и его поля все еще на что-то указывают. К сожалению, это не всегда работает, поэтому и добавлена защита. Хотя новый способ, годный для C#, для Delphi не подходит, тем не менее пригодился старый: на время выполнения метода, счетчик использования объекта THIS временно увеличивается. чтобы предотвратить его уничтожение); В то же время, понятие "подозрительной" функции расширено: не только наличие в функции манипуляций с добавлением/удалением элементов массивов объектов, но и присваивания значений объектным переменным (разумеется, каскадное расширение подозрительных функций на все функции, которые их вызывают, сохраняется); {Form}.ask, message: цвет сообщения устанавливается в BUTTON_TEXT (иначе, если была задана общая тема для форм, результат мог быть плохо виден; {Form}.Set_position: предварительный выбор монитора в мультимониторной конфигурации выполняется не по точке (Left,Top), а по площади максимального пересечения (предотвращает восстановление формы не на том мониторе / неверное восстановление размеров в методе Restore_bounds); += {Form}.Set_popup_point({point} pt); Delphi/VCL: теперь по умолчанию колонки не имеют границ и линеек прокруток при переполнении контролами, для возврата к прежнему поведению требуется установить символ SCROLLED_COLUMNS; Так же; колонки наследуют цвет родительской формы. Исправления: Delphi/FPC: CONST INT name = expression - не работало для выражений, исправлено (но не должно быть элементов, не совместимых с Pascal); Delphi: {Save_dialog} - выбранное расширение не возвращалось в имени файла, если поле Default_ext не было присвоено; Delphi/VCL: deactivate - событие не было реализовано; Компиляция выражений начинающихся с {Type}.some_fun(...) в правой части присваивания - не работала (полагая, что '{' начинает блочный оператор в некоторых случаях) - устранено дополнительным требованием в этом случае отделять символ начала блока от первого вложенного оператора хотя бы одним пробелом); Сброс счетчика уровней вложенности при смене типа операторных скобок не работал - исправлено;

#### 12.01.2025 - версия 4.4.4
Изменения: {Form}.{controls_layout} += 'CONTROLS_MANUAL' - положение визуальных объектов вообще не изменяется автоматически для такой родительской колонки; Исправления: В операторе присваивания, если в левой части выражение начиналась с функции, и результатом был элемент массива, компилятор не мог распознать присваивание; C#: Remove - удаление элемента из массива объектов вызывало исключение, если на объект в этот момент ссылка была только из этого массива; Free Pascal: генерация кода для работы с символами строки RESULT функции, возвращающей строку; Free Pascal: arr_of_structures[].Allocate(n); C#: {File_dialog} - диалог сохранения был сломан - исправлено; Компилятор выдавал неожиданное сообщение о несуществующей ошибке "...несколько .. в одном операторе..." - в декларации переменной, действительно следующей за оператором, использующим .. в левой части присваивания;

#### 22.12.2024 - версия 4.4.3
Изменения: += Символ '`$`' в коде полностью игнорируется (кроме строчных констант), но может использоваться в частях `BUT` операторов `LIKE .... 'label'`, в качестве якорей для поиска заданных образцов; `{Form}` += `menu_or_sender_alias`: работает как прежде `sender_alias`, в первую очередь возвращая `menu_alias`, `sender_alias` теперь возвращает `menu_alias` только если `sender_alias==""` (пустая строка); += `,PUBLIC` модификатор теперь доступен для полей класса; `{Dialog_file}` += Multiselect (для диалога открытия файлов); `{Form_common}`: += `Set_all_forms_foreground` (работает вместе с / аналогично `Set_all_forms_background`);

#### 8.12.2024 - версия 4.4.2
Изменения: += {Form}.Set_icon({Bitmap}) ; += инициализация полей класса типа перечислений (ранее бала доступна только для {bool} и {byte}); Исправления: Delphi/FPC: генерация цикла по элементам фиксированного массива; Delphi.KOL: {Canvas}+{AL4_drawing}: не инициализировалась канва альфа-слоя A в Get_canvas; IDE/Designer: по команде Events\menu_item, новые идентификаторы меню вставлялись дважды;

#### 27.11.2024 - версия 4.4.1
Изменения: В выражении ! после точки возможно использовать перед полями и обращениями к элементам массивов-полей: CASE A.!Contains_B ? ... ; Исправления: IDE/Designer: мог не распознаваться контрол на форме в CONSTRUCT'е (даже корректно отформатированный, но с пустой строкой после строки создания); IDE/Designer: исправлена операция дублирования контрола;

#### 17.11.2024 - версия 4.4.0
Изменения: Добавлен оператор `LIKE CLASS {Имя_класса}, BUT (...==>...), ...` уровня класса: позволяет сформировать класс на основе текста другого класса, модифицировав его предварительно (LIKE CLASS должен следовать за заголовком класса, весь остальной начальный текст класса игнорируется); `LIKE ... BUT(xxx==>yyy)*?` - позволяет не контролировать количество выполненных замен (но хотя бы одна должна быть); {OpenAL}: добавлено перечисление {device_name}, для использования в качестве параметра при создании контекста (после удаления апострофов); Исправления: Генерация кода вызова функции, возвращающей (возможно) новый объект: вызывался повторно CONSTRUCT для уже созданного объекта; C#: Некорректное размещение кнопок в диалоге {Form}.Ask; C#: генерация значения именованной константы типа ENUM, в случае, когда значение первое (с индексом 0) в списке вариантов этого перечисления; Функция класса (не метод) не могла получать доступ к не-публичным полям объектов своего класса; В случае инлайн-вставки кода функции, возвращающей результат, всегда генерировались дополнительные инициализации переменной RESULT, это не требуется, если первым оператором "вставляемой" функции является присваивание значения переменной RESULT; Оператор LIKE не учитывал новые виды скобок { }, <-- -->, BEGIN/begin END/end при подсчете уровней, запись ключевых слов операторов только в нижнем регистре (CASE-->case, FOR-->for...); {OpenAL}: в системе без установленного OpenAL, приложение завершалось с исключением; C#: {OpenAL} исправлены декларации DLLImport;

#### 11.11.2024 - версия 4.3.3
Изменения: C#: Если определена переменная среды CSC_PATH, то используется компилятор по этому пути; {Form}.Bring_to_front не активирует форму, только выносит ее на передний план; Исправления: Компиляция CASE условие { ... Компиляция ==> } Delphi(VCL/KOL)/FPC: {Configuration}.New_write_config|uration - не работал даже в HKEY_CURRENT_USER; INLINE оптимизация: не инициализировалась внутренняя переменная RESULT;

#### 1.11.2024 - версия 4.3.2
Исправления: Delphi/FPC: использовался неверный тип Integer вместо Byte при генерации обращения к элементам массивов перечислений; Компиляция CASE условие { ... Компиляция ==> }

#### 30.10.2024 - версия 4.3.1
Изменения: Модификатор класса BYTES устарел и игнорируется, наличий операций с типом BYTE (фактически с перечислением {byte} теперь никак не осуждается и не ограничивается); Исправления: Встроенная функция Name не применялась к {bool}, хотя теперь этот тип по определению (теперь) является перечислением; CASE BYTE ? ['01', '02', ... '9F']: ... - не работало такое использование байтовых констант; Неверно запрещалось использовать побитовые операции в индексах массивов, даже если там и не участвовали переменные с атрибутом INDEXING; IDE/Show errors: Неверно позиционировалось на классе, если ошибка возникала на этапе предварительного анализа исходного текста, еще до того как класс был декодирован, и в текст ошибки попадал путь к исходному файлу; {Form}+{Label}+do_adjust_controls: ширина метки, когда она занимает всю строку, все равно обрезалась по ширине метки, установленной для колонки (вертикальное расположение контролов в колонке);

#### 20.10.2024 - версия 4.3.0
Изменения: В именах элементов перечислений в фигурных скобках допускается использовать символ '-', а так же начинать имя типа перечисления не с буквы; Добавлен класс `{Basic_types}`, который подключается ко всем модулям классов без упоминания его в директиве `IMPORT`. Введены типы перечислений `{bool|ean}` и `{byte|_8_bits}` (определены в классе `{Basic_types}`), имена типов `BYTE` и `BOOL|EAN` теперь будут считаться устаревшими и сохраняются только для совместимости - как синоним этих двух перечислений. Максимальное число предупреждений по умолчанию увеличено до 1000. IDE: удален код, связанный с трансляцией ключевых слов. Из дистрибутива исключена директория Compiled, содержащая первичный компилятор поколения 0. Он может быть пересобран открытием решения AL-IV.sln в корне архива и сборкой его в Visual Studio, с последующим запуском полученного первичного компилятора командным файлом _1_compile_cs_(by_Primary).cmd; Исправления: Delphi VCL (только!) + {Form}: после небольшого изменения кода 24.12.2023, приложение Test_visual_projects\Test_many_forms перестало запускаться нормально... Возвращен рабочий вариант кода. IDE/Report Editor - исправлено (Исключение Too deep recursion, приложение работало только с постоянным подтверждением "да, продолжить");

#### 16.10.2024 - версия 4.2.0
Изменения: Синтаксис: удалена поддержка русскоязычных ключевых слов (а также перевода названий функций и т.п.); Синтаксис: удалена поддержка синтаксиса SEAL (новая версия с мульти-скобками { }, : ;, <-- -->, begin/end, BEGIN/END даёт практически то же и даже больше); Для функций добавлен модификатор `PRIORITY(n)` или `PRIORITY LIKE(операция)`, позволяющий задавать приоритет для двухпараметрических функций с результатом, которые могут вызываться в виде X \fun\ y; Добавлена возможность указывать унарную операцию '!' не только перед всем выражением, но и после символа '.' в цепочке вызовов функций, например, `A.!Equal(B)` а так же в том числе в форме вызова "бинарной" функции: `A \!Equal\ B A \{Klass}.!Equal\ B A \!{Klass}.Equal\ B A \!(X).Equal\ B A \(X).!Equal\ B` Но не допускается при этом указывать операцию '!' дважды в этой последовательности в отношении одного операнда. Исправления: Компилятор 0-го поколения - компилируемость восстановлена; Передача параметра THIS для 2-параметрических методов при вызове в форме бинарной операции: X \(выражение).method\ Y

#### 4.10.2024 - версия 4.1.1
Изменения: Синтаксис: в случае, если условие ветви в последовательном CASE занимает несколько строк, компилятор требует, чтобы знак '?' был либо последним символом в строке, либо первым (либо единственным). /Хотя это нужно скорее для упрощения кода редактора IDE и ускорения его работы/. IDE: поправки; Стартует отказ от поддержки русскоязычных ключевых слов. Исправления: Компилятор: обработка скобок `<-------- ---------->`; IDE: тормоза на файле с END без пустой строки перед ним; Компилятор: `//комментарии` после `.` в последнем выражении в функции мешали; Linux: компиляция в Linux восстановлена (для Lazarus 1.x, а так же проверено для Lazarus 3.0 (Debian package 3.0+dfsg1-8build3) + FPC 3.2.2), и видимо работает и для Lazarus версии 3.4 и Typhon 8.x (но устанавливать их приходится без Synaptic менеджера пакетов, что лениво делать и может привести к конфликтам пакетов); Если компиляция происходит на подключенной к Linux-машине (через cifs) расшаренной папке Windows, то при компиляции gui-приложений компилятор ресурсов fpcres не может записать .or файл, и в результате сборщик проекта не может найти ресурс. Для предотвращения этой ситуации используйте локальные директории и файлы в самой linux-машине (путь не должен содержать пробелов, Рабочий стол - плохой выбор); FPC + Linux: требование 2х нажатий ENTER после ошибки при компиляции на самом деле требовало трех нажатий ENTER; Обновления: IDE: скорость + обработка новых операторных скобок `{ }` / `<-- -->` / `BEGIN end` вместе с `: ;` / `? ;` .

#### 16.09.2024 - версия 4.1.0
Изменения: Синтаксис: добавлена возможность вызова двухпараметрических функций и методов в форме выражение1 \функция\ выражение2 например x = A+1 \Max\ B-1 Функция может быть в форме a. Имя_Функции b. {Класс}.Имя_Функции c. (выражение_в_скобках_возвращающее_переменную_класса).Имя_метода И символы '\' ограничивают ссылку на функцию или метод слева и справа; Данный способ работает в том числе для перегруженных функций; Синтаксис: В любых круглых скобках может быть добавлено произвольное количество вложенных квадратных скобок - это можно использовать для визуализации уровня вложенности. Например, x = (a + b * Dist([ Pt([[x1, y1]]), Pt([[x2, y2]]) ])) / 2 Исправления: Delphi/KOL+{Text_file}: Load исправлен, чтобы позволить читать текст в кодировке UTF-8 как минимум если кодировка для файла указана 'UTF8' явно; Delphi/KOL+{Text_file}: Save исправлен для случая, когда в пути файла есть только имя файла; {Form_common}.text_hint исправлен для виртуальных таблиц {Paint_table} (не очищался массив Current_row[], могла отображаться информация, относящаяся к не тем ячейкам, которые находятся под курсором мыши); Компилятор: обработка скобок <-------- ---------->;

#### 7.09.2024 - версия 4.0.0
Изменения: Запрещено использовать в качестве имен переменных, функций, констант ключевые слова, записанные в нижнем регистре (например, `fun` или `class`). Разрешено ключевые слова `method`, `function`, `test`, `override`, `operator`, `construct`, `destruct` и т.п. использовать в нижнем регистре - для всех случаев; Добавлена поддержка расширенного синтаксиса блоков и функций, в котором операторные скобки `: ... ;` (и `: ... .` для функций) заменяются либо на `{ ... }`, либо на `BEGIN ... END`, либо на `begin ... end`, либо на `<-- ... -->` и тогда в функции операторы завершаются символом `';'`; В скобках `<-- -->` количество знаков `'-'` может быть любым не менее двух. При смене вида операторных скобок во вложенном блочном операторе счетчик вложенности сбрасывается. Правила для строчных литеральных констант расширено: в качестве кавычек используются либо символы двойных кавычек (`"..."`), либо парных (двойных) апострофов (`''...''`). В первом случае внутри кавычек могут встречаться апострофы, которые интерпретируются как символы апострофов. Во втором случае символы двойной кавычки рассматриваются как обычные символы. Напоминание: идентификатор в одиночных апострофах - это всегда константа типа перечисления. В выражениях знаки операций '`&&`' и '`||`' могут заменяться ключевыми словами '`AND`'/'`and`' и '`OR`'/'`or`', Операция '`!IN`' может записываться как '`!in`', '`NOT IN`' или '`not in`'. Директива `END`, завершающая класс, должна отделяться предшествующей пустой строкой (как минимум одной). Операторная скобка `END`, если расположена в отдельной строке, не должна отделяться от предшествующего кода пустыми строками; Изменения в синтаксисе диалекта SEAL; Улучшения: Компиляция: при запуске на компиляцию варианта проекта с отличными опциями, все классы будут перекомпилироваться заново (аналог опции /$REBUILD). Компилятор: снят запрет на присваивание значения переменной цикла, пробегающей по элементам массива (в отличие от переменной, меняющейся в диапазоне); Компилятор+C#: в опции $VERSION количество номеров между точками более не ограничено строго четырьмя; Можно задать версию как $Version="1" или ..="1.1" или ..="1.1.1.1.1.1", например. IDE: линии, далеко уходящие за нижнюю видимую границу окна, не отображались. Исправления: IDE: при компиляции проектов компиляторов из IDE список ошибок не отображался; C#: исправлена ошибка в генерации кода для операции замены символа в строке (возникала при замене последнего символа): s.[*] = "?"

#### 5.08.2024 - версия 3.4.3
Изменения: C#/Компилятор: добавлены опции /diag / /diagnostics, с логгированием всех подозрительных ситуаций (обычно подавляемых средствами языка, таких как выход за границы массивов/строк);

#### 1.05.2024 - версия 3.4.2
Изменения: Компилятор: для строки с продолжением достаточно быть отделенной от следующих строк кода одной последующей пустой строкой, чтобы избежать предупреждения (раньше требовалось отделять ее от предыдущих строк ого же уровня); Исправления: Компилятор: лишние предупреждения для динамических массивов-параметров генерировались для модулей, перекомпиляция для которых не выполнялась (не требовалась); C#+MS Visual Studio: при перекомпиляции в файл csproj (нужен только для Visual Studio) не добавлялись ссылки на модули, пропущенные при неполной перекомпиляции. Без Visual Studio проект собиралса и запускался нормально; C#+{File_stream].Read_file_stream, Anyway_read_file_stream: проверка существования файла удалена (могут быть ситуации, когда система для существующих файлов сообщает, что таких файлов нет); {Dialog_file}: после вызова Select_file в вызвавшей форме сбрасывался sender_ (а так же sender_alias);

#### 21.04.2024 - версия 3.4.1
Изменения: Компилятор: добавлена опция оптимизации L (например, /op +L) - разрешает только локальные оптимизации (запрещает удаление неиспользуемых функций, инлайнинг функций из других классов и прочие глобальные оптимизации); Компилятор: перекомпиляция класса не выполняется так же в случае только локальных оптимизаций (как и при полностью выключенных оптимизациях); IDE: Project wizard - добавлен выбор режиме оптимизации (+L, +, -), Designer: добавлено отображение приблизительных границ формы, заданных опцией Настраиваемый размер; Исправления: Компилятор: перед компиляцией класса не очищался список констант локализации (проблемы возникали при повторной компиляции при наличии классов, требовавших тестирования);

#### 17.04.2024 - версия 3.4
Изменения: Компилятор: добавлен ключ /$REBUILD - форсирует компиляцию всех классов; Компилятор: при выключенных оптимизациях, если класс не изменялся (по сравнению с существующим ранее откомпилированным модулем выходного языка), и нет ключа /$REBUILD в опциях компиляции, то он заново не компилируется (что значительно сокращает время на перекомпиляцию проекта в случае незначительных изменений в коде); IDE AL4: при запуске проекта на компиляцию/отладку с клавишей SHIFT к опциям автоматически добавляется ключ /$REBUILD (и выполняется перекомпиляция всех классов); Компилятор: опция /$CCC более неактуальна и игнорируются (ссылки на директории \CCC в настройках компиляторов удалены); Исправления: Java/Android: {Console}.Key_pressed_async (Компиляция не работала);

#### 8.04.2024 - версия 3.3.8
Обновления: Demo\Clock: функция закрытия окон по ЛКМ+ПКМ исправлена/улучшена; ColorCat: работа с верхним уровнем каталогов улучшена/исправлена (Windows/Linux); Zoomer6 (+Lite): некоторые изображения не попадали в коллаж; Исправления: KOL: {Form}.Close: при закрытии приложения могло возникать исключение (добавлена проверка того, что поиск родительской колонки контрола вызывается не уничтожаемым в данный момент контрольным элементом); KOL: {Canvas}.Erase - при стирании буфера размера 0х0 приложение молча закрывалось (добавлена проверка на нулевой размер прямоугольника); Free Pascal + Lazarus + Linux: компилируемость восстановлена для платформы Linux; Linux + {Paintbox}+ : установка курсора мыши 'ARROW' приводила к превращению курсора в нестандартны направленный слева направо; Linux + {Form}.mouse_double_click - событие могло во многих случаях не вызываться, т.к. обработчик вызывался системой до завершения обработки предыдущего события (mouse_up);

#### 31.03.2024 - версия 3.3.7
Изменения: {Paint_tabs}: изменена отрисовка и улучшена точность кликов мышью по вкладкам; Обновления: ColorCat: улучшения, + работа с ярлыками; Исправления: {Dialog_dir}: после вызова Select_dir в вызвавшей форме сбрасывался sender_ (а так же sender_alias); Delphi+{File_path}.Recycle_file : буфер с путями удаляемых фалов освобождался до того, как передавался системной функции в качестве параметра (когда-то это работало); Delphi: {System_functions}.Allocate исправлен: вместо добавления указанного числа байтов к массиву, он теперь обеспечивает именно указанное число байтов в массиве;

#### 19.03.2024 - версия 3.3.6
Изменения: {Form}: Изменения в обработке вложенных событий формы (и контролов): в зависимости от типа события, оно либо обрабатывается немедленно, либо ставится в очередь (без дублирования тождественных событий от одного отправителя). События в отложенной очереди обрабатываются после выхода из обработки всех событий, при этом уже обрабатываемые события в очередь повторно не попадают. События требующие обязательной обработки (клавиатура, меню, обратные вызовы) обрабатываются всегда без откладывания в очередь; Обновления: ColorCat: исправление для mp3-фалов с тэгами ID3 версии 2.x; Исправления: Delphi/FPC: неверно генерировался код присваивания результата функции, возвращающей объект, переменной объектного типа (происходили утечки памяти/ресурсов); FPC: {System}.Short_path, .Play_audiofile;

#### 16.03.2024 - версия 3.3.5
Изменения: Компилятор: Отсутствие операторов в ветви оператора CASE теперь считается ошибкой (впечатайте хотя бы NONE или UNCOOKED); Компилятор: в выражениях пробел перед символом '.' предотвращает смену опорного объекта, к которому далее применяются продолжения вида .x... ; {Sound} += .Play_sound|_file(STR File), .Stop_sound|_playing(STR File); {System_functions} +-= .Play_audiofile... Обновления: ColorCat: добавлен "предпросмотр" аудиофайлов (может использоваться как аудиоплеер для проигрывания файлов в директории), алерты событий мониторинга диска; Исправления: {Paint_table}: Multiselect = FALSE ограничение не работало при выделении скольжением мыши с нажатой ЛКМ;

#### 4.03.2024 - версия 3.3.4
Изменения: {Form} += .Set_form_progress(n_0_to_100) - прогресс на кнопке в панели задач; Обновления: ColorCat: добавлен мониторинг операций на дисках и пр.; Исправления: {Paint_table}: Multiselect = FALSE ограничение не работало при выделении скольжением мыши с нажатой ЛКМ;

#### 25.02.2024 - версия 3.3.3
Изменения: C#: Целевая платформа (.Net Framework) по умолчанию изменена с 3.5 на 4.8; Обновления: Demo\Clock: анимация рамок, закрытие приложений по ЛКМ+ПКМ; ColorCat: устранены проблемы вкладки Компьютер (утечка памяти, масштабирование, отображение сетевых папок), ускорено затирание и продолжение затираний; Добавлена возможность ответить "Игнорировать" в ответ на подтверждение записи на переполненный диск; Исправления: C# + /$FRAMEWORK=x.y - не была реализована; C#: генерация проекта, совместимость с Visual Studio 2017...2022, с .NetFramework 4.7, 4.8; C#: компиляция в Windows 10/11 без Visual Studio ;

#### 18.02.2024 - версия 3.3.2
Изменения: Введена встроенная функция Byte(INT Value)==>BYTE для "превращения" значений INT в Byte (фактически, никаких действий - обычно - не производится (но это может зависеть от целевой платформы); Опция /noind|ex|ing отключает предупреждения по желательности использования атрибута индексирования INDEXING; Исправления: C#+{NATIVE_Alien_windows}; C#+{AL4_OpenAL}; FPC+OpenAL.pas: += {$DEFINE WIN32}, если не LINUX; FPC+Windows: параметр -dWIN32 добавляется автоматически; Компилятор + ---------'коммент', REUSED - иногда выдавалось недействительное предупреждение об отсутствии ссылок на блок внутри комментариев; {String_functions}.From_hex для строчных букв abcdef работал неправильно; Компилятор+SILENT: не заглушались предупреждения о неиспользованных локальных переменных; Delphi/FPC + фиксированные массивы/срезки массивов: код для очистки временных массивов внутри циклов более не добавляется (добавление таких вызовов создавало проблемы с доступом к данным базовых массивов);

#### 11.02.2024 - версия 3.3.1
Изменения: C#+{System_functions}.Platform_info: независимо от целевой платформы компиляции, для ОС Windows позднее Windows 8 дополнительно выводит реальную текущую версию (например, Windows 10.0, Windows NT 6.2...); Delphi/VCL|FPC/Windows: независимо от наличия манифеста, Platform_info возвращает действительный номер версии ОС; Исправления: FPC+Windows+{Form}: события resized/moved не вызывались для окон без рамок; Delphi + /$DEBUG: удаление файла breakpoints.txt (например, вручную) приводило к краху приложения. Теперь выполнение продолжается; C#+{Form}.Show_application_button: если значение устанавливалось до запуска приложения, не срабатывало; Обновления: Clock - продолжение игр с рамкой, определение того, на каком экране окно - по наибольшей площади пересечения; IDE/Show errors - теперь работает для целевых путей, содержащих слово build (позволяет работать с сообщениями при компиляции компиляторов), также - корректировка пути в формате Linux (просмотр сообщений при кросс-компиляции компилятора для Linux); FPC+{Config}: добавлена возможность чтения в реестре по ключу HKCM (объект TRegistry не создавался с правами пользователя, даже если требовалось только читать);

#### 5.02.2024 - версия 3.3
Изменения: ВАЖНО: Идентификатор '_' (одиночное подчеркивание) в выражении справа от знака присваивания (или добавления '<<') считается ссылкой на выражение слева от знака присваивания. Таким образом, становится возможна запись вида `very_long_variable_name = _.Some_function(...)` или `Some_variable.Long_field_name = 1 - _` или `.. = (_ + 1) * 2` а не только `x += n` При создании объектов в списке инициализации полей объекта разрешается использовать конструкцию `x = _` вместо `x = x` (где x - тот же идентификатор, хотя и обозначающий две разные вещи). Например, `Screen_ = _` вместо `Screen_ = Screen_` для сквозной передачи ссылки на объект экрана при создании формы (Аналогичное правило при передаче параметров функции не действует: по-прежнему считается что Параметр=_ копирует объект слева от основного знака присваивания); Использование операции `<<` для добавления строки к строке теперь вызывает предупреждение, желательно использовать теперь присваивание с конкатенацией: `X = _ Y` (В последующем, возможен полный отказ от такого использования операции '`<<`', и останется только для добавления в массив, вывода в консоль и как замена метода `Write`); Linux + {Form}.Save_bounds/Restore_bounds: для сохранения размеров формы используются Client_width и Client_height, т.к. иначе фактическая высота формы устанавливается неверно; Linux + {AL4_drawing}: Опция SIMULATED_CARET включается автоматически; C# + {Form}.Set_no_frame реализована более радикально, полностью удаляя рамку окна; Исправления: СЕРЬЕЗНЫЙ БАГ: FPC + {String_functions}.Starting для национальных символов работало неверно, сравнивая только старшие байты символов в UTF8; Delphi/FPC: лишний код продолжал генерироваться для RTTI при наличии опции проекта /$NORTTI; Delphi/FPC + TRef_obj.Ref_dec_weak / Ref_dec_hard: иногда передется nil (вызывается для пустого объекта), что вызывало исключение - после обработки выполнение продолжалось. Добавлена в код проверка условия Self=nil. Обновления: Demo\Clock += опция: рамка вокруг активного окна + изменение размеров (+Ctrl/Shift) / перемещение (Alt) / индикация языка ввода (только в Windows); Typelin + Linux: учет исправлений;

#### 28.01.2024 - версия 3.2.6
Изменения: Добавлено приложение Typelit - ускоренный ввод текста транслитом (или другой настраиваемой кодировкой), с предложением слов на основе ранее введенных, с учетом словосочетаний; Исправления: Free Pascal + Linux + {Clipboard}: вставка UTF-8 - текста в буфер обмена не работала через стандартный класс Clipboard (исправлено прямой работой с функциями gtk); C#+{File_path}.Exists, Dir_exists: окончательное исправление для сетевых путей (начинающихся '\\') - в качестве признака существования принимается успешное полычение непустых атрибутов файла (File_detail);

#### 24.01.2024 - версия 3.2.5
Изменения: IDE AL4: в редактор кода добавлена поддержка синтаксиса [SYNTAX="SEAL"] включая построение линий блоков, расцветку блоков от уровня и быстрый ввод шаблонов операторов, а так же генерацию / распознавание кода в дизайнере форм / редакторе меню; ; Исправления: Free Pascal + Windows: падение приложения при движении мыши в глубоко вложенном меню (Delphi || Linux - OK); Delphi/Free Pascal: добавлена корректировка высоты формы при настройке расположения колонок для случая окна без рамки (No_frame = TRUE); Delphi/C# компилятор: не создается код для проверки дополнительного условия x.Len > 0 для операции проверки вхождения подстроки x IN y, если x == "CONST"; C#+{File_stream}: проверка Exists для файла / директории по сетевому пути через обычные функции FileInfo.Exists или File.Exists в C# не работает, поэтому дополнительная проверка наличия файла перед открытием файлового потока для файлов, первый символ пути к которым равен '\', отключена; Обновления: Clock: += функция имитация микро-движений мыши каждые 10 секунд при отсутствии движений мыши более 30 секунд; добавлена иконка 48x48 (иначе в Linux не отображалась иконка в трее в случае больших значков панели задач); для Linux из меню удалены неподдерживаемые функции, исправлено восстановление размера при повторном запуске; Color Cat: исправлено копирование из сетевой папки; в случае выделенного файла без внутренней ассоциации кнопки очереди отрисовывались внизу, и не работал предпросмотр файла;

#### 17.01.2024 - версия 3.2.4
Изменения: Компилятор: добавлено чтение языка перевода из системной переменной окружения AL4lang (при ее наличии файл Compiler_language.cfg игнорируется); Компилятор: добавлена поддержка синтаксиса [SYNTAX="SEAL"] (C-подобного: фигурные скобки + точки с запятыми + возможность записывать основные ключевые слова в начале строк строчными буквами); Исправления: Компилятор/FPC+Linux: исправлено компиляция в Linux; IDE: вывод сообщений компилятора при компиляции проекта из IDE: исправлено отображение unicode-символов, закодированных как $#nnnn;

#### 10.01.2024 - версия 3.2.3a
Исправления: C#: на новых проектах проблема компилируемости из-за изменений в {File_path} с удалением системных / защищенных файлов; IDE: выделялись не парные скобки/тэги, а первый символ после, скобки не под курсором вообще подкрашивались как "без пары";

#### 8.01.2024 - версия 3.2.3
Обновления: IDE: поиск парного тэга (при редактировании html-файла); Color Cat (быстрое обновление; маркировка файлов клавишами [+]/[-]; предпросмотр директории по одноименному текстовому файлу в директории; операция циклического переключения вкладок каждые 30 секунд - предотвращение остановки вращения hdd; удаление системных и толко-для-чтения файлов); Исправления: C#: {File_path}.Extract_path работал неверно в случае, если имя файла завершалось какими-то особыми символами; C#/Delphi: в операции IN для проверки наличия подстроки в строке для пустой подстроки условие всегда считалось выполненным - устранено (добавлена проверка того, что строка не пустая);

#### 30.12.2023 - версия 3.2.2
Изменения: Demo\Clock: добавлена функция восстановления координат окон после сильных изменений (в результате неожиданного отключения монитора, например; - кроме окна панели задач, к сожалению); Color Cat: обновлен (исправления, улучшения); IDE: добавлена кнопка для запуска без пошаговой отладки (эквивалент - Control-F8/Control-Shift-F8), прежняя кнопка запуска (эквивалент F8/Shift-F8) теперь форсирует отладку (но доступен только для Delphi/winFPC-проектов); C#/Delphi/FPC: += {AL4_form}.Get_label_desired_width, более точное размещение меток на форме ({Form}.Adjust_controls); Draft Notes: исправления, улучшения; Исправления: C#: {File_path}.Exists, Delete: исправлена работа с файлами, длина полного пути которых больше 260 символов; Ide AL4: Открытие класса по Ctrl+Enter / Ctrl+Click в той же директории могло не работать; Ide/Designer: исправлено дублирование контролов (не обновлялся CONSTRUCT, добавленный контрол терялся); Ide/Debugger: отображалось предыдущее значение переменной, даже если она не изменилась; {Form}.Adjust_controls - метка, размещенная в строке колонки как единственный контрол (при выравнивании в колонке сверху вниз), занимает (теперь) всю ширину колонки;

#### 21.12.2023 - версия 3.2.1
Изменения: IDE AL4/Debugger + Delphi/FPC: Добавлено отображение структурных переменных и полей метода (так же простых типов, структурных и перечислений); Добавлена сортировка значений переменных по типам/именам/в обратном порядке; Если значение переменной изменилось, значение отображается красным цветом; при этом дополнительно выводится предыдущее значение (синим) - если значение вместилось в одну строку; Добавлена возможность копирования типов / имен / значений переменных; Добавлена возможность пошаговой отладки (входа внутрь) для чисто нативных функций; Установка букмарка (т.е. точки останова) на заголовке функции равносильна останову на всех операторах функции; Если в строке несколько операторов, и останов произошел не на первом, с достаточно большой точностью в редакторе подкрашена строка останова будет (зеленым) с начала именно этого оператора; В режиме /$DEBUG компилятор специально добавляет пустой оператор в конце цикла, чтобы нажатия F7 внутри цикла приводили к видимым изменениям в окне редактора; Demo\Clock: добавлена функция корректировки позиции мыши на границах мониторов (принудительного перемещения позиции курсора на соседний при столкновении с краем, который возник из-за различных размеров соседних мониторов); Исправления: C#: переопределено отображение меток - метка обрезается по ширине, вместо удаления слов, которые не вписались в доступную ширину; {Form}: при выравнивании контролов в колонке формы сверху вниз, ширина меток перед контролами выставляется строго в соответствии с параметром "ширина поля меток" колонки (но если следующий контрол перенесен на следующий ряд, то метка занимает всю ширину колонки);

#### 14.12.2023 - версия 3.2a
Изменения: IDE AL4 + Delphi/FPC: Добавлен пошаговый отладчик прямо из IDE (в проекте должна быть опция /$DEBUG, проект может быть запущен запущен из IDE или другим способом, в окне отладчика отображается стек вызова функций и локальные переменные простых типов данных - для функции, в которой произошел останов, букмарки в исходном коде используются как точки останова);

#### 30.11.2023 - версия 3.1
Изменения: IDE AL4: Кнопка [Старт/F8] добавлена (возвращена), позволяя запускать компиляцию из самой IDE и затем просматривать ошибки/предупреждения компилятора и переходить на соответствующие строки в исходном коде для редактирования их в IDE (должен быть открыт проект командой Файл | Открыть проект); IDE: добавлен поиск по директориям индексированных классов, и поиск деклараций структур и перечислений из других классов, при клике по неквалифицированному имени, если в исходном коде есть квалифицированные ссылки вида {Класс}.{тип}; Исправления: IDE/Designer: выравнивание контролов после меток в колонках в режиме "2 колонки";

#### 20.11.2023 - версия 3.0.3
Изменения: {Form}.mouse_wheel + C#/Delphi(VCL): скорость колеса мыши выровнена к средней (замедлена для Delphi, ускорена для C#); Исправления: C#: {String_functions}.Oem_to_string; C#+{Stream}.Get_line: загрузка текста в кодировке OEM; {Form}: исправления размещения контролов в режиме "две колонки" - в горизонтальных колонках (выровненных 'TOP'/'BOTTOM');

#### 11.11.2023 - версия 3.0.2
Изменения: Компилятор: устранены некоторые излишние предупреждения (например, о вызове DEPRECATED функций из других DEPRECATED функций, или о неиспользованных параметрах в методах-прототипах); IDE/Designer: в конструкторе формы генерируется обрамляющий блок PUSH in_construct = TRUE : ... ; - в результате количество вызовов методов Do_adjust_columns и Do_adjust_controls снижается до минимума (и решаются некоторые проблемы настройки размеров контролов, т.к. к моменту вызова все параметры контролов, задаваемые в конструкторе, уже заданы в их окончательное значение); (Чтобы новый вариант кода сформировался, необходимо хотя бы раз открыть форму в дизайнере и что-то изменить); Исправления: Компилятор: добавлен контроль типов присваиваемых полей в конструкторе объекта/структуры; Обновления: Color Cat (прежнее название Color Commander);

#### 6.11.2023 - версия 3.0.1
Изменения: Компилятор: устранены некоторые предупреждения при компиляции компилятора (Delphi/C#); Компилятор: устранены некоторые излишние предупреждения (например, о вызове DEPRECATED функций из других DEPRECATED функций, или о неиспользованных параметрах в методах-прототипах); Delphi/FPC/C# + {Form}: внешний вид формы и размещение кнопок в горизонтальной колонке более похожи (но в FPC используются 3д-граница, т.к. для реализации панелей используется TScrollBox из Lazarus); IDE/Designer: в конструкторе формы генерируетя обрамляющий блок PUSH in_construct = TRUE : ... ; - в результате количество вызовов методов Do_adjust_columns и Do_adjust_controls снижается до минимума (и решаются некоторые проблемы настройки размеров контролов, т.к. к моменту вызова все параметры контролов, задаваемые в конструкторе, уже заданы в их окончательное значение); (Чтобы новый вариант кода сформировался, необходимо хотя бы раз открыть форму в дизайнере и что-то изменить); {Form_common}: метка напротив контрола в фокусе меняет стиль не на BOLD (полужирный), а на UNDERLINE (подчеркнутый) - это не меняет ширину метки, устраняя проблему выхода полужирного текста за правый край при выравнивании вправо; Исправления: Компиляция первичного компилятора восстановлена; Компилятор: добавлен контроль типов присваиваемых полей в конструкторе объекта/структуры; Обновления: Color Cat (прежнее название Color Commander); Zoomer 6 Vernissage; Diagram Draw;

#### 1.11.2023 - версия 3.0
Изменения: IMPORT: {{nnnnn}} . - позволяет группировать несколько импортов в одном файле с расширением .import; добавлены файлы Standard.import, Visual.import и Files.import (синоним Streams.import). Позволяет уменьшить число вручную добавляемых в секции IMPORT классов; Исправления: Delphi/FPC: {Mathematics}.Abs(x) не работал для x==NAN; Delphi+KOL: BYTE Array[].Allocate(nnn) не очищал выделенную память - в массиве был мусор; C#+{Form}: установка шрифта для колонки не влияла на шрифт для контролов;

#### 22.10.2023 - версия 2.9.4
Изменения: {Form}.message/ask += кнопка на панели задач для окна сообщения; {Form}.ask/message: возможно установить дополнительный текст заголовка, добавляемый к имени приложения в заголовке сообщения. Например: PUSH Ask_caption = " - строка" : message(...) ; {Form}.ask/message += возможность дополнительной настройки формы сообщения в событии decorate_ask_message_dialog; Delphi+{Form}+{Button}: более широкие и высокие кнопки при выборе размеров по умолчанию; Исправления: C#: {Label} - авто-размер при изменении текста; Delphi/FPC - лишние вызовы value_change в событиях авто-размещения контролов;

#### 1.10.2023 - версия 2.9.3
Изменения: METHOD/OVERRIDE += модификатор OPTIONAL: не требует вызова BASE или модификатора REPLACE в переопределенном методе следующего наследника; {Form} += Auto_height; Designer/{Form}: += Auto_height; {Form}.ask/message: возможно установить Ask_size для окна сообщения. Например: PUSH Ask_size = Pt(width,height): message(...) ; Исправления: {OpenGL} - не учитывалось изменение размеров после создания контрола;

#### 22.09.2023 - версия 2.9.2
Изменения: Tools\Diagram_draw: добавлены переходы по диаграммам со ссылкой вида //filename.dia в последней строке текста (строка не отображается на схеме, но текст блока выделяется полужирным цветным); Исправления: C#: {Bitmap}.Stretch_draw работал неправильно, если размер прямоугольника на канве в точности соответствовал размеру картинки (рисовался с увеличением); Обновления: IDE/AL4 (в дополнение к переходам по классам, добавлен переход по диаграммам по ссылкам вида //diagram.dia в последней строке (возможен одновременный переход по одному клику, при наличии обеих ссылок в блоке); Color Commander (+Удаление пустых поддирректрорий, +Удаление незавершенных файлов, + Докачка файлов, +Авто-пауза);

#### 13.09.2023 - версия 2.9.1
Изменения: Ускорена отрисовка при изменении размеров формы (и {Paintbox}+ на ней) - за счет выделения чуть большего буфера на канву - событие paint вызывается только в случае вызовов Invalidate_rect/Invalidate_all (и при прокрутке окна), в остальных случаях приготовленный ранее буфер копируется в канву; Исправления: C#: Из-за мелкого недочета в {AL4_form} протормаживала вся графика (постоянно вызывалась функция winapi GetDC, вместо использования кэшированного значения Scale_y); Обновления: IDE/AL4; Color Commander (+Compact view, +...); Demo\Clock;

#### 25.08.2023 - версия 2.9
Изменения: ВАЖНОЕ изменение в синтаксисе работы с символами строк и диапазонами строк: теперь ТРЕБУЕТСЯ точка между строчным операндом (константой, переменной и другим скалярным выражением типа STR) и открывающей квадратной скобкой: s.[i] - данное изменение вводится для того, чтобы было явное отличие с операциями индексирования / выделения диапазона массивов, и исчезала путаница в случаях, когда операнд является массивом строк; (На данном этапе прежний синтаксис продолжает работать, но выдаются предупреждения, примерно через пару обновлений старый синтаксис будет считаться ошибкой - кроме использования особой опции компилятора). Компилятор: немного ускорена компиляция (поиск функций); C#: добавлена совместимость с .Net 4.5.2, улучшена совместимость со всеми .Net 4+, добавлена возможность задавать целевую платформу .Net для всех C# проектов заданием переменной окружения AL4FRAMEWORK (например, значением 4.6.1 или 4.5.2); C# + /$PROFILER=... - если указано другое значение кроме ALL, то счетчики вызовов функций не генерируются, облегчая статистику профилировщика; Demo\Clock: добавлен календарь с заметками; Исправления: {Calendar}: если месяц заканчивался в воскресенье и дни начинались с понедельника, то при вертикальном размещении дней недели не добавлялись колонки с числами; Delphi + {Canvas}.Foreground / Background + INT64 - Неверно формировался цвет альфа-канала (правильно работало с ключом /int32 - теперь работает и без ключа). Так же, исправлен вывод текста в {OpenGL}+{Font2D} для режима INT64.

#### 4.08.2023 - версия 2.8.6
Изменения: {Screen} += .Custom_messages: Если установить = TRUE, используется собственный модальный диалог для отображения сообщений и вопросов ({Form}.message / .ask) вместо системных диалогов (имеющих неприятную привычку прятаться за другими окнами); {Form_common}: флажок {Screen}.Custom_messages устанавливается по умолчанию (но не в {Form} !); Соответственно, если это не отменить, во всем приложении используется своя форма диалога взамен системного диалога сообщений при вызове функций {Form}.message / .ask; Компилятор: если после декларации переменной присваивание ей значения выражения переносится на новую строку (начиная с символа присваивания '='), то даже в случае длинного выражения, разбитого на несколько строк, присваивание не требует отделения от декларации дополнительной пустой строкой (ранее выдавалось предупреждение); IDE AL4 / Просмотр диаграмм: ряд улучшений (контекстное меню для открытия ранее открывавшихся диаграмм, масштабирование с Ctrl+колесом мыши, поиск классов с перенесенным на строки именем, игнорирование пробелов в строке кода //[diagram: имя.dia], поиск классов на уровень ниже относительно всех ранее открытых классов); Исправления: Delphi/VCL: иногда при (повторном?) вызове Show_modal для формы она не появлялась на экране (оказывалась в состоянии Minimized). Исправлено корректировкой состояния в обработчике события Form_activated; Ошибочное предупреждение иногда могло выдаваться по поводу переиспользуемых (REUSED) блоков кода (о том, что оно якобы не используются в действительности); C#/Delphi: для массивов Remove(элемент) - в одних случаях, удалялся первый элемент, в других - все элементы. Исправлено: теперь всегда удаляются все совпадающие элементы;

#### 31.07.2023 - версия 2.8.5
Изменения: Компилятор: в случае, когда идентификатор не обнаружен в области видимости, отыскиваются все подобные идентификаторы (среди имен переменных, полей, функций, констант) и их список приводится в сообщении компилятора. Обнаруживаются похожие имена в области видимости, отличающиеся не более чем на 3 символа, без учета регистра букв; IDE: добавлена возможность навигации по открытым классам через встроенный просмотр диаграмм: если открыт просмотр диаграмм в результате прохода мыши по строке вида //[diagram: путь], и диаграмма содержит блоки с именами {классов} в фигурных скобках, то клик (ЛКМ) по такому блоку открывает вкладку с этим классом; {Form_common}: при попытке активации формы, вызвавшей модальный диалог, управление передается модальному диалогу (рекурсивно), с выдачей стандартного звукового сигнала; Исправления: C#/Delphi/FPC: при нажатии правой кнопки Alt система устанавливает так же и флаг "нажат левый Control", хотя его никто не нажимал. Этот флаг теперь сбрасывается (только в обработчике key_press!), и программа получает только флаг Key.Alt, без Key.Control; Проблему обнаружения нажатий сочетаний левого Control и правого Alt оставляю на вас. По крайней мере, правый Control и правый Alt работают как раньше, и в обработчиках key_down/key_up системное поведение не изменяется;

#### 21.07.2023 - версия 2.8.4
Исправления: Delphi/FPC: {Text_file}.Load не работал;

#### 19.07.2023 - версия 2.8.3
Изменения: Компилятор: при использовании с ключом /src завершающего \* для включения всех нижележащих путей, пути, содержащие слово "compiled", игнорируются. Если так называть все выходные пути проектов, то не произойдет пересечение модулей из разных языков при компиляции; Исправления: Delphi/FPC + Windows: {Process}.Ended анализировалось поиском окна, принадлежащего процессу (неверно: процесс может работать и не иметь еще/уже/вообще окон). Теперь анализируется функцией API OpenProcess; C# + {Form} + {Dialog}.Show_modal: исключение при попытке модального вызова от уже закрытой родительской формы; Delphi/FPC + {Form} + {Dialog}.Show: разрешено использовать наследник от {Dialog} в качестве главной формы (.Show игнорировался); IDE/Designer: добавлена генерация кода для инициализации поля Alias самой формы (и чтения этого значения), т.о. теперь Alias формы может задаваться в визуальном дизайнере; Delphi/C#: {Process}.Terminate;

#### 11.07.2023 - версия 2.8.2
Изменения: Синтаксис: разрешено переносить на следующую строку текст начиная с точки (но строка продолжения не должна состоять только из точки или начинаться с более чем одной точки); Компилятор: в файле настроек/в командной строке параметры /src и /src_test могут завершаться \* - в этом случае включается путь и все подчиненные пути (рекурсивно); Компилятор: не требуется более включать в список импорта все классы предшественников, даже если используются методы из этих классов - достаточно указать базовый класс; Визуальная разработка: добавлен класс {Screen_caller}, позволяющий переходить от монолитной архитектуры приложения к микро-модульной. Модуль - это форма с некоторым количеством диалогов-сателлитов, в совокупности выполняющие некоторую крупную функцию, и не очень сильно связанную с прочими функциями приложения. Модуль компилируется как отдельное исполнимое приложение, вызывается из родительского модуля с передачей параметров и возвратом результатов через файлы. Как результат перехода к такой архитектуре, сокращается время компиляции, появляется возможность параллельной компиляции модулей, перекомпиляции модулей без перезапуска всей задачи, возможность сборки приложения из модулей, собранных различными языковыми компиляторами, распараллеливание работы различных модулей, т.к. они сразу запускаются в разных процессах, устранение проблем фрагментации кучи в случае длительной работы приложения, т.к. при перезапуске модуля он снова находится в идеальном начальном состоянии... Исправления: C#: для генерации ресурса иконки теперь используются абсолютные пути, в опциях проекта путь к иконке должен задаваться либо абсолютный, либо относительно пути к директории с главным классом проекта; Компиляция кода для хранимых (STORED) параметров: начальное значение по умолчанию могло не устанавливаться (в значение, отличное от 0);

#### 26.06.2023 - версия 2.8.1
Изменения: Delphi VCL/KOL, FPC: {Text_file} - функция Load ускорена для случая ansi текста; FPC: добавлена функция для быстрого преобразования большого текста ANSI в UTF8: {String_functions}.Ansi_bytes_to_utf8(BYTE[]); FPC: изменены опции командной строки компилятора (несколько ускорена компиляция); IDE: исправления в поиске символа под курсором по Ctrl+Enter/Ctrl+Click; Color Commander: новые функции, исправления.

#### 13.06.2023 - версия 2.8.0
Изменения: {Keyboard}: имена констант DEL / INS изменены во избежание конфликтов со встроенными функциями; Компилятор: если в выражении вслед за строчной константой в двойных кавычках идет точка, но она отделена пробелами, то это не считается вызовом функции с первым параметром-строкой. Вместо этого предполагается, что это начало нового операнда, конкатенируемого с этой строкой; Это позволяет использовать "сахар" с повторным использованием на предыдущего объекта в том же выражении, являющемся конкатенацией строк; Color Commander: версия 0.75 (+поиск дубликатов файлов, +предпросмотр видео-кадров, +контроль предпросмотра, +извлечь съемный диск, +исправления); Zoomer6: получение размеров изображений могло не работать; PSD формат не поддерживается в C#, Delphi-VCL - это не учитывалось; Исправления: IDE/Designer: исправлено преобразование текста в текст с кавычками для контролов {Combo}, {Listbox}, {Paint_table}, {Paint_turtle} и др.; C#: генерация констант типов INT/REAL, определенных через выражения вида 1024 * 1024; Delphi/FPC: генерация вызова Main в случае, когда в проекте есть более одной функции Main (в разных классах);

#### 16.05.2023 - версия 2.7.9
Изменения: IDE AL4: оптимизирована скорость отрисовки маркеров изменившихся строк справа (используется кэш-битмап с предварительно отрисованными маркерами); Для строк кода, начинающихся с двойной кавычки и длиной более 80 символов, вместо ошибки выдается предупреждение; Исправления: Delphi/FPC, {String_functions}.Oem_to_string - исправлена (опечатка в коде, неправильно работала); Delphi(VCL,KOL)/FPC(Win): {File_path}.Rename - не работала для директорий; Delphi/VCL: заблокирован вызов Any_change при вызове деструктора формы (могло произойти что-нибудь неприятное); Delphi/FPC: генерировалась избыточная операция Clone() при добавлении в массив структур, например; IDE/Designer: исправлено преобразование текста в текст с кавычками при генерации конструктора (для случаев, когда сам текст содержал кавычки); IDE/Designer: поправлено вертикальное положение текста {Memo} в нарисованной форме; IDE/Designer: исправлена отрисовка контролов назначенными шрифтами;

#### 2.05.2023 - версия 2.7.8
Изменения: C#, {AL4_Drawing}: DrawImage заменено на DrawImageUnscaled где возможно; Исправления: C#: генерация кода для блока комментариев в режиме отладки - не работала правильно для строк, содержащих символ '\'; C#: генерация кода присваивания результата функции скалярному объекту делалась неверно, код приводил к утечке объектов (в случае объектов изображений это могло быть критичным); C#, {AL4_drawing}.Can_load_bitmap_fmt: на запрос о возможности загрузки "WEBP" всегда возвращал FALSE (неверно проверялось наличие libwebpXX.dll);

#### 1.05.2023 - версия 2.7.7
Изменения: Обновлено приложение Color Commander 0.70 (удаление по SHIFT+DEL, подсказки в состоянии о прогрессе операций); Обновлено приложение Zoomer 6 (добавлена обрезка фрагмента: ctrl+выделение мышью); Обновлено приложение Draft Notes (тонкая рамка, исправления); При проверке длины строк кода (<= 80) последние закрывающие скобки ')', ']', '}', кавычки <'> / <"> и знаки препинания ',', ';', '.', '?' игнорируются. Исправления: FPC+BGRABITMAP: {Bitmap}.To_clipboard не работал; FPC+BGRABITMAP: {Bitmap_direct}.Lock / .Unlock - не работал;

#### 23.04.2023 - версия 2.7.6
Изменения: Обновлено приложение Color Commander (0.68); Исправления; C#, Delphi/FPC: работа обработчика клавиатуры в модальных диалогах;

#### 26.03.2023 - версия 2.7.5
Изменения: {DB}.CStr, CInt, CID, ... - в отладочном режиме в случае обращений к полям, отсутствующим в запросе, в консоль выводится сообщение об ошибке; При этом поле Level_trace_stack регулирует возможность вывода стека функций на момент возникновения ошибки. {System_functions}.Trace_blocks(INT) - функция, включающая или отключающая трассировку блочных комментариев: в отладочном режиме при включенной трассировке в консоль выводится имя класса, функции и текст блочного комментария при достижении выполнения блока; Обновлено приложение Color Commander (0.67); Исправления: C#: работа обработчика клавиатуры в модальных диалогах;

#### 15.02.2023 - версия 2.7.4
Изменения: C#,Delphi/FPC + {Bitmap} - изменен код отрисовки изображений: ранее не учитывались трансформации на канве (масштабирование, повороты, смещение); Color Commander - обновлен (до версии 0.65); Zoomer6 - обновлен (версия 6.1.1); IDE/Designer: ускорен ввод текста в поля ввода;
Исправления: C# + {Bitmap} + {Printer} + {Report}: печать изображений на принтере не работала; Delphi/FPC + {Bitmap}.Stretch_draw && Draw: исправлены проблемы рисования и печати (на {Printer} + {Report});

#### 20.01.2023 - версия 2.7.3
Изменения: Color Commander - обновлен (до версии 0.64); Zoomer6 - обновлен (версия 6.1);
Исправления: C#, {AL4_form}: вложенные события мыши/клавиатуры теперь блокируются только в результате вложений событий мыши/клавиатуры (в случае, если исходное событие было другого класса, вложенная обработка не блокируется); C#, {AL4_form}: обработчик Item_click мог работать неправильно (срабатывал при закрытии формы); Delphi/FPC: {System_functions}.Application_name возвращал путь к директории приложения вместо имени; FPC: русский текст в консоли (FPC требует кодовую страницу 65002 вместо 65001);

#### 13.01.2023 - версия 2.7.2
Изменения: Color Commander - обновлен;
Исправления: {Paint_lines}: установка высоты строки выполнялась слишком часто; C#, {NATIVE_DB|_ODBC...}: исправлена компилируемость для случая, когда ключ /int32 не установлен; Delphi+KOL: Исправлена компилируемость для ключа /$NOEXCEPTIONS; Однострочный `CASE ... ? ... ELSE ... ;` не компилировался; IDE: восстановлена отрисовка линий, соединяющих блоки, для случаев, когда конец блока уходит за нижний край видимой страницы текста;

#### 29.12.2022 - версия 2.7.1
Изменения: Zoomer6 - обновлен;
Исправления: C#: Решена проблема Красного-креста на {Paintbox}-ах (спасибо Lazy Evaluation Ltd); C# {AL4_form}, {AL4_drawing}: Улучшена внутренняя обработка исключений (не восстанавливался уровень сообщений, переставали работать клики мышью в случае даже успешно обработанных технических исключений); KOL: Компиляция.

#### 28.12.2022 - версия 2.7.0
Изменения: Добавлена группа блочных операторов LIMIT: `LIMIT TIME(nn) MSEC/SEC/MIN/HOURS/DAYS: ... ; LIMIT LOOPS(nn) : ... ; LIMIT FUN(nn): ... ;` ограничивают время / количество итераций циклов / вызовов функций в пределах блока; Дополнения и исправления в спецификации языка;
Исправления: Java: Компиляция для Android;

#### 11.12.2022 - версия 2.6.1
Изменения: Разрешен однострочный вариант оператора `CASE условие ? оператор ELSE оператор ;` Дополнения и исправления в спецификации языка;
Исправления: Компиляция обобщенных функций: более корректно реализован обход ветвей, не соответствующих текущей выбранной сигнатуре; снято требование на отсутствие пробелов между "символами" `{{` и `}}`, используемых для записи списков сигнатур, определяющих ветви операторов `CASE ? {{ ... ...;`

#### 5.12.2022 - версия 2.6.0b
Изменения: Документация исправлена в соответствии с изменениями, + исправлены опечатки и несоответствия;
Исправления: Delphi/KOL: операция >> могла возвращать предыдущую строку, если пользователь не вводил новые символы, и нажимал Enter; C#: генерация кода доступа к целочисленным константным массивам в режиме int64;

#### 3-4.12.2022 - версия 2.6.0a
Изменения: C#/Delphi: Все целочисленные переменные и поля теперь (по умолчанию) - 64-битные (кроме счетчиков циклов). Добавлен ключ компилятора /int32, чтобы использовать 32-битные целые числа, как прежде. Добавлены модификаторы класса INT64 REQUIRED и INT64 DESIRED: если "REQUIRED" и в опциях стоит /int32, то фиксируется ошибка, в случае "DESIRED" - предупреждение; только Delphi/FPC: переменные и поля с атрибутом INDEXING так же декларируются как обычные 32-разрядные Integer в режиме 64 бит; Константы MIN_INT и MAX_INT | EGER_32_VALUE по-прежнему имеют значения, соответствующие граничным значениям 32-битного целого;
Исправления: C#: исправлена константа MIN_INT; C#: исправлена генерация вызова системной функции RotateL / RotateR; Delphi/KOL: {Canvas}.Measure - {AL4_drawing}.String_measure - исправлено (неверный учет отрицательного размера шрифта);

#### 30.11.2022 - версия 2.5.3
Изменения: Компиляция с опциями в общем файле (параметр /[section]): добавлена возможность иметь общую секцию [Common] и выносить в нее общие для всех секций параметры;
Исправления: Отчет об утечках: мог неверно компилироваться проект, использующий национальные модули (например, Test_projects\Russian_code); Компилятор: использование именованных констант в инициализаторах полей - константы могли отказываться корректно вычисляться из-за кэширования длины текущей строки в объекте {Text_parser} (устранено сбросом кэша перед вычислением константы); {Paint_table}: по событию mouse_double_click не фиксировалось логическое "отжатие" кнопки мыши, что в приложениях приводило к "продолжению" выделения строк после возвращения курсора мыши на форму (например, из модального диалога);

#### 24.11.2022 - версия 2.5.2
Изменения: Компиляция краткой формы функции, возвращающей структуру: добавлено требование использовать функцию CLONE, если возвращается поле, переменная или элемент массива (соответствующего структурного типа); Теперь компилятор запрещает операции сравнения == / != между структурами (переменными структурного типа);
Исправления: Компиляция OVERRIDEn методов с модификатором PUSH: неверно выдавалась ошибка о неправильном порядке методов; Компиляция присваивания значения NONE (в инициализации полей создаваемого объекта конструктором {Type}(Field1=..., FieldN=NONE, ...}) - Не учитывался тип поля, присваивался NONE-объект класса {Object} (базового для всех объектов), в котором не было требуемых полей; - Дальнейшие обращения к полям / методам такого объекта могли приводить к низкоуровневым ошибкам; Delphi/{Form}: автоматическое изменение размеров контролов могло уменьшать их размер до нуля (теперь Set_control_size игнорирует установку значения 0 для ширины и высоты); Компилятор: функция, возвращающая структуру или объект класса, но не имеющая тела - возвращался NONE-объект типа {Object} (в результате работы оптимизатора, это могло приводить к попыткам обращения к неверным полям NONE-объекта неподходящего типа); Android: неверно компилировалось обращение к элементам константных массивов; Delphi/C#/Android: неверно генерировался код цикла FOR по константному массиву (FOR x IN C[] : ... ; / FOR x IN C[a TO/DOWNTO b] : ... ;)

#### 11.11.2022 - версия 2.5.1
Изменения: Компилятор: отсутствие ветвей (не считая `ELSE`) для оператора `CASE` с не-булевым условием считается ошибкой; Компиляция укороченных функций `FUN f(...)==>{t} := expression .` : запрещено использовать укороченную версию, если в выражение - это конструктор объекта другого (унаследованного) типа, нежели результат функции; добавлен контроль обязательности модификатора `NEW`, если выражение - это конструктор объекта класса результата; Компиляция структур с переиспользованием других структур (LIKE {тип}) из других классов: допускается, но в случае возникновения циклической зависимости классов будет вызывать ошибку;
Исправления: Delphi(VCL)+FPC: установка цвета текста для {Label} до отображения формы не работала (KOL: есть та же проблема, но исправление не планируется); Android/Java: компилируемость восстановлена (в AL4_form.java, AL4_drawing.java добавлены недостающие функции);

#### 1.11.2022 - версия 2.5.0
Изменения: IDE: небольшие оптимизации и улучшения (Report Editor); Компилятор: имена импортируемых классов проверяются на точное соответствие - хотя бы одно имя должно совпадать с точностью до регистра букв (т.е. {MAin} и {Main} - считаются различными);
Исправления: {Report} + {Printer}: небольшие исправления; Delphi/KOL + {Form}: небольшие исправления;

#### 20.10.2022 - версия 2.4.9a
Изменения: IDE: небольшие оптимизации (Report Editor, Form Designer);
Исправления: Флаг {Report}.Scale_down не работал (неверное условие прерывания цикла подбора размера шрифта); IDE/Report editor: установка значений Scale_down, Scale_up из визуального редактора отчетов; {Report}.Resize, Resize_to_fit не работали (из-за отсутствия обратного присваивания структуры с новыми значениями Bounds);

#### 19.10.2022 - версия 2.4.9
Изменения: IDE: небольшие оптимизации (Report Editor);
Исправления: {Report}.Generate работал неправильно в отсутствие целевой канвы (т.е. если не был вызван метод Destination). Исправлено использованием в таких случаях фиктивного объекта класса {Bitmap};

#### 12.10.2022 - версия 2.4.8
Изменения: IDE: добавлены подсказки по полям классов и структур в конструкторах {тип}(...); другие небольшие улучшения;
Исправления: C#: генерация кода операции удаления элемента из массива структур; IDE/Designer: сохранение / восстановление значений многострочных контролов ({Combo}, генерация кода конструктора длю некоторых контролов с пустыми строковыми значениями;

#### 30.09.2022 - версия 2.4.7
Изменения: IDE + Редактор отчетов: улучшения, так же теперь работает для всех классов, унаследованных от классов с именами, начинающимися с "{Report" (т.е. теперь можно сделать свой "базовый" класс {Reports_all}, затем наследовать от него свои варианты отчетов, и при этом использовать визуальный дизайнер отчетов для них; {Printer} + {Report}: добавлено масштабирование, диапазон страниц для печати;
Исправления: Delphi: генерация кода для доступа к элементу массива структур; {Printer} + {Report}: печать при ориентации Landscape=TRUE, вычисление прямоугольника ленты Band_rect;

#### 21.09.2022 - версия 2.4.6a
Исправления: C#, Delphi: работа со структурами (присваивание элементу массива: вызов .Clone() не добавлялся); IDE: Report_editor - исправлен и улучшен;

#### 20.09.2022 - версия 2.4.6
Изменения: Delphi VCL + {DB}: добавлена возможность использовать ODBC через kolodbc.pas, инструкция в новом модуле {NATIVE_DB|_Delphi_KOLODBC_to_use_with_VCL} (это актуально из-за неустраненной ошибки в ADO с получением слишком больших NUMERIC значений из БД - с исключением BCD overflow); Delphi VCL: более компактный код для All_classes.pas (в случае более чем 64К строк в модуле отладчик Delphi32 превращается в тыкву); {Long_operation}: некоторые изменения в реализации класса: уменьшена зависимость от запускающей формы, обеспечивается автоматическое скрытие при завершении обработчика любого события; C#, Delphi: внутреннее устройство механизма управления временем жизни структур, реализованных через объекты, изменено: их счетчик использования фактически игнорируется, вплоть до момента уничтожения экземпляра структуры; Исправления: Delphi VCL + {Dialog}: вызов ready("результат") не приводил к завершению диалога, если производился не в результате реакции на действия пользователя (клик мыши, нажатие кнопки или клавиши), а, например, по таймеру; Delphi VCL + {Canvas}: исправлена работа трансформаций Offset, Rotate, Scale (в VCL обработчик OnPaint сбрасывал режим канвы на GM_COMPATIBLE);

#### 14.09.2022 - версия 2.4.5
Изменения: Документация по языку обновлена и скорректирована (добавлены описания по обобщенным функциям, .[]-методам, обновлены описания в соответствии с изменениями в языке, исправлены опечатки); Исправления: C#, Delphi: неверная генерация присваивания результата функции, возвращающей объект: счетчик использования объекта увеличивался лишний раз; KOL: ошибки в нативном коде;

#### 6.09.2022 - версия 2.4.4
Изменения: Добавлены предупреждения о наличии блочных комментариев, помеченных как REUSED, которые далее не используются в коде (оператоы LIKE, REVERT); Добавлены предупреждения по параметерам публичных функций, которые объявлены как динамические массивы, хотя из их использования в коде достаточно, чтобы они были фиксированными. Для случаев, когда компилятор все-таки ошибается, предлагается в имени параметра использовать подстроку DYN (в любом регистре), чтобы избавиться от предупреждения; Оператор DONE понижает уровень вложенности блочных операторов (как если бы оператор FOR уже завершился); {Paint_table}: обработка событий движения мыши улучшена, чтобы обработать больше пропущенных событий (четче происходит изменение ширины колонок мышью); {Control}.Suspend / .resume, для {Paintbox}+ реализована дополнительная приостановка отрисовки на время, когда действует PUSH Suspend для контрола; {Form_common}, {Dialog_common}: {Paint_lines}+ : рамка фокуса отрисована на краях окна без отступа и практически не мешает читать текст; {Paint_table}: при наличии заголовка вместо рамки фокусировки перекрашивается фон заголовка; Исправления: {File_path}.Rename|_file - удалял файл при попытке переименования, если прежнее имя от нового отличалось только регистром букв; C#: Генерация кода: для NONE-обьектов простые поля ( типов INT, BYTE, BOOL, STR, ENUM) теперь инициализи- руются нулями независимо от наличия инициализаторов для этих полей в определении класса, как и должно быть; FPC, {Form}: установка размеров формы до отображения окна не работала; Delphi: при включенной оптимизации генерация кода для циклов могла давать некомпилируемыкй код;

#### 30.08.2022 - новая версия 2.4.3
Изменения: IDE AL4: небольшие изменения (оптимизация undo, номера вкладок на меню вкладок, группировка событий в меню событий Дизайнера формы); Color Commander: небольшие изменения (еще более цветной, добавлено окно деталей Копирования/ Перемещения - позволяет управлять очередью в процессе выполнения операции); Portable Notes: небольшие улучшения (абсолютные координаты окон, единственный экземпляр); Zoomer6: небольшие изменения (более плавная прокрутка с меньшим числом артефактов); {Form}.Set_position 'KEEP_ON_SCREEN' - в Windows учитывает панель задач, не позволяя (по возможности) окну пересечь его (включая вторичную панель задач на дополнительном экране Windows 10) Исправления: IDE AL4: устранены небольшие неисправности (открытие недавно закрытых, прорисовка маркеров изменений);

#### 19.08.2022 - версия 2.4.2
Изменения: IDE AL4: добавлено визуальное выделение тэгов html и другие средства для работы с html-разметкой (подсветка закрывающих тэгов, выделение блоков тэгов, переход между начальным и конечным тэгом блока, диалог быстрого ввода тэгов и т.п.); Добавлено приложение Tools\Html_tools, позволяющее переформатировать html файл для более удобного последующего редактирования (автоиндентация, удаление мусорных тегов span lang); Исправления: IDE AL4: устранена неисправность в автосохранении; C#, {Process}.Ended возвращал FALSE для завершенного процесса;

#### 9.08.2022 - версия 2.4.1
Изменения: В цикле по массиву структур переменная цикла (представляющая очередной элемент цикла) теперь может использоваться в левой части оператора присваивания (например, для изменения значения поля структуры - текущего обрабатываемого элемента), или в отдельном операторе (например, для вызова функции/метода, относящегося к полю этой структуры). До этого допускалось использование структурных переменных цикла только в правой части оператора присваивания или '<<'; Для сокращения кода в выражениях вида A[].Delete(A[].Count-1) теперь можно использовать конструктивное сокращение A[].Delete(.Count-1) – в том числе и с системными функциями (прежде допускались подобные сокращения только в случаях полей или обычных функций; Исправления: {Form}.Show/Linux: форма в Linux не получала фокус , если активна была другая форма; C#: из-за известного бага в.Net при обработке сочетаний клавиш с нажатым Control, когда в фокусе находится текстовое поле, раздавался звуковой сигнал "восклицание" - независимо от того, возвращал обработчик key_down в качестве результата 'DECLINE' или 'ACCEPT'; Теперь, при возвращении 'DECLINE' дальнейшая обработка подавляется и текстовой контрол не получает более непонятные ему сочетания клавиш; Внимание! Могут перестать правильно работать программы, напропалую возвращавшие 'DECLINE' в обработчиках события key_down - возвращать его следует только если действительно клавиша полностью обработана и нет необходимости получать key_press; Linux + {Form}.Width, .Height, .Bounds: размеры формы возвращались неверные из-за странного решения разработчиков Lazarus даже не пытаться их определить, так как якобы неизвестно как их получить, и в итоге для TFrom вместо Width и Height возвращается ClientWidth и ClientHeight; В новой версии чтение/установка размеров на платформе FPC (и Windows, и Linux) работает, но только при условии, что форма уже отображена на экране (требуется реальное отображение, а не то, что произошел вызов события {Form}.shown - к сожалению, этого недостаточно: лучше отложить работу на тик таймера, например, на 100 мсек после события shown) ; FPC: исключение Access Violation вызывалось в некоторых неисправных нативных функциях(в модуле AL4_form.pas) из-за работы с объектами классаStr, заменяющими типString в реализацииAL-IV; Обнаружены и исправлены проблемы в обработчике события нажатия клавиши и в функции установки собственного шрифта для колонки;

#### 1.08.2022 - версия 2.4.0a
Изменения: {Paint_table}: порядок отрисовки тени измeнен на нормальный (сначала тень, затем текст); Исправления: {Form}.Make_tool_window: в классической схеме (Windows 7 и ниже) не отрисовывалась узкая полоска между сузившимся заголовком и прочей частью формы ; в более современных версиях системы размер заголовка не менялся; не был дописан код восстановления (для параметра Yes=FALSE); не был дописан код для версии с KOL;

#### 28.07.2022 - версия 2.4.0
Изменения: C#/{Form}: добавлено поле BOOL {Form}.Do_not_close, установление которого в TRUE позволяет предотвратить перезагрузку/ отключение системы. Работает только после того, как выдан RESULT='DECLINE' в обработчике события closing (иначе приложение завершается как обычно); Результат этого изменения: приложения, скомпилированные через C#, больше не препятствуют перезагрузке/завершению работы системы- без прочих изменений в коде, достаточно их перекомпилировать( проблема возникает в случае наличия обработчика события closing, возвращающего 'DECLINE'); Компилятор: при наличии файла readme.txt в директории компилятора выводит первую строку из него (с номером версии дистрибутива АлФор) в начале работы; IDE AL4: оптимизации скорости отображения; {Paintbox}, {Canvas}: Invalid_rect - серьезные изменения в порядке установки и обработки прямоугольника, содержимое которого должно быть перерисовано. Цель данного изменения - оптимизация отрисовки в окнах, которые требуют лишь частичной отрисовки(и активно используется метод {Paintbox}.Invalidate_rect). И хотя это может повлиять на работу существующих приложений, данное изменение, скорее всего, останется постоянным; Компилятор: добавлено сообщение об ошибке в случае, если оператор состоит из обращения к переменной; {Form}: добавлен метод Make_tool_window; {Paintbox}: добавлен метод Update; {Memo}: добавлен стиль MEMO_CENTER; Обновлены демо-приложения: Clock, Portable Notes; Исправления: Компилятор в Delphi/FPC: в случае вызова не возвращающей результат функции с пустым параметром-конструктором структуры, могло неправильно выдаваться сообщение об ошибке; Компилятор: в предупреждении о несбалансированных кавычках (в области после END) не указывалось имя класса, в котором выявлена проблема; Компилятор: исправлена неверная реализация операции сравнения подстроки с элементом строкового массива( создавался некомпилируемый код); Delphi/FPC: прекращена излишняя корректировка координат курсора мыши для текстового курсора; Free Pascal: проблемы с модальными сообщениями {Form}.message и {Form}.ask: решено вызовом собственного (формируемого на лету) модального диалога (типа {Dialog_common}); и с модальными диалогами в Windows: код возвращен к последнему рабочему коду на 15.11.2021;

#### 21.07.2022 - версия 2.3.9
Изменения: Color Commander: ряд улучшений (добавлена поддержка локализованных файлов description.XX, где XX - код языка ввода. Например, RU для русского языка, дерево папок вынесено в отдельное окно и не использует область предпросмотра); Demo\Clock: добавлена дополнительная опциональная функция-индикация языка ввода в текущем окне цветом рабочего стола(синим - английский, красным - любой другой. Цвета могут быть изменены в файле локализации). Опция проверена в Windows 7 и Windows 10; IDE/AL4: небольшие изменения; Добавлено демо-приложение Portable Notes ( Переносимые - между различными ПК - Заметки); {Form}: для колонок теперь поддерживается отрицательный параметр "ширина метки" ( Label_w|idth), что означает, что в вертикальных колонках метка (слева от контролов) имеет переменный размер, а контролы (справа от меток) - фиксированный (равный абсолютной величине значения Label_width); Так же, контролы с установленным флажком "расширяется вниз/вправо" ( Anchor_bottom|_right)всегда размещаются со следующей строки, упираясь в левую границу родительской колонки- независимо от наличия метки перед ними; C#:Теперь для всех создаваемых потоков устанавливается свойство IsBackground=true; Исправления: Delphi/KOL: установка иконки кнопки приложения (при наличии опции/$ICON=...). Имя ресурса главной иконки в случае KOL возвращено к MAIN; Компилятор в C#: из-за побочного эффекта, могли генерироваться некорректные операторы if (при компиляции сложных условий в операторах CASE);

#### 12.07.2022 - версия 2.3.8
Изменения: Color Commander: ряд улучшений и исправлений; IDE/AL4: CTRL-F3/ CTRL-F2 теперь работают так же как F3/ F2 (поиск вперед/ назад); {Long_operation}: автоматическое скрытие при обращении к Indicate|_activity; Исправления: C#/{Form}: message - после выдачи сообщения на экран не производился возврат фокуса текущей (или указанной) форме; C#/{Form}: Set_bounds - установка новой позиции для формы не работала; C#/{Combo}: Set_items("") - добавлял один элемент к списку после очистки, хотя параметр-строка был пуст; IDE/Designer: {Memo} - некоторые опции могли теряться в процессе сканирования конструктора формы CONSTRUCTOR; {Memo} теперь использует '+' для комбинирования флажков, так что нет необходимости помечать классы форм с {Memo} опцией BITWISE;

#### 24.06.2022 - версия 2.3.7
Изменения: {Progress}: Can_anchor_bottom в конструкторе устанавливается автоматически, если родительская колонка выровнена вниз/вверх; {DB}: была добавлена выдача в консоль сообщений об ошибках попыток доступа к полям закрытого соединения в отладочном режиме; IDE/AL4: добавлена цветовая индикация на левой/правой стороне редактора и над вкладкой; добавлена история последних 10 подсвеченных слов; улучшена цветовая индикация выделенных слов ; Исправления: C#/{Dialog}: при повторном отображении формы диалога не изменялись размеры контролов в соответствии с изменениями размеров колонок;

#### 17.06.2022 - версия 2.3.6
Изменения: Реализованы циклы FOR по массивам структур: FOR x IN A[]:...; При этом переменная цикла фактически преобразуется в макроподстановку x --> A[x], и рассматривается как структура, к которому обращение происходит как к элементу массива. В том числе, разрешено помещать ее в левой части оператора присваивания. Операция x.INDEX также доступна; {DB} << UPDATE..., BY структурная_переменная и INSERT..., BY...: для полей, не находящихся в списке NOTNULL в определении таблицы (TABLE), используются функции конвертации с нулем на конце имени (что приводит к записи значений NULL в случае нулевых значений); Компилятор: ослаблено правило проверки на побочные эффекты для операторов добавления в массивы ( <<): левая часть оператора в проверке не участвует;

#### 7.06.2022 - версия 2.3.5
Изменения: Компилятор: из проверки побочных эффектов в выражениях удалена проверка рекурсивности; Исправления: C#+FPC: При создании {Memo} с включенной горизонтальной прокруткой, прокрутка не появлялась, т.к. действовал режим переноса слов; Delphi/FPC: Исправлена генерация добавления пустой структуры в массив структур (того же типа); Компилятор: проверка рекурсивности перегруженной рекурсивной статической функции приводила к падению компилятора; Delphi(VCL/KOL)/FPC + {DB}: Count_fields, Field(i) - не работали в случае пустой выборки после SELECT ( что не позволяло получить список полей запросом вида SELECT * FROM table WHERE 1=0);

#### 2.06.2022 - версия 2.3.4
Изменения: Color Commander: небольшие доработки; {Form_common}, {Dialog_common}: подсказки по содержимому ячеек виртуальных контролов {Paint_table} обеспечиваются (через событие Get_info , заполняющееCurrent_row[] контрола); Исправления: C#: если из-за побочных эффектов удалялся объект, метод которого выполнялся, поле This_obj возвращало null со всеми вытекающими;для устранения проблемы добавлена проверка в свойстве THIS на null, с возвращением соответствующего NONE-объекта(изменен генератор кода для C#); {Form}: после ввода стека источников событий перестал работать фокус с кликами во время длительной операции, даже и запущенной через таймер (отложенным образом). Потребовалось добавить параллельный стек типов событий, чтобы в момент сброса таймера код мог обнаружить, что это происходит в обработчике события timer и соответственно исправить значение уровня вложенности событий, чтобы последующие клики на кнопках могли отрабатывать;

#### 19.05.2022 - версия 2.3.3a
Изменения: Draft Notes: небольшие доработки; добавлен режим сглаженных линий (Безье); Исправления: FPC/Linux: компиляция компилятора для Linux останавливалась с ошибкой из-за неизвестноgoв Linux типа TFileTime;

#### 18.05.2022 - версия 2.3.3
Изменения: IDE AL 4: небольшие изменения; Color commander: небольшие изменения/улучшения, добавлен просмотр/изменение атрибутов и прав/владельца для файлов/папок; {File_path} +=FUN Set_file_last_access_time; {System_functions} +=FUN User_name; FUN Execute_program +=flag 16==RUNAS; {DB} +=METHOD Transaction_level==> INT; +=BOOL In_query, READ; Исправления: C#/Delphi(VCL/FPC), {Form}: Show не восстанавливал минимизированную форму, хотя и активировал ее;

#### 10.05.2022 - версия 2.3.2
Изменения: Tools\Draw_diagram (приложение): добавлен экспорт "штрихованный" (цвета заменяются штриховкой) и "бело-черный" (цвета игнорируются); Demo_projects\Clock: небольшие улучшения; Исправления: {Paint_turtle}: после первой установки особого фона, фиксируется флаг Custom_background, после чего именно установленный фон используется для закраски полотна;

#### 30.04.2022 - версия 2.3.1
Исправления: C#/{NATIVE_Stream_on_C_Stream}: неверный код создания структуры {Long_int}.{long}; как одно из следствий, не работала загрузка иконок в {Icon}; {Form}: sender восстанавливается после обработки события (из стека запоминаемых sender'ов), что предотвращает "странные" ситуации, когда в результате срабатывания вложенного обработчика изменяется sender в процессе работы одного обработчика;

#### 21.04.2022 - версия 2.3.0
Изменения: {DB}.Commit теперь возвращает значение типа BOOL - сигнал успешности подтверждения транзакции (может использоваться в CASE операторе для выдачи в противном случае сообщения об ошибке/ записи в журнал ошибок и т.п.); Наличие любых ошибок при исполнении Exec/Open приводит к тому, что Commit не будет выполнен и возвратит FALSE (Ошибки доступа к полям уже загруженной записи игнорируются); Добавлен так же метод Commit_anyway, который работает как раньше (но сразу отмечен как DEPRECATED - осуждаемый); Компилятор: добавлены опции/warn -style, /warn -index[ing] - убирают предупреждения по стилю оформления кода и использованию деклараций INDEXING; Компилятор: при проверке побочных эффектов (side effects) в операторах рекурсивность засчитывается только для методов (но не статических функций) - уменьшает количество(явно избыточное) таких обнаружений; IDE: улучшения в быстрокоде (режим ctrl+i, включен по умолчанию); IDE/Designer: двойной клик с ЛКМ ищет ссылку на метку (Alias) контрола только в событии клик, двойной клик с ПКМ, как прежде - везде по тексту; Добавлен переход на "события" before_CONSTRUCT, after_CONSTRUCT; Исправления: запрещены фиксированные массивов структурных типов; FPC: излишнее сообщение в консоли об использовании безресурных форм появлялось; Delphi VCL/KOL, FPC (Windows): время файла (создания, изменения, доступа) читалось без учета разницы с Гринвичем;

#### 7.04.2022 - версия 2.2.9
Изменения: SQL: JOIN с дублированием таблиц/синонимов вызывает теперь предупреждение (иногда дублирование требуется в альтернативных ветвях запроса - по разделителям ------------- 'condition?'); SQL: Добавлены функции Int_sql0, Date_sql0, Id_sql0, Bool_sql0, Str_sql0 для автоматического преобразования в NULL нулевых и пустых значений; В SQL-запросах в выражениях в фигурных скобках используются именно эти функции, кроме полей NOT NULL, а так же кроме случаев, когда выражению в фигурных скобках предшествует префиксный символ "@"; Исправления: SQL: INSERT..., BY..., BUT except_fields[] - некоррекно формировался запрос(запятые не в тех местах); SQL: UPDATE..., BY..., BUT except_fields[] - не был реализован; {Paint_table}: при вызове Clear, Current|_line не сбрасывался, в результате при клике после последующего добавления строк, могло не срабатывать событие selection_change; C#, {Form}.message, .ask: форма (и приложение) теряла фокус после выдачи окна с сообщением на экран (исправлено принудительной активацией по таймеру ~10 миллисекунд); Delphi/FPC, {System_functions}.Execute_program: устранена ошибка в x64приложениях(из-за приведения THandle к DWORD); Delphi/FPC/KOL: генерация кода инициализации фиксированных массивов из объектов в качестве поля класса/структуры; FPC+ Windows: {Form}, {AL4_form}: при вызове Popup_menu происходил крах из-за того, что обработчик сообщений Lazarus не проверяет того, что Application.MaimForm может быть равно nil. Исправлено изменением способа создания форм - через Application.CreateForm;

#### 23.03.2022 - версия 2.2.8a
Изменения: {Form_common}: при передаче контролу фокуса, предыдущая ему метка подсвечивается (в Linux иначе вообще невозможно понять визуально, какой сейчас контрол активирован); Исправления: C#, {Paintbox}++: возвращена возможность реагировать на клавиши стрелок(из-за некорректной попытки предотвратить передачу фокуса другим контролам при нажатиях на стрелки в некоторых случаях); Free Pascal, {Label}: размер метки более не изменяется автоматически для меток, размер которых был установлен явно;

#### 22.03.2022 - версия 2.2.8
Изменения: IDE: в форме поиска добавлена возможность пропуска строк, содержащих заданные символы; Исправления: Компилятор: в случае неверного использования префикса DONE в цикле FOR номер строки мог указываться ошибочно нулевой; C#/Delphi/VCL, {Paint_lines}/{Paint_table}: при движении по строкам контрола клавиатурными стрелками фокус перемещался на другие контролы формы; Delphi VCL/FPC, {Button}: нажатие клавиши клавишами ENTER/ ПРОБЕЛ могло не срабатывать;

#### 13.03.2022 - версия 2.2.7
Изменения: {Paint_table}: +=выделение строк проведением мышкой снажатой левой кнопкой, + с CONTROL: снятие/установка выделения строк; IDE/Designer: обеспечивается начальный код обработчика при переходе на обработчик события menu_item (точнее, при первичном создании этого обработчика при переходе на него, когда его еще нет); соответственно, достаточно выполнить повторный переход (События\menu_item), чтобы добавить существующие пункты меню; Исправления: C#: {Dialog} - в некоторых случаях (если не требовался/ не присваивался результат) происходил краш приложения при закрытии диалога;

#### 07.03.2022 - версия 2.2.6
Исправления: C#, Delphi(VCL)/FPC: обработчики мыши/клавиатуры могли вызываться во время приостановки работы основного кода, например, в результате слишком длительной операции прорисовки (событие paint), или при выполнении других длительных циклов в других обработчиках. В результате, некорректно отрабатывал метод {Form}.Any_change, который должен был изменять состояния контролов (доступно/недоступно, видимо/скрыто). Решено: добавлением флажка/счетчика Allow_handle_events, который предотвращает вложенные вызовы цикла отработки приходящих сообщений;

#### 20.02.2022 - версия 2.2.5
Исправления: Компиляция отрицательных констант;

#### 7.02.2022 - версия 2.2.4
Исправления: {OpenGL}: зачем-то размеры контрола считались зафиксированными и запрашивались однократно, что совсем неверно; {Paint_tab}: обработка событий мыши прекращалась после обслуживания собственных операций, что не допускало расширения обработки извне; Обновлены приложения: Color Commander: Нажатие на корочке активной вкладки активизирует вкладку, которая была активна до нее (теперь работает);

#### 30.01.2022 - версия 2.2.3
Изменения: Delphi/FPC (Windows): {File_stream} - обеспечивается модификация размера файла на диске в процессе записи вфайл; C#: {WebP} - добавлена возможность загружать изображения в формате webp (требуется libwebp32.dll / libwebp64.dll); Исправления: FPC: Demo_projects\Zoomer6lite\{Image}: loading WEBP format fixed; {Paint_turtle}: в связи с вводом нового метода {Control}.Click, перестал срабатывать двойной клик по черепашьей кнопке как двойное нажатие (отрабатывал однократно); FPC: {Hardware}.Get_drive_type не работал корректно ; C#/{Long_int}: исправлены операции с большими числами, когда младшее 32-битное выглядит как отрицательное целое; IDE/Designer: генерация кода цвета из группы {system_color}; FPC: компиляция визуальных программ под linux исправлена; Обновлены приложения: Zoomer6/ Zoomer6Lite: добавлена поддержка WebP; Color Commander: Удаление улучшено: если не удается удалить большой файл в корзину, запрашивается вариант удаления мимо корзины; Копирование больших файлов исправлено (> 4Гбайт) и улучшено: отображение прогресса теперь работает; Отмена операций копирования не работала ( Delphi/FPC) - исправлено; Ускорено считывание дисков; Исправлено получение информации о дисках ( FPC); Добавлены кнопки +, x; Нажатие на корочке активной вкладки активизирует вкладку, которая была активна до нее;

#### 20.01.2022 - версия 2.2.2
Изменения: {DB}: При генерации кода для INSERT и UPDATE имена полей заключаются в квадратные скобки, при распознавании условий;так же стало возможным заключать в квадратные скобки имена полей в условиях и других частях запроса; {DB}: Добавлен методTransaction_dummy (для целей отладки, для быстрой замены PUSH Transaction наPUSH Transaction_dummy); {DB}: Добавлен метод Row_count для получения количества вставленных/ измененных записей в результате запроса; Исправления: {DB}: исправлена проблема повторного вызова Remove_not_allowed: т.к. при этом стирался список разрешенных ветвей, то повторный вызов (в том числе непосредственно перед исполнением Exec/Open) удалял все опциональные ветви запроса. Теперь стирание списка происходит только в Exec/Open, соответственно, вызовов Remove_not_allowed может быть несколько - это не повлияет на результирующий текст запроса; {DB}: Добавлена поддержка комментариев ----------- 'condition?' между присваиваниями полей в SQL-запросах UPDATE; обеспечивается автоматический комментарий перед секцией WHERE при наличии таких комментариев (чтобы предотвратить отбрасывание условия); IDE AL4/Designer -возникали проблемы при замене METHOD на FUNCTION для before_CONSTRUCT; C#: {Form}.message мог переводить приложение в непонятное состояние, при котором диалог не отображался, и никакие действия не могли активировать формы, кроме нажатия ENTER; Работа диалога (вынужденно) изменена: теперь диалог всегда отображается на основном экране;

#### 9.01.2022 - версия 2.2.1
Изменения: {Report}: добавлены методы Cell_r|ight, Cell_d|own. Упрощается подготовка Лент(Band)/Ячеек( Cell) для последующего использования; Исправления: IDE/AL4 - адаптирован к новым изменениям в {Date_time} и {Stream}; C#/{DB} + OLE DB: адаптирован код к новым изменениям в {Stream}; C#/{DB} + ODBC: исправлены возможные утечки памяти в нативном коде;

#### 3.01.2022 - версия 2.2
Изменения: {Date_time}: поле DT структуры {date_time} изменено на dt (и стало приватным). Для сохранения максимальной совместимости, добавлены функции DT и Date_time: первая позволяет не исправлять код преобразования структуры {date_time} в вещественное число (миллисекунд от некоторой ключевой даты от 1 января 1601 года н.э., или от 1 января 1 года н.э. - в зависимости от платформы);Данное изменение позволяет (в будущем) использовать структуру {date_time}на платформах, не имеющих вещественных чисел достаточно большой точности, чтобы в одном числе закодировать число миллисекунд от начала летоисчисления; {File_path}продолжает использовать типREALдля хранения времени файла, но это, возможно, временно; {Stream} + {File_stream} + {Memory_stream}: Для позиционирования и работы с размером потоков теперь используется структура{Long_int}.{long} (вместоREAL), могут потребоваться небольшие исправления в проектах; {DB}: во всех случаях разрешено использовать в запросах алиасы таблиц, в том числе в случае единственной таблицы; это позволяет использовать вложенные запросы, так же в том случае, если используется одна таблица, как во вложенном, так и/или внешнем запросе; {DB}: Добавлена поддержка конструкций EXISTS(SELECT...) иNOT EXISTS(SELECT...) в качестве операндов SQL-выражений; Метод-конструктор CONSTRUCT может иметь модификатор RECURSIVE (когда он рекурсивен и детектируется как рекурсивный); Добавлен новый вид оператора присваивания dstruc, BUT[(f1, f2, ...)]=sstruc[, BUT (fN+1, fN+2, ...)] позволяющий присвоить поля одной структурной переменной (sstruc) полям другой структурной переменной (dstruc), причем типы этих структур могут отличаться. При присваивании не затрагиваются указанные в списках BUTполя; Для всех прочих целевых полей должны быть соответствующие (по краткому имени) поля, имеющие тот же тип данных; Присваивание реализовано только для скалярных полей; При декларации структуры возможно использовать конструкцию `LIKE {структура}` или `LIKE {Класс}.{структура}` в результате структуре на верхнем уровне добавляются все поля указанной структуры(в случае исходной структуры из того же класса, она должна быть определена выше по коду; Разрешены блочные комментарии ------ 'text' внутри вызовов конструкторов (структур, объектов) вида `x={тип}(поле=значение, -------------- 'комментарий' полеN+1=значениеN+1, ...)` Исправления: Delphi/KOL, {DB}: чтение даты из БД; Исправления в компиляции перегруженных функций;

#### 29.12.2021 - версия 2.1.2
Исправления: C#, Delphi/KOL, Delphi/FPC, FreePascal/LCL + {Printer}: печать не работала;

#### 26.12.2021 - версия 2.1.1
Важные исправления: Восстановлена компиляция для Android; Изменения: {Separator}.Set_separator_column_target({Form}, STR Separator_col, STR Target_col_resizing) - позволяет явно указать управляемую колонку, игнорируя взаимное положение колонок(в какую сторону менять размер - определяется теперь только местоположением управляемой колонки относительно управляющей). В большинстве случаев не требуется изменять настройки уже работающих сплиттеров колонок, но могут быть исключения; {Paint_table}: Current_line не для определения того, какая строка сейчас прорисовывается (для этого Drawing.Item); При проверке доступности приватных полей, теперь учитываются наследники классов-друзей (IMPORT, FRIENDS); {Form_common}/{Dialog_common}: для {Paint_lines} и его наследников добавлено отображение фокусной рамки; Добавлены функции Set_all_forms_min|imal_size_restriction(min_w, min_h), Set_all_dialogs_min|imal_size_restriction(min_w, min_h); Исправления: {Paint_tree}:при программном вызове Select для выбора текущего узла не вызывалось событие selection_changed; {Table}: генерация SQL-кода для INSERT с опциональными группами присваиваний (разделенными комментариями вида ------------------- 'условие?' ); {Form}: стиль разметки горизонтальных колонок 'CONTROLS_LEFT_LABELS_ABOVE' исправлен (для метки используется 45% высоты колонки); IDE/Designer: исправлена генерация кода для установки многострочного текста в CONSTRUCT; {DB}: INSERT с опциональными значениями полей; INSERT с несколькими присоединенными (JOIN) таблицами в запросе; SELECT с GROUP BY: использование полей с алиасами таблиц разрешено в GROUP BY;

#### 18.12.2021 - версия 2.1
Важные исправления: Delphi: ошибка вставки внутри массива байтов; Компилятор: Поиск функции Str (вызываемой неявно в операторе <<) в случае неверного операнда мог проводить к неверно сгенерированному коду; FPC: компиляция для Linux (восстановлена); Delphi/FPC: Contains, Find в фиксированном строковом массиве; Изменения: {Form}, {Timer}: запрет на вложенные обработчики событий снимается, если в обработчике события таймера (любой) таймер деактивируется (в начале обработки). Это позволяет начинать через таймер длительную обработку, в процессе которой не следует игнорировать обработку событий, таких, как, например, click; Добавлен метод {Control}.Click для программного вызова события click, относящегося к контролу; {Form_common}/ {Dialog_common}: дополнительная обработка событий enter/leave: инвалидация {Paint_lines} (и наследников); IDE: корректировка горизонтальной позиции каретки при перемещениях по тексту вверх/вниз; Исправления: FPC: компилятор сохранял All_classes.pas в Ansi (в Windows), в результате национальные символы (например, в именах элементов перечислений) заменялись на '?'; IDE/Menu edit: выбор мышью подпунктов меню, при наличии нескольких подменю; IDE/Designer: горизонтальная прокрутка не появлялась при отсутствии меню на форме; {Paint_table}: позиция каретки была на строку выше; {Paint_table}: происходило кумулятивное выделение строк при перемещении клавишами стрелок вниз/вверх (как если бы был нажат Shift); C#/Delphi(VCL)/FPC, {Paint_lines}+{Paint_table}+{Paint_tree}: исправлена обработка табулирования клавишами TAB, SHIFT+TAB, клавиши ESCAPE при наличии на форме кнопки отмены и клавиши ENTER при наличии кнопки по умолчанию; C#, {Paint_table}: в первый раз при показе формы прорисовывалась только часть таблицы; FPC: авто-размещение контролов в невидимой (изначально) горизонтальной колонке не работало до первого (ручного) изменения размера формы после перевода колонки в видимое состояние; Delphi(VCL), FPC: установка размера контрола программно не останавливала автоматическое изменение размеров для кнопок, меток и т.п.; C#, {Form}: не был реализован обработчик событий enter/ leave; Delphi: обработчик enter/ leave был реализован только для графических контролов ({Paintbox} и произведенных от него{Paint_...}); {DB}, {MDB}, \AL4\Test_projects\Test_db: компиляция / работа тестов с базами MS Access восстановлена( функция Str_sql перенесена в отдельный класс {Db_sql_string}, и особая версия этого класса указывается для проекта указанием пути DB\4MDB в опциях проекта);

#### 12.12.2021 - версия 2.0.6
Изменения: {Form}.Column_layout += 'CONTROLS_LEFT_LABELS_ABOVE' (для горизонтальных колонок); IDE/Designer: автоматическое добавление ранее не добавленных пунктов меню в оператор CASE обработчика menu_item при переходе на него через меню События; IDE/Designer: проверка наследования для форм проводится не на основе точного имени {Form}/ {Dialog}, а по началу имени {Form/ {Dialog, что допускает визуальную настройку форм, унаследованных от другого предка, например, {Form_common}; Добавлены классы {Form_common}, {Dialog_common}, для использования в качестве базовых классов форм и диалогов в приложениях. Имеют ряд готовых типовых обработчиков событий для некоторых событий; Ключ компиляции/max_desc {Класс},n для ограничения использования заданного класса в качестве предка других классов в проекте; Исправления: a LIKE b (сравнение строк); {String}.Replace_all (начиная с последнего, так что теперь работают замены x==> xy, например); Delphi: генерация кода добавления новой структуры непосредственно в массив(случай простой структуры);

#### 3.12.2021 - версия 2.0.5
Изменения: Поле структуры может быть не публичным, при этом оно остается доступным в методах класса и его наследников; {DB}: для работы с IDENTITY-полями в памяти создан структурный тип`{id|entity}`(ранее предлагалось использовать для этой цели тип REAL); {DB}: добавлен метод Nulls==> STR, возвращает после SELECT запроса для текущей записи строку с перечислением полей, имеющих значение NULL; {DB}:запрос вида`INSERT... BY structure` может быть дополнен частью`, BUT str[]`с указанием строкового массива с именами полей, значение которых не будет устанавливаться в запросе ; IDE/Designer: добавлена отрисовка (схемы) меню ниже формы, с возможностью быстрого перехода к обработчикам пунктов меню по двойному клику по нему ; Исправления: {Dialog}: событие closing не вызывалось для модальных диалогов (теперь вызывается, хотя результат -игнорируется); C#,Delphi(VCL)+{DB}:`Transaction` реализован корректно для ODBC и OLE DB; {Paint_tree}: рисование линий;

#### 27.11.2021 - версия 2.0.4
Изменения: IDE/Designer: изменено групповое выделение с Shift и Control (Control+клик добавляет/убирает контрол в выделении, Shift+клик расширяет выделение, включая все контролы попавшие в прямоугольник описывающий уже выделенные контролы и кликнутый); IDE/Designer: добавлена возможность группового редактирования свойств одновременно для выделенных контролов (отображаются только свойства, общие для выделенных контролов, метка свойства выделяется красным, если соответствующие значения свойств для выделенных контролов отличаются); IDE/Designer, {Paint_turtle}: визуальная работа со свойствами Border, Ink, Fill, Ink_disabled, Fill_disabled; {Form}: new_column, к колонке добавлена опция выравнивания меток вправо; Исправления: IDE/Designer:исправления и улучшения в копировании (дублировании) выделенных контролов; {Paint_turtle}: отображение в режиме 'FLAT', добавлено начальное затирание; {Paintbox} (Delphi, FPC): добавлено начальное затирание цветом по умолчанию, при создании графического буфера; FPC: {Datepicker}.Text; FPC: кнопки по умолчанию и отмены не работали автоматически на формах(в LCL они работают только для диалогов); Оптимизатор: правильно учтено использование конструктора объекта как функции (ранее, оптимизатор мог выкинуть весь код конструктора, если в классе больше не было методов, которые бы вызывались где-либо);

#### 21.11.2021 - версия 2.0.3
Изменения: IDE/Designer: новые свойства (Min width, Min height для формы, Multiselect для {Paint_table}), координаты мыши; IDE/Designer+ {Paint_table}: добавлена возможность настраивать колонки визуально; {Form}: изменения в правилах выравнивания колонок: если есть колонки, выровненные и влево, и вправо, но нет центральных колонок, то все колонки, выровненные влево и вправо, делят ширину формы поровну; {Form}.Set_size_min(min_w, min_h) метод; Исправления: Компилятор: оптимизация вставкой функции, содержащей циклы с операторами BREAK/CONTINUE, работала с ошибкой (код не компилировался без отключения оптимизации); При компиляции длинных SQL-запросов, сканирование могло обрываться, и компилятор выдавал непонятные ошибки в коде; Delphi: FOR + оптимизация вставкой=были опять проблемы; Delphi/KOL: {Dialog}.Show_modal - форма закрывалась, а не скрывалась; SQL/INSERT: в случае опциональных значений (разделенных блоками комментариев --- 'condition?'), код мог портиться при удалении опциональных частей;

#### 14.11.2021 - версия 2.0.2
Изменения: IDE Designer: улучшенное определение размеров основной центральной колонки; {Paint_tree}: отрисовка улучшена, добавлено рисование иконок(черепашная графика), функция для обработки клавиш управления (стрелки и пр.); Сахар с обращением к полю того же объекта или структуры в том же выражении улучшен: Tree.Node(.Selected), Control.Width +.Height и т.д. ; Компилятор: в случае присваивания значения полю структуры, возвращенной в результате вызова функции, выдается сообщение об ошибке (бессмысленная операция); {Form}, {Paint_turtle}: при размещении контролов в колонке сверху вниз, контролы {Paint_turtle}, созданные вслед за любым контролом, всегда размещаются в том же ряду справа(так, допускается размещение в одном ряду до трех контролов, если первый в тройке - метка, у третий - {Paint_turtle}; {Paint_turtle}: добавлен режим вложенных "под-кнопок" (превращает {Paint_turtle} в горизонтальную линейку кнопок с единым черепашьим рисунком); SQL/DELETE: добавлена возможность вместо WHERE указывать специальное слово ALL (DELETE FROM My_table, ALL), для явного указания того, что все содержимое таблицы удаляется (и это не ошибка); Исправления: Delphi(VCL)/FPC: {Paintbox} - установка значения вертикальной прокрутки; Designer: добавление новых синонимов в CASE обработчика событий(click)при переходе на него из меню; SQL INSERT, UPDATE: использование комментариев ------------ 'текст' внутри списка присваиваний значений полям базы; Компилятор: работа с цепочками сравнений в случаях нескольких операций между сравнениями, например a + b < d + e <=f + g или a < b && c < d (во втором случае правильно обнаруживается, что речь идет не о цепочке сравнений, т.к. приоритет && / || меньше); IDE/Designer: загрузка {Paint_turtle} с опцией Like_button=FALSE; Android/JAVA: компиляция {AL4_form} была поломана;

#### 7.11.2021 - версия 2.0.1
Изменения: В SQL-операторе SELECT в секциях ORDER BY и GROUP BY единственное поле не обязательно заключать в скобки ; {Paint_table}.Hidden_col, Set_hidden_columns(N) ( сокрытие заданного числа последних колонок); {Form}: На время обработки любых событий блокируется вызов обработчиков событий нажатий/отжатий мыши и клавиатуры (click, mouse_down, mouse_up, mouse_double_click, key_down, key_up, key_press); C#, Delphi/FPC: Для {Edit} реализован фильтр, отсекающий вводимые символы, которые не могут быть частью числа, в случае, когда задана опция 'N' (только числа); IDE, IDE Designer: ряд улучшений и исправлений; Исправления: IDE/Designer: загрузка конструктора формы, созданной в режиме мульти-конфигурации; Delphi: генерация CASE, не имеющего ветвей; Delphi: генерация кода для декларации(и инициализации) поля-массива объектов (фиксированного размера);

#### 31.10.2021 - версия 2.0.0
Изменения: Добавлен вариант оператораF OR i ENUM some_method:...; Позволяет использовать методы-перечислители, например, при работе с базами данных: `DB.Open FOR i ENUM DB.Results: tabl1 << DB.CStr("Last_name") .. << DB.CStr("First_name") .. << (Now.Year - DB.CDate("Birth_date").Year).S ; DB.Close` Введен оператор`DONE`, который должен отделять завершающий фрагмент кода в блоке оператора `FOR`, завершающегося оператором`BREAK`или`==>` . Например: `FOR flag IN A[]: CASE flag.Color!=RED? CONTINUE flag; DONE << "first found red flag is " flag.Name #NL BREAK flag;` Введен блочный оператор`SILENT:...;` , для организации блока кода, в котором подавляются предупреждающие сообщения компилятора; Введен механизм контроля типов индексируемых массивов. Переменная или поле (а так же параметр и переменная цикла) при декларации могут получить дополнительный атрибут`INDEXING тип`или `INDEXING (список,типов)` и при использовании далее этой переменной в индексах элементов массивов указанные типы сверяются с типами элементов массивов; Использование переменных без заданного атрибутаINDEXINGвызывает только предупреждение; Если заданные явно атрибуты не соответствуют, это считается ошибкой; Переменные, поля и прочие единицы с атрибутом INDEXINGвсегда могут иметь только краткие имена - на них не распространяется требование иметь не менее 8 символов в имени; Добавлены цепочки сравнений в выражениях(например, a < b < c <=d).Возможны любые допустимые операторы сравнения, они превращаются в попарные сравнения, соединенные знаком && ( логическое "И"); Оператор сравнения <> допускается наравне с!= во всех выражениях (как и в SQL-запросах); Исправления: C#, Delphi(VCL,KOL)/FPC: исправления в прокрутке {Paintbox}; C#: Деструктор объекта при условии обращения к нативным функциям мог вызвать бесконечную рекурсию; C#: ошибка при генерации кода развернутого цикла ( UNROLL); Delphi/FPC: ошибка при присваивании объекта THIS;

#### 22.10.2021 - версия 1.9.8
Изменения: {Localization_str}: добавлена функция Localize_by(text[], prefix), позволяющий выполнить локализацию на основе словаря в переданном массиве text[]; Исправления: Компилятор/оптимизатор: неверная интерпретация функции, присваивающей в первом операторе константы результату как возвращающей только эту константу; {Paint_table}: отрисовка была несколько медленная в случае большого числа колонок (от 100 и более); Delphi/KOL: System_color для'HIGHLIGHT', 'HIGHLIGHT_TEXT'; {Paintbox}: горизонтальная прокрутка программно не работала; Компилятор: Контроль использования в качестве операнда обращения к функции, не возвращающей результат;

#### 13.10.2021 - версия 1.9.7
Исправления: C#/{Label}: Autosize всегда выключался для метки, не только при принудительной установке размера, как задумывалось; {DB}: исправление для вложенных запросов (в условии ... x IN (SELECT...)); C#: array[n TO m] когда m >=array[].Count;

#### 7.10.2021 - версия 1.9.6
Исправления: IDE:при использовании некоторых шрифтов некоторые символы занимали 2 знакоместа (№) что приводило к противоречиям между визуальным положением каретки и реальной позицией в тексте; C#/{Process}: при запуске исполнимого файла параметр Visible=FALSE не работал, приложение запускалось видимым; {DB}: в SQL запросах запятая после списка FROM-JOIN-JOIN... не обязательна теперь (что позволяет более не добавлять условия и прочие части без необходимости); Delphi/{Date_picker}.Text; Delphi/{DB}.VBool;

#### 2.10.2021 - версия 1.9.5
Исправления: {Paint_table}: Изменение размера колонок мышью не работало, если в результате прокрутки верхняя строка была сдвинута выше видимой области; {DB}.Remove_after для последней порции SQL-запроса отрабатывает без необходимости добавлять фейковый код (вроде AND 1=1) и предварять его дополнительным блочным комментарием; В SQL запросах SELECT, если список выбираемых полей размещался сразу за SELECT [TOP(n), ][DISTINCT, ], не учитывались возможные вложенные скобки в списке выбора - теперь учитываются; IDE/Designer:в случае нескольких "колонок", выровненных по остатку клиентской области (когда дополнительные колонки отображаются справа от формы), не устанавливался достаточный диапазон прокрутки, не позволяя просматривать дополнительные центральные колонки без увеличения размера окна дизайнера; C#, Delphi/VCL+FPC + {Paint_table}: исправлена горизонтальная прокрутка (не устанавливался достаточный диапазон);

#### 30.09.2021 - версия 1.9.4
Изменения: В SQL-запросах SELECT допускается помещать список запрашиваемых полей перед FROM,что приближает синтаксис к классическому SQL; В выражениях SQL после`BETWEEN`x допускается поставить запятую перед AND; В SQL-запросах в списке JOIN-операторов и в списке запрашиваемых полей так же допускается вставлять блочные комментарии вида ------- 'текст', которые так же могут использоваться для удаления части текста запроса вызовом метода {DB}.Remove_after (например, после проверки некоторых дополнительных условий); При компиляции SQL-запроса`SELECT` поля, перечисленные в секцииORDER BY, проверяются на недоопределенность (MS SQL, например, считает ошибочным указание имени поля, присутствующего в нескольких задействованных таблицах, даже если в самом списке выбираемых полей яво указано только одно такое поле). Для разрешения недоопределенности следует выбрать поле из конкретной таблицы, переименовать его используя конструкцию`x AS y`, и в списке `ORDER BY`использовать синоним y. Исправления: {Form}.column_hidden: при наличии нескольких "колонок", выровненных по клиенту, только первая могла быть отображена;

#### 28.09.2021 - версия 1.9.3
Исправления: {Paint_table}: изменение размера колонок мышью не работало правильно в случае наличия горизонтальной прокрутки вконтроле; {Paint_table}: изменение размера колонки не работало, если перед этим колонка имела ширину 0; {Paint_table}: слишком длинные заголовки колонок наезжали друг на друга; {DB}: проблемы с кодировкой национальных символов в тексте запроса (устранено записью строковых констант в запросах в форме N'текст'); {DB}.Remove_after - удалялось только одно вхождение согласно указанной метки - последнее;

#### 26.09.2021 - версия 1.9.2
Изменения: В SQL-запросах (INSERT/UPDATE) разрешено в секции присваивания значений полям новой записи (так же, как и в секции условий) разделять присваивания комментариями вида ---------- 'текст', а затем стирать их функцией {DB}.Remove_after; Delphi/VCL, FPC+ {DB}: допускается присваивание/сравнение целочисленных полей и булевских переменных/значений (значение 0 в поле рассматривается как FALSE, все прочие - TRUE); Delphi/VCL:свойство Delphi TForm.Autoscroll теперь отключено по умолчаию (для включения в настройках проекта добавить символ/$DEFINE=AUTOSCROLL_FORMS); Исправления: C#, Delphi/VCL, Delphi/KOL + {Date_picker}.Date, .Set_date; Delphi/VCL: улучшено автоматическое определение размера кнопок при установке значения заголовка (размер текста вычисляется для полужирного шрифта);

#### 23.09.2021 - версия 1.9.1
Исправления: C#/{File}.Exists: проверка наличия несуществующего файла могла работать долго в случае большого числа файлов в директории; C#/{Process}: если запускается исполнимый файл ( .exe, .cmd, .bat), то переменные окружения берутся текущие (системные), а не унаследованные в запускающем процессе; {Complex}.Cpow; Обновления: Приложение Color Commander 0.41;

#### 21.09.2021 - версия 1.9.0
Изменения: IDE/Designer: добавлены поля для формы, увеличена скорость прокрутки; IDE: изменено отображение номера текущей строки; C#/{Label}, {Button}: если принудительно изменялась ширина контрола, то автоматическое изменение размера для этого контрола отменяется;

#### 16.09.2021 - версия 1.8.9c
Исправления: IDE/Designer: при добавлении контрола класса {Date_picker} ошибочно использовалось имя класса {Datepicker} (без подчеркивания); C#: после отображения формы добавлено принудительное обращение к методуForm_resize, чтобы обеспечить корректную разметку контролов в колонках;

#### 15.09.2021 - версия 1.8.9b
Исправления: {Memory_stream}.Write_byte неправильно работал;

#### 14.09.2021 - версия 1.8.9a
Исправления: При вызове перегруженных функций, компилятор иногда не находил требуемую версию функции для вызова.

#### 13.09.2021 - версия 1.8.9
Исправления: При оптимизации кода, содержащего обращения к перегруженным функциям, формировался пустой код для таких функций(уже была попытка исправления, но, как выяснилось - не 100%); {Form}: более широкий отступ возвращен для случаев, когда на форме все-таки есть колонки, выровненные 'LEFT' / 'RIGHT' (была ошибка в коде); Операция x << y, когда слева объект (и реализуется обращение к его методу Write): не проверялось соответствие типов добавляемого значения и параметра Write;

#### 09.09.2021 - версия 1.8.8
Изменения: {Form}: для формы, содержащей только вертикально расположенные "колонки", левый и правый отступы уменьшены до 2 пт; в случае только горизонтальных колонок обнуляются вертикальные отступы. В случае единственной колонки с выравниванием по клиенту работают оба правила. Исправления: Delphi/KOL:исправлен порядок параметров в функции Set_file_time_age (изменялось не время последней записи,а время последнего обращения к файлу); Android: некоторые исправления(передача динамического массива на место фиксированного, компиляция с классом {Process});

#### 27.08.2021 - версия 1.8.7
Исправления: При оптимизации кода могли ошибочно удаляться функции, помеченные модификатором CALLBACK; При оптимизации кода, содержащего обращения к перегруженным функциям, формировался пустой код для таких функций;

#### 22.07.2021 - версия 1.8.6
Изменения: Добавлена опция/$NO_SIDE_EFFECTS, позволяющая избежать проверки на побочные эффекты в выражениях. Не следует использовать в проектах, которые могут компилироваться вC/C++; Исправления: Восстановлена (частично - для невизуальных проектов) работоспособность интерпретатора (на C#);

#### 21.07.2021 - версия 1.8.5
Изменения: Delphi: добавлена совместимость с Delphi3 (к сожалению,во многих случаях компилятор выдает внутреннюю ошибку, - но иногда при этом все же формируется рабочая программа); Delphi: добавлена опция/$DELPHI3 для форсирования совместимости с соответствующей версией компилятора ; Delphi: добавлена возможность через системную переменную окружения FORCE_DELPHI задавать совместимость с соответствующими версиями компиляторов (значения 3 или 5); Исправления: Delphi: ряд исправлений в связи с последними изменениями в компиляторе;

#### 29.06.2021 - версия 1.8.4
Изменения: Delphi: добавлена совместимость с Delphi6; Delphi: добавлена совместимость с Delphi5 (для компиляции в KOL может требоваться добавлять параметр $DEFINE=PNG_NOMMX, и $DELPHI5); Разрешено в операции`variable=DB, BY TABLE table`использовать в качестве левого операнда кроме структур так же и объекты классов, имеющие только поля, согласованные с таблицей из базы; Добавлена возможность не создавая промежуточную переменную выполнять добавление записи из запроса к базе данных сразу в массив структур или объектов: `array[] << DB, BY TABLE table` Исправления: C#/Delphi(VCL)/FPC + {DB}: исправлено получение полей типа даты-времени из базы данных; Delphi/KOL + {Form}.Set_default_font: исправлено; Delphi/KOL + {AL4_form}: исправлено Get_form_column_controls_layout;

#### 16.06.2021 - версия 1.8.3
Исправления: Операция получения записи из базы данных оператором вида `{type} struct << DB, BY TABLE type` - при использовании`.Dismiss`в цикле, уничтожался объект, хранящий содержимое структуры, и в дальнейшем, работа шла с NONE-объектом;Исправлено добавлением оператора создания пустого экземпляра структуры переменной; Delphi/FPC: CASE по строчному выражению: некорректно проверялся случай символа #0, как 0-го символа пустой строки; Более тщательная проверка соответствия типов при передаче массива в качестве параметра;

#### 26.05.2021 - версия 1.8.2
Изменения: Разрешено использовать цепочки x.y.z[i].w в качестве операндов в фигурных скобках в SQL-выражениях; Разрешено использовать в качестве левого операнда оператора << результат функции (если функция возвращает объект класса, имеющего метод Write, принимающий строку); Добавлено "свойство" {Paint_table}.Resize_columns=TRUE(разрешается изменение размеров колонок мышью/пальцем, обеспечивается такое изменение размеров); Разрешено передавать динамический массив, если функция принимает фиксированный массив (но с выдачей предупреждения); Исправления: Более тщательная проверка факта передачи вкачестве первого параметра фиксированного массива, когда функция принимает динамический массив; C#: CASE по строчному выражению: некорректно проверялся случай символа #0, как 0-го символа пустой строки; FPC/Linux: доступ к элементам массива с атрибутом CLAMP; C#: исправлена неожиданная проблема с передачей символов '^' в аргументах командной строки (при вызове через Process.Start());Нигде не документировано, что символ '^' требуется удваивать, чтобы он был принят запускаемой программой; Delphi/FPC(Windows) - визуальные приложения: исправлен баг с обработкой сообщений при вызове метода {Form}.Process (приводивший к Access violation во время выполнения); gcc: реализован консольный небуферизованный ввод {Console}.Get_char;

#### 19.05.2021 - 1.8.1
Изменения: Разрешены комментарии вида -- 'комментарий' внутри декларации перечисления; Исправления: {Paint_tree} исправлен (отрисовка узлов); {DB}/SQL: поиск полей в таблице не всегда был регистро-независимым в SQL-выражениях;

#### 13.05.2021 - версия 1.8.0
Исправления: IDE AL4/C#: При открытии пустого файла (и при первом запуске) происходило исключение при попытке нарисовать прямоугольник с бесконечной высотой; apps\Clock: не сохранялось состояние на новом месте (на PC, на котором раньше программа не запускалась) ; не восстанавливался язык после перезапуска; C#: событие {Form}.shown не вызывалось повторно после скрытия формы; C#: {Form}.Set_client_size добавлял ширину и высоту (было временное решение какой-то текущей проблемы, не было удалено); Delphi/VCL: {Form}.Set_no_border не позволяла изменять размеры окна- исправлено; Free Pascal: Str.Compare - иногда строки с одинаковым значением считал не равными;

#### 2.05.2021 - версия 1.7.9
Изменения: {Form}: контрол, расширяющийся вниз/вправо,более не обязан быть последним в колонке; {DB}/{MSSQL}/FPC: обеспечивается правильная работа с кодировками Windows в БД MSSQL при работе из32- битного приложения, скомпилированного для платформы FPC/Windows (указывается в качестве первого пути поиска Library\DB\FPC, до Library\DB, в результате подключается первым класс {MSSQL_base} в варианте с переопределенными методами для конверсии входных и выходных строк); (Нет необходимости делать так при работе с базамиMS SQL из ОС Linux, т.к. драйверunixodbc выполняет конвертацию строк автоматически); {DB}/SQL: в операции`struc << Db, BY TABLE tab`в качестве структуры-приемника разрешается использовать любую структуру, все поля которой соответствуют каким-либо полям структуры, базовой для таблицы tab (при этом соответствие полей по именам должно быть непротиворечивым); {DB}/SQL: псевдо-функция SQL(...), возвращающая строку, более не содержит внешние скобки; так же, нет необходимости заключать обращение к этой псевдо-функции в скобки в случае, когда она используется в качестве правой части операции X IN Y в sql-выражении; {Paint_tree}: Оптимизированы отрисовка и скроллирование; Исправления: {DB}/Pascal(KOL,VCL,FPC): ошибки позиционирования первой записи про открытии запроса {DB}.Open;

#### 27.04.2021 - версия 1.7.8
Изменения: {DB}/TABLE: при компиляции SQL-запросов, поиск имен полей в структуре, на которой основана таблица, выполняется без учета регистра букв; {DB}/TABLE: разрешено использовать в базовой структуре таблицы поля типа перечислений (в БД им должны соответствовать значения типа INT); {DB}/TABLE: добавлена возможность прочитать всю текущую запись из базы данных оператором << в форме`rec << Db, BY TABLE tab` (гдеrec- переменная типа структуры, базовой для таблицыtab, Db- переменная типа {DB}, или унаследованного, tab - имя таблицы, заявленного декларацией`TABLE имя: {базовая_структура`}); Фактически, в код вставляется последовательность операторов rec.fieldN=Db.Cnnn("name") для каждого поля структуры(где ccc - это str, int, real, date, bool - в зависимости от типа поля); {DB}/SQL: в запросах SQL допускаются символы ',' перед любым AND/ OR в условиях; {DB}/SQL: добавлена возможность использовать вложенные запросы SELECTв условиях, в правой части операций IN/ NOT IN, например: `...WHERE x IN (SELECT FROM t, (fld), WHERE id={n})` {DB}/SQL: добавлено автоматическое преобразование в строку подвыражений вида SQL(...) для базовых типов данных; Исправления: {DB}/Table/SQL: в выражениях-запросах могли не работать операции AND/OR; {DB}/SQL: Операция <<в операторах вида Db << SELECT... не могла использоваться, если Db был параметром функции(считался доступным только для чтения);

#### 23.04.2021 - версия 1.7.7
Изменения: {Separator}: добавлен простой и эффективный контроль запрета выдвигания сплиттера за пределы формы; {Form}: добавлены варианты расположения контролов в колонке:'CONTROLS_TOP_TO_BOTTOM', 'CONTROLS_VERTICAL_2|_COLUMNS' ( предназначены в том числе для работы в горизонтальных колонках); FPC/{DB}: соединение с БД MS SQL проверено и работает из Linux (через unixodbc); Исправления: FPC/Linux: при вызове программы из своего кода все параметры возвращались как один параметр (не работали классические функции Pascal/Delphi: ParamStr(n) и ParamCount), исправлено собственным парсером строки параметров;

#### 19.04.2021 - версия 1.7.6
Изменения: Добавлена функция: {Form}.Set_default_font|_for_all_forms_created_later({Screen}, STR Face, REAL Size);(вызывать сразу после создания {Screen}, в функции Main); Исправления: Визуальная библиотека+ IDE/Designer: ввиду того, что в некоторых платформах (KOL) используется "естественное" выравнивание колонок, изменено направление выстраивания колонок в дизайнере и в {Form} с тем, чтобы оно совпадало. Отличие касается только колонок, выровненных 'RIGHT' и 'BOTTOM' и заметно, только если таких колонок несколько; Delphi/VCL:при изменении размеров {Paintbox}+ контролов размер его контрола-полотна иногда не изменялся; Delphi/VCL: Событие {Form}.shown вызывалось так же и при сокрытии формы; Delphi/VCL, KOL: при закрытии модального диалога "крестиком", родительская форма не могла быть закрыта методом Close, так как продолжала считать вызванный диалог по-прежнему активным;

#### 18.04.2021 - версия 1.7.5
Изменения: Визуальная библиотека: реализована возможность добавлять колонку-сплиттер для изменения размеров соседних колонок (в зависимости от выравнивания 'TOP'/'BOTTOM' или 'LEFT'/'RIGHT' меняется размер соседней колонки с подобным выравниванием; В случае использования IDE/Designer'а достаточно выставить флажок "Разделитель колонок", при ручном кодировании в колонку добавляется контрол {Separator} (доработанный); Исправления: Компилятор иногда использовал для внутренних целей временные переменные temp1, temp2, .... В результате, при использовании в коде таких имен возникал конфликт. C#, Delphi/FPC: исправлена генерация кода для случая присваивания нового объекта псевдо-переменной NONE (и есть присваивания значений полям объекта); Delphi/VCL, Free Pascal/Windows, Linux: исправлено выставление значка курсора для {Paintbox}+; Delphi/KOL: с опцией/$SMALLER_CODE (и /$SMALLEST_CODE) визуальные приложения не могли работать;

#### 16.04.2021 - версия 1.7.4
Изменения: IDEAL4/Designer: реализована возможность не задавать контролу имя (например, метке). В этом случае генерируется в конструкторе присваивание NONE= New_... (например); IDEAL4/Instant (немедленный код): добавлен шаблон для TABLE, поправлен шаблон для STRUCTURE; Исправления: C#: {Long_operation} - исправлена ошибка преобразования типов в нативном коде; IDEAL4/Designer: исправлено позиционирование "колонок" с выравниванием 'TOP'/'BOTTOM' при наличии в форме вложенных колонок с похожим выравниванием; IDE/Designer: исправлено обновление декларации компонента на форме при ручном редактировании его имени в дизайнере; Оптимизация инлайн-вставкой: вызываемые функции из копируемых выражений не отражались во внутренних массивов ссылок на вызванные функции, что могло приводить к их удалению, при наличии только таких вызовов, которые были заинлайнены. В итоге финальный компилятор обнаруживал обращение к несуществующей более функции;

#### 15.04.2021 - версия 1.7.3
Изменения: Улучшено использование сахара (A.x, .y+1) в одном выражении: теперь пристыковываемое поле может быть частью выражения, а не только отдельным выражением; К атрибутам класса [SYNTAX='PASCAL', LANGUAGE="EN"] добавлен [ENCODING='ASCII'] - позволяет загружать и использовать старые модули на языке Pascal без конвертирования в UTF8 вручную; В любой конкатенации строк в тестовых функциях TEST, и вообще всегда, если конкатенация начинается со строковой константы и не содержит других операций на том же уровне (заключена в скобки), так же разрешено неявное преобразование типов данных в строку, если для типа данных определена функция S|trв области видимости, а не только для операторов вывода в консоль <<; Добавлен класс {Long_int}, имплементирующий структуру {long|_integer}вместе с базовыми операторами арифметики и необходимыми функциями, для возмещения отсутствующего в языке специального типа данных "длинное целое"; Исправления: {Form}.new_column: при наличии колонки без "имени" (Alias==""), каждая создаваемая колонка становилась "вложенной" в эту колонку, что могло привести к неожиданному внешнему виду формы; Linux: вызов Test_reports (требовал в имени исполняемого файла расширения.exe); Delphi/VCL: для {Form} в некоторых случаях могло не выполняться переразмещение контролов; Gcc: операция побитового сдвига ShiftR работала неверно на отрицательных числах (вместо логичексого сдвига выполнялся арифметический);

#### 11.04.2021 - версия 1.7.2
Изменения: {Gif} + {Lzw}: ускорено декодирование изображений; Исправления: C#: генерация кода для/$PROFILER; Delphi/FPC: генерация кода для оптимизации UNROLL для циклов FOR;

#### 8.04.2021 - 1.7.1a
Изменения: FPC + STR: дополнительно оптимизирован просмотр строки посимвольно в обратном направлении; Исправления: FPC + оптимизации(INLINE) +внутренний типStr -не инициализировались внедренные из вставленной функции переменные типа STR - исправлено;

#### 7.04.2021 - версия 1.7.1
Изменения: C#: Если система поддерживает высокоточные таймеры и подключен модуль-класс{High_precision_time}, то профайлер для циклов и функций накапливает не просто счетчик выполнения (функций/итераций FOR- циклов/ветвей CASE-операторов), а количество микросекунд (приблизительное), в течение которых они выполнялись; Если класс импортируется с модификаторамиDEBUG иANYWAYодновременно, то это теперь означает, что в режиме отладки класс подключается всегда (даже если оптимизатор против), а в прочих случаях - полностью игнорируется: `IMPORT, DEBUG, ANYWAY: {High_precision_time}.` Free Pascal/UTF8: Добавлен внутренний классStr и существенно изменен генератор кода для FPC(все скалярные строковые локальные переменные, кроме параметров ирезультата функции,и все поля классов и структур заменены на этот класс), тем самым в значительной степени увеличено быстродействие программ при работе со строками (в частности, компилятора на Linux); Исправления: FPC: {Png}.From_file с выключенной опцией BRGABITMAP_CANVAS(Windows/Linux);

#### 4.04.2021 - версия 1.7.0
Изменения: Добавлена функция {System_functions}.Profiler_save_reset, которая сбрасывает накопленные значения счетчиков, и сбрасывает их в 0. Эту функцию можно вызывать программно из своего кода, и анализировать результаты на заданном (своими условиями) участке исполнения, а не только за все время работы приложения; Изменения в языке: добавлена операция сравнения строк LIKE, работающая примерно так же, как в T-SQL: две строки сравниваются без учета регистра букв, при этом вторая строка может содержать шаблонирование с символами '?' ( один любой символ) и '%' (произвольное количество любых символов). Например, RESULT= my_string LIKE "Ab?d%" SQL: добавлена поддержка отношенияLIKEв операторах T-SQL. Например: `Db << SELECTFROMcity, (*), WHERECountryCodeLIKE'U%' Db.Open` Компилятор: CCC (Cache compiled code): не используется, если сохраненные атрибуты компиляции отличаются (/debug/final/op); Обновления: Color Commander(еще ускорен по результатам профилирования, теперь значительно быстрее копирует файлы,исправлены версии Delphi/Free Pascal - просто зависали при попытке копирования); Исправления: Delphi/Free Pascal: исправлена работа с потоками (идея объявить All_threads используя threadvar сколько-то версий назад была не очень удачной);

#### 2.04.2021 - версия 1.6.9
Изменения: C#/Delphi/FPC/KOL: Добавлена поддержка MS SQL ( класс{MSSQL}) для работы из Windows -- для Delphi/KOL и FPC - только через ODBC/ Direct-ODBC, для C# и Delphi/VCL так же есть возможность работать через Ado (Ole DB); C#: добавлен параметр компиляции/$x64 (создавать 64-битное приложение); C#/Delphi/FPC: Добавлена поддержка PostgreSQL ( класс{Postgre}) - через Odbc (DSN или прямое указание сервера/ базы). На данный момент - только для Windows; C#/Delphi/FPC: Добавлена поддержка mysql (класс {MySQL}) - так же через Odbc - на данный момент так же для Windows; Обновления: Color Commander(ускорен по результатам профилирования, теперь значительно быстрее копирует файлы); Tools\Visial_profiler_analyzer(ускорен по результатам работы - Refresh для больших массивов выполнялся долго==>для {Listbox}.Set_text добавлено "замораживание" формы);

#### 31.03.2021 - версия 1.6.8
Изменения: Добавлена маленькая консольная утилита: Tools\Profiler_report, которая сортирует результаты работы профилировщика (по размерам счетчиков), упрощая выявление проблем; Добавлена визуальная утилита: Tools\Profiler_report\Analyzer, которая показывает исходный набор счетчиков и отсортированный вариант, и автоматически открывает в IDE AL4 нужную строку кода (IDE так же обновлен); {Form}: Добавлена функция Set_autoscroll|_for_all_forms_created_later, по умолчанию авто-прокрутка к формам не добавляется в десктопном окружении(вообще, влияет только на C#- вариант, в других версиях автопрокрутка не поддерживалась, кроме Android, но там свои особенности); Исправления: Delphi: генерация большого кода с опцией /$PROFILER=ALL могла вызывать сообщение компилятора Delphiоб ошибке (слишком много локальных констант в процедуре); Обновления: IDE AL4: Ускорен по результатам работы профилировщика (прорисовка и прокрутка);

#### 28.03.2021 - версия 1.6.7
Изменения: C#/Delphi/FPC:Добавлена опция`/$PROFILER`- по окончании работы в файл profiler_data.txt сбрасываются значения всех счетчиков CNT_, сгруппированные по классам;Опция может иметь вид/$PROFILER=nnn где nnn одно из значений FUNCTIONS, COMMENTS, LOOPS, BRANCHES, ALL (учитывается только первая буква);

#### 26.03.2021 - версия 1.6.6
Изменения: Важно:Удален оператор`FOREVER`. Вместо него следует использовать `FOR, INFINITE: code;` Работает точно так же, как до этого`FOREVER` : нельзя использовать`CONTINUE`/ `BREAK`, выход только оператором`==>` или в случае аварии; Важно: Для встроенных функции RotateL || Rotate_left и RotateR || Rotate_right изменилось назначение параметров: теперь второй параметр -это количество младших разрядов,задействованных в операции (ранее операция должна была выполняться на том числе разрядов, которое соответствовало разрядности целого числа в целевой платформе).И сдвиг всегда выполняется на 1 разряд. Исправления: Gcc: компиляция проектов(не-визуальных) в c++ с использованием g++ восстановлена, по крайнеймере, в Windows (вместе с возможностью открытия результирующих проектов в MS Visual Studio 2010+ и компиляции/отладки в нем);

#### 24.03.2021 - версия 1.6.5
Изменения: {Localize_str}: автоматическое удаление трансляций, которые более не используются (отсутствуют при сохранении словаря на опорном языке). Удаление происходит только если есть изменения в базовом словаре. Не используемые секции не удаляются, лишь отмечается дата/время, когда последний раз было обнаружено, что они не использовались (в различных конфигурациях приложения для различных платформ могут использоваться некоторые отличающиеся/ не присутствующие в других конфигурациях классы, которым соответствуют эти секции в файле трансляции.lng). Исправления: C#: работа{Long_operation}(не работало); Delphi: не генерировался try-finally для оператора PUSH, блок которого содержит==> (выход из функции)(это было временное решение проблем с компиляцией в Delphi/FPC, пришло время исправить); Так же решена проблема для CONTINUE/ BREAK, пересекающего один или несколько границ блоков PUSH; Обновления: IDE AL4: Designer: исправлено восстановление свойства .Title ({Dialog_file}, {Dialog_dir}); Designer: исправлена генерация кода для длинных строковых значений x="строка " (например, Filter для диалога файлов): строка не разбивалась на части; Diagram draw: более естественное изменение размера для линии, вместе с изображением маркеров выделения; после авто-загрузки последнего файла в диалоге сохранения не показывалось имя файла, появлялось удвоенное расширение; теперь при сохранении новой версии вариант AUTOSAVE удаляется;

#### 22.03.2021 - версия 1.6.4
Изменения: Синтаксический сахар: если в одном операторе последовательно идут обращения к полям одного и того же базового объекта, то последующее обращение может иметь вид.Поле, без всех предшествующих символов. Например:`m= mouse.Offset(-Paintbox.Bounds.Loc.X, -.Y);` Обновления: IDE AL4: Добавлена индикация позиций выделенных слов в тексте, цветовыми маркерами справа от вертикальной разграничительной линии - вместе с прямоугольником, отображающим положение текущей страницы в тексте; Прочие улучшения и небольшие исправления в реализации режима Instant code (" Быстрый код");

#### 21.03.2021 - версия 1.6.3
Исправления: Delphi: генерация кода обращения к элементу массива по индексу, который сам является элементом индекса `A=B[C[i]]`; Компиляция встроенных функций с капитализированными именами (CLEAR, INDEX и т.п.) Обновления: IDE AL4: добавлен режим ввода кода "Быстрый код" со вставкой готового шаблона при вводе ключевого слова и пробела,например: `CODE $condition? $statement ELSE $statement;` (при этом элементы, начинающиеся символом "$" самоуничтожаются при начале редактирования текста, по стрелкам влево/вправо выполняется быстрый переход между ними, и есть некоторые дополнительные действия, например, для CODE в конце первой строки кнопка Delete стирает нетронутую ветку ELSE); Режим легко выключается (Ctrl-T) и включается (Ctrl-I); Исправлен зацикленный поиск, поиск по всем открытым файлам, и учет длинных комментариев при поиске;

#### 18.03.2021 - версия 1.6.2
Исправления: Некоторые дополнительные исправления по использованию $CCC; C#: генерация кода обращения к элементу массива по индексу, который сам является элементом индекса `A=B[C[i]]`; Обновления: IDE AL4: добавлено индексирование классов в заданных папках(Файл |Индекс классов), выдача подсказок по параметрам функций по незагруженным в IDE классам; добавлено отслеживание изменений в текущей строке, с предложением (отображается в нижней части окна редактора) по CTRL+R автоматически подставить параметры диалога замены, соответствующие выполненным изменениям; дублирование букмарков в верхней панели для отображения того, какие назначены, с возможностью перехода по клику мышью; добавлена возможность изменять размер нижней панели с подсказками по параметрам функции; Дизайнер формы: добавлена возможность перетаскивать выделенные контролы на пустую колонку;

#### 15.03.2021 - версия 1.6.1
Исправления: Некоторые исправления по использованию $CCC по результатам работы (требовалось сохранение/загрузка некоторых дополнительных опций,установка некоторых дополнительных свойств переменных и констант и т.п.) ; FPC: некоторые исправления по символам BGRABITMAP, BGRABITMAP_CANVAS; Обновления: IDE AL4: добавлены линии, соединяющие ветви операторов CASE; улучшена прорисовка линий вложенности для pas-файлов; Color commander: добавлена очередь (2х) активных процессов (дополнительные кнопки в правой верхней части свободной от списка файлов зоне). Так же, исправлена работа с запароленными архивами rar (с запароленными именами файлов);

#### 6.03.2021 - версия 1.6.0
Изменения: FPC: Добавлен символ условной компиляции BGRABITMAP_CANVAS. Без него, в присутствии символа BGRABITMAP, эта библиотека используется только для загрузки изображений, а отрисовка происходит с обычными растровыми объектами TBitmap (быстрее, по крайней мере, в Windows); AL-IV: допускается не указывать модификатор NEW для функции, если новый объект, присваиваемый переменной RESULT, при этом имеет владельца (указан в OWNED BY), или добавлен в массив (конструкция, >> A[]); Первичный компилятор поддерживает минимальный цветной вывод в консоль, так что компиляция компилятора для C# (CSharpBuild) теперь идет в цвете ; C#, Delphi/FPC: по умолчанию, используетсяновая возможность(/$CCC=yes):результат компиляции классов сохраняется в файлах с расширением .ccc(Cache Compiled Code), и в случае, если этот файл не изменялся, и не изменялись файлы, от которых он зависит, то вместо перекомпиляции, загружается из ccc-файла, что во многих случаях ускоряет повторную комиляцию. Другие варианты опции: $CCC=no (не использовать), $CCC=save (только сохранять ccc-файлы, не загружать), $CCC=load (только загружать, не создавать новые). Опция новая, возможны проблемы (в этом случае следует добавлять опцию/$CCC=no). Исправления: Delphi/FPC: задание более одного символа условной компиляции параметров/$DEFIUNE=x,y (через запятую);

#### 16.02.2021 - версия 1.5.7a
Изменения: FPC: Протестирована новая версия fpc 3.2.0 + Lazarus 2.0.10 + BGRAbitmap 11.3.1 (в том числе на Linux-x64) - обнаружена полная совместимость наработанного кода (проверялись приложения выборочно). Требуется только правильно прописать системные переменные $LAZARUS_HOME, $BGRABITMAP_UNITS - в Linux, и правильный путь к fpc в переменной Path в Windows (а так же скорректировать опции построения компилятора _FPC_build_linux_Lazarus.options, указав правильные пути к FPC в Linux); Исправления: FPC: устранена проблема прокрутки колесом мыши;

#### 16.02.2021 - версия 1.5.7
Изменения: IDE AL4/ Designer + {Form}: добавлена возможность генерировать и настраивать визуально различные варианты дизайна формы с одними и теми же (или немного отличающимися) наборами контролов, но с различными конфигурациями и параметрами при создании, в зависимости от переопределяемого метода-события variant_layout; Исправления: C#: после вызова меню требовалось вручную вызывать Invalidate для всех{Paintbox}-плюс - контролов, которые были (или могли быть) накрыты выпавшим меню - теперь обновляется автоматически;

#### 8.02.2021 - версия 1.5.6
Изменения: Компилятор:Запрещено в левой части присваивания использовать в качестве имени локальной переменной вариант, совпадающий с именем поля класса (например, если локальная переменная имеет имена w|hat_found,и есть поле what_found|_in_text, то нельзя присваивать значение, используя в левой части оператора имя what_found, но w - можно). Тип переменной при этом значения не имеет; IDE:разрешено использовать Ctrl+ЛКМ для переходов по словам (меткам, типам, именам переменных и т.д.) - эквивалентно Ctrl+Enter. Так же: другие улучшения в интерфейсе; Color Commander:обновлен до версии 0.33; {Form}:уточнены правила работы с "вложенными" колонками: разрешается иметь такие колонки с выравниванием TOP/LEFT/RIGHT/BOTTOM относительно "родительской" колонки, выравнивание которой не должно быть параллельным дочерней; так же: при наличии нескольких колонок, выровненных по остатку клиентской части формы, отображается только одна такая колонка (первая видимая, после соответствующего вызова события column_hidden); IDE/Designer: изменения в отображении колонок и вычислении их размеров во время настройки формы; Учтены изменения в правилах работы с вложенными колонками, вторичные колонки, выровненные по клиенту, отображаются справа в виде ленты; Добавлена штриховка для контролов, которые могут быть скрыты/ запрещены при выполнении ; Добавлены режимы отображения: порядок создания + Alias для колонок, для контролов,которые могут быть скрыты/недоступны, добавлена штриховка; Исправления: IDE/Designer: {Tray}- исправлена генерация кода. Последний параметр теперь - это выражение из поля значения, здесь можно просто сослаться на метод, возвращающий путь к файлу иконки; IDE/Designer:распознавание вызоваnew_column исправлено (не работало для случая, когда код вызова занимал несколько строк); Delphi/VCL:порядок генерации событияmouse double click изменен сmouse down - up - double-click - down - up наmouse down - up - down - double-click - up;

#### 28.01.2021 - версия 1.5.5
Изменения: Delphi:Добавлена новая опция`/$SCLASS` ==`/$STRUCTUREASCLASS`(все структуры, даже простые, реализуются как классы, вместо простых структур RECORD)- необходима как техническая, для реализации интерпретатора; Delphi:Добавлена опция`/$RTTIONLY={ Класс1},{Класс2},...`позволяющая немного(до 20Кб) сократить размер приложения за счет того, что RTTI будет генерироваться только для указанных классов; IDE AL4/Designer:добавлена автоматическая генерация кода`CASE sender_alias? [...]:...;` в обработчиках событий, при создании событий и при переходе на обработчики событий через меню формы дизайнера. Добавляются "метки" (Alias) только тех "контролов", которые соответствуют обработчику (например, событие paint соответствует контролам класса{Paintbox} и {Paint_lines}); IDE AL4/Designer:двойной клик по контролу переходит не просто на первое событие, а по циклу перебирает между всеми событиями, связанными с ним (его меткой - Alias) Оператор вывода в консоль (<<):для всех выражений в конкатенируемой строке, не являющихся строками, компилятор автоматически пытается найти и применить функцию Str из области видимости (или системную). Т.е. теперь можно написать: `DEBUG"A="A#NL;` и это тоже будет корректно откомпилировано, несмотря на отсутствие ':', '<<' и преобразования в строку как в "правильном варианте: `DEBUG: << "A=" A.S #NL;` {Form}:для колонок, выровненных 'TOP'/'BOTTOM' добавлено "свойство" `{controls_layout}: 'CONTROLS_LEFT', 'CONTROLS_RIGHT', 'CONTROLS_CENTER', 'CONTROLS_JUSTIFY', 'CONTROLS_LEFT_LAST_RIGHT'` ;

#### 24.01.2021 - версия 1.5.4
Изменения: Color Commander обновлен до версии0.31 (добавлен предпросмотр верхнего уровня содержимого архивов, улучшена работа в Linux, используется преобразование цветов в HSL для лучшей цветопередачи в темной цветовой теме); {Form}:события key_down/ key_up теперь срабатывают только один раз: если в фокусе нет конкретного контрола, то sender==NONE, sender_alias =="" (отправитель - сама форма); Предыдущий вариант, когда одно нажатие обрабатывалось сначала от имени формы, а затем - от контрола в фокусе (если такой был), приводило к путанице, главное - и работало слишком по-разному для разных платформ; {Paint_table}--> {Form}.Get_info: вместо установки Current_line, устанавливается поле .Drawing.Item перед вызовом события для получения элементов в виртуальной таблице (Set_current_line приводит к многочисленным каскадным вызовам событий, и в некоторых случаях к сильному мельтешению изображения на экране); {Form}:в колонках,выровненных 'TOP'/'BOTTOM', если последний элемент имеет флажок Anchor_bottom|_right, то они автоматически расширяются вправо до правого края колонки. {Form}:перемещение и изменение размера формы не приводит (и не должно) к вызову Any_change: местоположение формы на экране вряд ли во многих случаях должны приводить к изменению состояний контролов, таких как Checked, Text, Hidden и пр. Для случаев, когда это все-таки требуется, есть возможность вызвать Any_change принудительно(но лучше по таймеру отложить, и не делать эту работу прямо в {Form}.resize); Исправления: Компиляция вызова перегруженных функций: в случае, когда перегруженные функции(имеющие параметры с различными типами, например {INT, REAL, {complex}}) не отличаются по типу вызова первого параметра, решение об использовании конкретной версии перегрузки откладывается до момента, когда становится известен тип прочих параметров (иначе возникала ошибка компиляции). В случае отличных типов первого параметра, сразу выбирается нужная версия перегрузки;

#### 17.01.2021 - версия 1.5.3
Изменения: Color Commander обновлен до версии0.30 (добавлен поиск файлов, предпросмотр изображений популярных форматов, текстовых файлов- с возможность выделения текста/копирования в буфер, дерево директории в виде цветных блоков, с размерами); Delphi: опция $INCREMENTAL отменена на время (ее поддержка сложна, при том что она решает очень узкий класс задач, которая я надеюсь решить несколько позже более универсальным способом, через мультиплатформенный интерпретатор AL-IN|terpreter); AL-IV: если поле имеет модификаторыINIT иREADодновременно, то допускается создавать объект с помощью стандартного конструктора `object={Type}(...)` , при этом требуется инициализировать такие поля (но в дальнейшем коде их значение изменить нельзя, кроме как в родственных и дружественных классах); Исправления: IDE/Designer: исправлен ввод текста в многострочном поле (переустановка позиции курсора в первую строку) ; FPC/{Form}: во внутреннем событии Form_shownтак же вызывается Form_resize (иначе события`resize` не отрабатывают до первого изменения размеров пользователем); AL-IV: вызов перегруженных функций для первого параметра - структуры в префиксной форме (`A.S` , где A - структура, например, `{rect}` );

#### 12.01.2021 - версия 1.5.2
Изменения: Color Commander обновлен до версии0.29. Исправления: Delphi/VCL: реализовано автоматическое изменение размера для {Checkbox} в случае, когда родительская колонка выровнена 'TOP'/'BOTTOM'; Компилятор/Оптимизации: обнаружены проблемы с оптимизацией типа V5 (слияние локальных переменных) - временно отключена для всех режимов компиляции; Delphi/FPC: MIN_INT откорректирован($8000_0000); FPC: в случае целой константы с31-м установленным разрядом были проблемы с компиляцией; Delphi/KOL: в случае включения символа PAS_ONLY, Extended2Str не работает корректно: в код AL4.pas включен исправленный вариант; Delphi+FPC: устранены (я надеюсь) проблемы нестабильной работы с {Thread}: добавлена защита общих переменных, список объектов All_threads декларирован как threadvar, чтобы уменьшить возможность взаимного влияния потоков различного уровня наследования в дереве порождений потоков друг на друга; Delphi/VCL+KOL: {Text_file}.Load исправлен для случая текстов в кодировке UTF8 (даже если Encoding был установлен в'UTF8', использовался автоматически определенный 'ASCII'); IDE/Designer: исправлена генерация класса {Ex_...} для формы (содержит 4 функции для сохранения/восстановления состояния формы, включая заполненные поля в/из структуру {ex_...}, соответствующую форме, и в заданной ветке конфигурации (объект {Config}). При получении сохраненных данных из конфигурации ранее использовалась теперь запрещенная возможность обновлять поля переданной структуры: исправлено на возврат структуры в качестве результата;

#### 7.01.2021 - версия 1.5.1
Изменения: IDE AL4/Designer: добавлена поддержка`{Paint_tree}`; Опубликовано еще одно приложение, построенное на AL-IV: Color Commander; Сейчас оно работает(в основном) на Windows и Linux и может быть скомпилировано и запущено на Android; Галерея наиболее интересных приложений, построенных с AL-IV, представлена на главной странице AL-IV. Исправления: FPC: Компиляция под Linux (Lazarus/x86) протестирована; FPC/Linux: исправлена функция {Form}.Get_active ( вызывала крах при отсутствии активного контрола); FPC/Linux: {Dialog_dir} + {Tray} -исправлено (ссылка на объект {Dialog_dir} сохранялась в Tag объекта панели с преобразованием указателя в тип Integer, вместо IntPtr; FPC: {Dialog}.Show_modal(parent_form) - исправлено (досадная опечатка в нативном коде приводила к исключению); FPC: исправлен ввод в полях {Edit}, {Memo} ( обслуживание событий клавиатуры путем зануления "обработанных" клавиш приводил к полной невозможности ввода текста, в отличие от Delphi VCL / KOL); FPC/Linux: исправлены {File_path}.Delete_file, Recycle(не работали в Linux);

#### Предыдущая история версий (2020)
`См. здесь`

#### Предыдущая история версий (2019)
`См. здесь`

#### Предыдущая история версий (2018)
`См. здесь`

#### Предыдущая история версий (2016-2017)
`См. здесь`

`` В начало