RUSSIAN
(Русский)
ENGLISH


Эта функция использует куки.
Если браузер не принимает куки,
используется светлая тема.

 

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

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 << SELECT FROM city, (*), WHERE CountryCode LIKE '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

  • Изменения:
     
  • Исправления:
     
    • 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)


См. здесь

 

 


В начало