This function requires cookies.
If the browser does not accept cookies,
the light theme is used always.


AL-IV:    Versions history

June, 16, 2021 - new version: 1.8.3

  • Fixes:
    • Operation of getting a record values from database (in form
      {type} struct << DB, BY TABLE struct_type
      if the .Dismiss was called in a loop then the structure was replaced with the NONE object on the first iteration, and all other values were zeroes; This was fixed assigning first a new structure to the structure variable;
    • Delphi/FPC: CASE on a string expression: symbol appearing as the character with index 0 of an empty string was incorrectly checking;
    • More careful testing of types of array parameters passed;

May, 26, 2021 - new version: 1.8.2

  • Changes:
    • It is allowed to use chains x.y.z[i].w as operands in figure brackets in SQL expressions;
    • It is allowed to use a function result as the left side of the << operation (in cases when it returns an object of a class having Write method accepting a string parameter);
    • {Paint_table}.Resize_columns = TRUE : property added (which allows changing columns size with a mouse/finger);
    • It is allowed to pass a dynamic array in place of a fixed array parameter (but a warning is emitted);
  • Fixes:
    • More careful checking of a fact of passing a fixed array as the first argument when a function accepts a dynamical array on the first place;
    • C#: CASE on a string expression: symbol appearing as the character with index 0 of an empty string was incorrectly checking;
    • FPC/Linux: accessing array items of a CLAMP array;
    • C#: an unpredictable problem with passing the '^' character in command line arguments while calling an application via Process.Start(); This is seems not documented that the '^' should be doubled to be passed for a starting program;
    • Delphi/FPC(Windows) - visual applications: bug fixed with handling messages while calling directly {Form}.Process (led to Access violation at the run time);
    • gcc: console unbuffered input implemented (function {Console}.Get_char);

May, 19, 2021 - version: 1.8.1

  • Changes:
    • It is allowed to use comments -- 'comment' in ENUM declaration (between items);
  • Fixes:
    • {Paint_tree}: drawing nodes fixed;
    • {DB}/SQL: searching fields in tables in SQL expressions was case sensitive in some cases;

May, 13, 2021 - version: 1.8.0

  • Fixes:
    • IDE AL4/C#: When opening an empty file (and on the first run) an exception occurred on trying to draw a page thumb rectangle of an infinitive height;
    • apps\Clock: state did not save on a new PC; the language selected did not applied;
    • C#: {Form}.shown did not call on form re-show after been hidden;
    • C#: {Form}.Set_client_size added some additional width and height to a form (this was a remnant of a solve of some forgotten problem, did not removed earlier);
    • Delphi/VCL: {Form}.Set_no_border did not allow change window size manually - fixed;
    • Free Pascal: Str.Compare sometimes treated identical strings not equal due a bug;

May, 2, 2021 - version: 1.7.9

  • Changes:
    • {Form}: the control extending (anchored) bottom/right now should not be the last control in a column;
    • {DB}/{MSSQL}/FPC: correct working with native MS SQL encodings are provided when an application is compiled for the FPC/Windows platform (the path Library\DB\FPC should be configured before the Library\DB, so the class {MSSQL_base} in the variant with correct strings conversion methods is attached first);
      (It is not necessary to do so to work with MS SQL DB from Linux still the unixodbc driver does such conversions itself);
    • {DB}/SQL: in operation like
      struc << Db, BY TABLE tab
      it is allowed to use as a destination structured variable, any structure which all fields are corresponding to a source structure which is a base for the source table (and all the fields should be corresponding without conflicts);
    • {DB}/SQL: pseudo-function SQL(...) returning a string does not include external parenthesis; also it is not necessary to enclose the SQL(...) function into parenthesis in case when it is used as the right side of the operation X IN Y in a sql-expression;
    • {Paint_tree}: optimized speed (drawing/scrolling);
  • Fixes:
    • {DB}/Pascal(KOL, VCL, FPC): errors positioning to the first record in {DB}.Open;

April, 27, 2021 - version: 1.7.8

  • Changes:
    • {DB}/Table: while compiling SQL queries, searching field names in a structures based on tables now case insensitive;
    • {DB}/TABLE: it is allowed in table base structures to use fields of enumerated data types (in databases, these should correspond to INT value);
    • {DB}/TABLE: it is now possible to read entire current record in a database query using a statement like
      rec << Db, BY TABLE tab
      (where rec - is a variable of a STRUCTURE type, Db - a variable of the data type {DB}, or inherited, and tab - is a table name declared by a
      TABLE name : {base_structure} declaration;
      Actually, such statement is equivalent to insertion of several lines in code like
      rec.fieldN = Db.Cnnn("name") (where nnn in str, int, real, date, bool - depending on a type on a field);
    • {DB}/SQL: in SQL queries it is allowed to use symbols ',' before any AND / OR in WHERE clause;
    • {DB}/SQL: it is allowed to use nested SELECT queries in conditions, at the right side of operations IN / NOT IN, for example:
      ...WHERE x IN (SELECT FROM t, (fld), WHERE id={ n })
    • {DB}/SQL: automatic conversion of subexpressions in SQL(...) added for base data types;
  • Fixes:
    • {DB}/Table/SQL: in expressions used in queries operations AND/OR could not work;
    • {DB}/SQL: Operation << in statements like e.g. Db << SELECT ... could not be used still parameters of functions are read-only always;

April, 23, 2021 - version: 1.7.7

  • Changes:
    • {Separator}: simple and efficient code added to prevent breaking a splitter out of a form;
    • {Forms}: two new variants of controls layouts on a column: 'CONTROLS_TOP_TO_BOTTOM', 'CONTROLS_VERTICAL_2|_COLUMNS' (to work also in horizontal columns);
    • FPC/{DB}: connection with MS SQL from the Linux (via unixodbc) tested: it works;
  • Fixes:
    • FPC/Linux: while calling an application from the AL-IV code, all the parameters returned as a single parameter (classic Pascal/Delphi functions ParamStr(n) and ParamCount did not work), fixed adding parsing that string onto separate parameters;

April, 19, 2021 - version: 1.7.6

  • Changes:
    • The function added: {Form}.Set_default_font|_for_all_forms_created_later({Screen}, STR Face, REAL Size); (call it just after creating of the {Screen} object, in the function Main);
  • Fixes:
    • Visual library + IDE/Designer: still on some target platforms (KOL) the "natural" columns aligning is used, the visual order of columns while aligning (by the {Form} code) to provide the same result on all platforms. This affects only columns aligned 'RIGHT' and 'BOTTOM' (and this actually considerably when there are several such columns on a form);
    • Delphi/VCL: when the size of {Paintbox}+ control changed its inner box (used as drawing canvas) did not change sometimes;
    • Delphi/VCL: The event {Form}.shown called also when the form became hidden;
    • Delphi/VCL, KOL: when a modal dialog was closing by the X on the window, then its parent form could not be closed with the Close method (supposing the child dialog still active);

April, 18, 2021 - version: 1.7.5

  • Changes:
    • Visual library: a capability implemented to use a column as a splitter for other (neighbour) columns (depending on that column alignment 'TOP'/'BOTTOM' or 'LEFT'/'RIGHT' size of a neighbour column with similar alignment is changed by mouse dragging); In case of using IDE/Designer it is enough to set a flag "Is splitter" and in case of manual coding a form constructor it is necessary to add the {Separator} class control on it (reworked);
  • Fixes:
    • The compiler sometimes used for internal purposes variables named temp1, temp2, etc. In result, if such names were used in code this led to a naming conflict;
    • C#, Delphi/FPC: code generating fixed for case of assignment a new object to a pseudo-variable NONE (and there are there assignments to fields of the object created);
    • Delphi/VCL, Free Pascal/Windows, Linux: setting the mouse cursor shape for a {Paintbox}+ control fixed;
    • Delphi/KOL: with options /$SMALLER_CODE, /$SMALLEST_CODE visual applications did not work;

April, 16, 2021 - version: 1.7.4

  • Changes:
    • IDEAL4/Designer: a capability implemented not to assign a name to a control (e.g. to a label). In such case code is generating looking like NONE = New_label(...);
    • IDEAL4/Instant code: a pattern was added for the TABLE declaration, a pattern was improved for the STRUCTURE;
  • Fixes:
    • C# {Long_operation} - an error of type conversion fixed in the native low level code;
    • IDEAL4/Designer: positioning of columns aligned 'TOP'/'BOTTOM' in case when there are nested columns on the form with similar aligning direction;
    • IDE/Designer: updating a component declaration while editing its name in the Designer fixed;
    • Optimizations via inline insertions of functions body: while copying expressions containing functions, references to that functions did not add to internal arrays of references to called functions which could lead to remove such functions in some cases.

April, 15, 2021 - version: 1.7.3

  • Changes:
    • Better using the sugar (A.x, .y+1) in the same expression allowed: a field item can now be an operand of an expression, not only an entire expression;
    • In addition to class attributes [SYNTAX='PASCAL', LANGUAGE="EN"] another new attribute added: [ENCODING='ASCII']. It allows to load and use elder Pascal units without manual converting those to the UTF8;
    • In any string concatenation operations in TEST functions, and also in cases of concatenations only starting from a string constant literal, it is allowed to convert data types implicitly from other types to STR if a function S|tr accepting such data type operand is available in the scope, not only for the << statement;
    • The class {Long_int} was added which implements the structure {long|_integer} together with the basic set of arithmetic operations and necessary functions to compensate an absence of the such type as "long integer" in the AL-IV language;
  • Fixes:
    • {Form}.new_column : if there was a column without an alias on a form, then any other created column became "nested" in the column without alias making form exterior strange suddenly;
    • Linux: calling Test_reports (required en extension .exe in the executable file name);
    • Delphi/VCL: for {Form} in some cases adjustment of controls was not called;
    • Gcc: bitwise shift right operation ShiftR was implemented incorrectly using arithmetic shift instead of logical;

April, 11, 2021 - version: 1.7.2

  • Changes:
    • {Gif} + {Lzw} : decoding gif images speeded up;
  • Fixes:
    • C#: generating code for the /$PROFILER;
    • Delphi/FPC: generating code for unrolling FOR loops (UNROLL modifier);

April, 8, 2021 - version: 1.7.1a

  • Changes:
    • FPC + STR: working with symbols of a string in backward direction also optimized;
  • Fixes:
    • FPC + optimizations (INLINE) + Str inner type - fixed not initializing inlined variables;

April, 7, 2021 - version: 1.7.1

  • Changes:
    • C#: If the system supports high precision timers and the class {High_precision_time} is included, then the profiler for loops, functions and branches collects not just counters but time wasted for those code blocks executions (approximate, certainly);
    • If a class is imported with both modifiers DEBUG and ANYTIME, then this means now that in the debug mode it is included anyway (even if the optimizer does not want it), but in other way it is ignored totally (for the class there it is imported):
      IMPORT, DEBUG, ANYWAY: {High_precision_time} .
    • Free Pascal/UTF8: A special inner class Str added and the code generation was changed a lot for FPC: all the scalar string local variables except function parameters and results as well as all the class and objects fields moved to that Str type. This speeded up working with strings a lot (even the compiler speed under Linux);
  • Fixes:
    • FPC: {Png}.From_file without the BGRABITMAP_CANVAS option on;




April, 4, 2021 - version: 1.7.0

  • Changes:
    • The function {System_functions}.Profiler_save_reset added which saves collected counters nullifying them all. This function can be called from your code and results can be analyzed on a given (by your conditions) portion of executing, not only on results of entire application working time;
    • Changes in the language: the operation LIKE to compare two strings added: it works like in T-SQL but comparing two string operands, without case sensitivity, and allowing special pattern symbols '?' and '%' in the second operand, e.g. RESULT = my_string LIKE "AB?d%"
    • SQL: the relation LIKE was added in T-SQL expressions. E.g.:
      Db << SELECT FROM city, (*), WHERE CountryCode LIKE 'U%'
    • Compiler: CCC (Cache compiled code) is not used if saved attributes of compiling are different (/debug /final /op);
  • Updates:
    • Color Commander (speed up even more on results of the Profiler works, copies files now faster a lot, versions for Delphi/Free Pascal fixed - these just frozen on copy files);
  • Fixes:
    • Delphi/Free Pascal: working with threads fixed (this was not a good idea to use the threadvar declaration for All_threads some versions ago);




April, 2, 2021 - version: 1.6.9

  • Changes:
    • C#/Delphi/FPC/KOL: Support added for MS SQL (class {MSSQL}) to work from Windows -- for Delphi/KOL and FPC - only via ODBC / Direct-ODBC, for C# and Delphi/VCL it is possible also to work via Ado (Ole DB);
    • C#: compiling parameter /$x64 added allowing to create 64 bit applications;
    • C#/Delphi/FPC: Postgre SQL DB support added (the {Postgre} class) which can work either via DSN or with direct selver/database specified. For now, it works for Windows only;
    • C#/Delphi/FPC: mysql databases support added (th {MySQL} class), also via ODBC (and for now, only in Windows);
  • Updates:
    • Color Commander (speed up on results of the Profiler works, copies files now faster a lot);
    • Tools\Visual_profiler_analyzer (speed up on results of working - Refresh command for large data arrays was working too long time ==> for the {Listbox}.Set_text form layout suspending added);



March, 31, 2021 - version: 1.6.8

  • Changes:
    • The small console utility application added: Tools\Profiler_report which sorts the profiler data (by counters values) simplifying problems detection;
    • The visual utility added: Tools\Profiler_report\Analyzer which shows both set of counters grouped by classes and sorted by counter values, and opens the interested line of code in the IDE AL4 (the IDE also updated);
    • {Form}: The function added: Set_autoscroll|_for_all_forms_created_later, by default auto-scrolling is not adding to desktop applications (be more carefully, this affects only C# version, other platforms do not support auto-scrolling forms / columns except the Android - but the last case is very special at all);
  • Fixes:
    • Delphi: generating a large code with the option /$PROFILER=ALL could lead to the error message (too many local constants in a procedure);
  • Updates:
    • IDE AL4:
      • Scrolling and drawing was speed up on results of the profiler work;



March, 28, 2021 - version: 1.6.7

  • Changes:
    • C#/Delphi/FPC: The option /$PROFILER added: if it is present, on the end of work of an application, all CNT_ counters are saved to the file profiler_data.txt (grouped by classes); the option can be in form /$PROFILER=nnn where nnn can be one of FUNCTIONS, COMMENTS, LOOPS, BRANCHES, ALL (only the 1st letter is considered);

March, 26, 2021 - new version: 1.6.6

  • Changes:
    • Important: The keyword FOREVER removed and should be replaced with
      FOR, INFINITE: code ;
      It works exactly as the FOREVER worked before: it is not allowed to use BREAK / CONTINUE, return is available only with the ==> operator or by an exception;
    • Important: For embedded functions RotateL || Rotate_Left and RotateR || Rotate_right semantics of parameters was changed: now the second parameter means the amount of bits involved into the operation, and the rotation is always done onto 1 bit (in the minor part of the source number, which size is given by the second parameter, other bits are not touched).
  • Fixes:
    • Gcc: compiling projects (non-visual) with C++ usign g++ restored, at least in Windows (together with a capability to open resulting projects in the MS Visual Studio 2010+ and compiling / debugging in it);

March, 24, 2021 - version: 1.6.5

  • Changes:
    • {Localize_str}: automatic removing translations which are not used more (did not found while saving base dictionary). Deleting occur only if there are any changes in the base dictionary. Not used sections are not deleted but marked with the comment with the date&time where these were detected not used (in different configurations of an application, it is possible that some different classes are used which are not used in other platforms but there are sections corresponding to them in the .lng file).
  • Fixes:
    • C#: working {Long_operation} fixed (did not work);
    • Delphi: try-finally block did not generate for the PUSH statement having ==> (return) in its body. This was a temporary solution for problems compiling code in Delphi/FPC, a time went to fix this another way; Also the problem is fixed for CONTINUE / BREAK statements jumping over PUSH bounds;
  • Updates:
    • IDE AL4:
      • Designer: restoring Title property ({Dalog_file}, {Dialog_dir});
      • Designer: generating code for long sting values like x = "string" (e.g., Filter in {Dialog_file}): the string did not split while generating;
    • Diagram draw:


      • more natural resizing for the LINE, together with drawing selection markers on it;
      • after auto-loading the last file, in the save dialog, the file name was not typed, and doubled extension appeared;
      • now, when file is saved, its auto-saved version on disk is deleted;

March, 22, 2021 - version: 1.6.4

  • Changes:
    • Syntax sugar added: if in a single statement two sequential expressions are accessing fields of the same base object, then all the following accesses could be in form .Field, without other (same) symbols. E.g.:
      m = mouse.Offset(-Paintbox1.Bounds.Loc.X, -.Y);
  • Updates:
    • IDE AL4:
      • an indication of selected words in the text added at the right side to the vertical border line, together with a thumb showing current page position in the text;
      • Some other improvements and small fixes in the Instant code mode implementation;

March, 21, 2021 - version: 1.6.3

  • Fixes:
    • Delphi: generating code accessing an item of an array via an index which itself is an item of an array (A = B[C[i]]);
    • Compiling embedded functions with capitalized names (CLEAR, INDEX, etc.)
  • Updates:
    • IDE AL4:
      • special code input mode added: Instant code with inserting a prepare code pattern after entering a keyword and a space character, e.g.:
        CODE $condition ? $statement
        ELSE $statement ;
        (all the items starting with the "$" are disappearing automatically when you start editing on them, it is possible to use LEFT/RIGHT arrow keys to jump between them quickly, and there are some additional possibilities such as removing untouched ELSE branch by the Delete key when the caret is at the end of the previous line in code); the Instant code mode easily can be turned off (Ctrl-T) or on (Ctrl-I);
      • fixes in Find text operation;

March, 18, 2021 - version: 1.6.2

  • Fixes:
    • Additional fixes on $CCC;
    • C#: generating code accessing an item of an array via an index which itself is an item of an array (A = B[C[i]]);
  • Updates:
    • IDE AL4:
      • indexes on classes added (File | Index classes) for sources in certain directories (with subdirectories), showing hints on parameters of functions which classes did not loaded into IDE;
      • tracking of changes in a line added, with a suggestion (shown in the bottom of the editor) to press CTRL+R (in such case the Replace text dialog is shown but with parameters prepared on base of changes made in the line);
      • duplicating bookmarks set in the source added on the top panel to show which bookmarks are already set and to allow to jump there using mouse;
      • it is now possible to change the bottom panel size using mouse drag;
      • Form Designer: it is now possible to drag selected controls onto empty columns, too;

March, 15, 2021 - version: 1.6.1

  • Fixes:
    • Fixes on $CCC on base of first experiences on working on real projects (there were required to save/restore additional options, set additional properties for variables/constants while compiling/loading CCC files etc.);
    • Some fixes on using symbols BGRABITMAP, BGRABITMAP_CANVAS;
  • Updates:
    • IDE AL4: lines added connecting branches of CASE statements; better algorithm used to draw lines indicating block levels in PAS files;
    • Color commander: a queue (of 2) active and queued processes provided (as two buttons at the right side of the space not occupied by the files table). Also: a fix for RAR archives having paroled filenames (could not be deleted still a hidden RAR process did not finish);

March, 6, 2021 - version: 1.6.0

  • Changes:
    • FPC: A conditional compiling symbol added BGRABITMAP_CANVAS. Without it, when only BGRABITMAP is set (by the option /$BGRABITMAP), such library is used only to load images, thereas drawing uses standard TBitmap (this seems working faster, at least in Windows);
    • AL-IV: It is allowed to not specify the NEW modified for a function if a new object assigned to the RESULT variable has an owner (defined there bu the OWNED BY construction in code) or added to an array of objects (the >> A[] construction at the right side);
    • Colors added to console output for the primary version of the compiler, so compiling the main C# compiler (CSharpBuild) now done with colors;
    • C#, Delphi/FPC: by default, new feature added (with the key /$CCC=yes): class compiling results saved in files with extension .ccc (Cache Compiled Code) and in case when the source of a class was not changed and imported classes too were not changed for that class, it is not re-compiled but just re-loaded from a ccc file (which usually is faster). Other options are: $CCC=no, $CCC=save, $CCC=load. The option is new and is on tests. Add the key $CCC=no in case of problems.
  • Fixes:
    • Delphi/FPC: specifying more then 1 conditional compilation symbol in the parameter /$DEFINE=x,y (via comma);

February, 16, 2021 - version: 1.5.7a

  • Changes:
    • FPC: New version of the FPC 3.2.0 + Lazarus 2.0.10 + BGRABitmap 11.3.1 tested (in Windows and Linux). These versions are found fully compatible with entire code created (though some selected applications were tested). It is just required to specify correctly system variables $LAZARUS_HOME, $BGRABITMAP_UNITS - in Linux, and correct path to the fpc in the environment variable Path in Windows (and also fix paths to the FPC in Linux in the _FPC_build_linux_Lazarus.options file);
  • Fixes:
    • FPC: the problem with mouse wheel scrolling fixed;

February, 16, 2021 - version: 1.5.7

  • Changes:
    • IDE AL4 / Designer + {Form}: it is allowed to have several different layouts for a form with the same (or slightly different if necessary) set of controls created in different order, layout and with different parameters depending on a result of the overridden event method variant_layout;
  • Fixes:
    • C#: after calling menu it was necessary to call manually the Invalidate method for all the {Paintbox} (and plus) controls which could be covered with the menu opened. Now all the painting controls are updated automatically;

February, 8, 2021 - version: 1.5.6

  • Changes:
    • Compiler: It is not allowed in the left side of an assignment to use as the target variable name a variant of a local variable name which is matching to the name of a class field (e.g. if we have the local variable w|hat_found and the field what_found|_in_text, then it is not allowed to assign a value using the name what_found, but w can be used there). The variable type is not essential for the rule;
    • IDE AL4: it is allowed to use Ctrl+LMB to jump to a word definition (labels, variables, functions etc.) - same as Ctrl+Enter. Plus, other improvements in the interface;
    • Color Commander: updated to version 0.33;
    • {Form}: rules for "nested" columns are clarified: it is allowed to have such columns with aligning TOP/LEFT/RIGHT/BOTTOM relative to the "parent" column which aligning should not be parallel; and also: when there are several client aligned columns, the only single such column is showing (the first returned FALSE in the form event column_hidden);
    • IDE/Designer:
      • some changes in view columns and calculating their sizes at design time;
      • Changes in columns showing and aligning rules are taken into account (the first client aligned column is placed on the form, all another client aligned columns are placed from the right bound of the form scheme);
      • Additional view mode added: scheme of columns,
      • hatching added for controls which can be hidden or / and disabled;
  • Fixes:
    • IDE/Designer: {Tray} control generating fixed. The last parameter now (path to tray icon is just set from the text from the Value field in the Designer (so, it is possible to type there a name of a function returning such path, for example);
    • IDE/Designer: recognizing new_column fixed for case when the statement is occupying several lines of code;
    • Delphi/VCL: order of mouse double click event generating changed from mouse down - up - double-click - down - up to mouse down - up - down - double-click - up;

January, 28, 2021 - version: 1.5.5

  • Changes:
    • Delphi: New option added /$SCLASS == /$STRUCTUREASCLASS (all the structures are translated to classes rather then RECORDs event having simple fields only) - this option is necessary as technical, to implement the interpreter;
    • Delphi: New option /$RTTIONLY={Class1},{Class2},... was added which allows to economy up to 20 Kbytes of executable size (RTTI is generated only for specified classes);
    • IDE AL4/Designer: automatic generation of code like CASE sender_alias ? [...]: ... ; in event handlers while creating those and jumping there from the Designer's form menu "Events".
          Aliases are added only for appropriate controls which can be handled by certain event handler (e.g. the paint event is appropriate for {Paintbox} or {Paint_lines});
    • IDE Designer: double click on a control on the form drawn jumps not just to the first event with the control clicked but cycles between all such events (recognizing the control by its Alias in the code);
    • Output statement (<<): for all the concatenating expressions, which are not strings, the compiler tries to find a function Str from the scope (or system functions). I.e. now it is possible to write:
      and this will be correctly compiled though there are no there ':', '<<' and an explicit conversion to STR type as in the "correct" version:
      DEBUG: << "A=" A.S #NL ;
    • {Form}: for columns aligned 'TOP'/'BOTTOM', a "property" was added {controls_layout}: 'CONTROLS_LEFT', 'CONTROLS_RIGHT', 'CONTROLS_CENTER',

January, 24, 2021 - version: 1.5.4

  • Changes:
    • Color Commander changed to version 0.31 (added: preview archives top level content, better working in Linux, convering colors to HSL used for better colors set in the Dark color theme);
    • {Form}: events key_down and key_up fired only once now for a key press: if there is no a control with a focus, the sender == NONE and sender_alias == "" (so sender is the form itself); The previous version, when the single key press could be handled twice - from the form and from the focused control, could lead to chaos and worked very various waus on different target platforms, making it hard to create multi-platform apps;
    • {Paint_table} --> {Form}.Get_info : instead of setting the Current_line, now the field .Drawing.Item (of a {Paint_table} object) is set before calling the Get_info event to get a virtual table item row (in previous case, Set_current_line led to multiple nesting calls of adjustment functions and to flickering of a form on the screen);
    • {Form}: in columns aligned 'TOP' / 'BOTTOM', if the last item has the flag Anchor_bottom|_right set, then it is automatically extended to the right side of the parent column;
    • {Form}: moving or resizing a form does not (and should not) lead to calls of Any_change: size and location of a form on screen should not affect controls state such as Checked, Text, Hidden and others in most cases. If therefore it is necessary to do so, then it is always possible to call the Any_change method (but it is better to do this not in the resize event but to delay a bit may be using timer);
  • Fixes:
    • Compiling overloaded functions (having multiple type parameters like {INT, REAL, {complex}}) do not differ by the first parameter type, the decision which variant to use is delayed until scanning other parameters (otherwise there was compiling error there). In case of different first parameter types, certain overloaded version is selected immediately;

January, 17, 2021 - version: 1.5.3

  • Changes:
    • Color Commander changed to version 0.30 (added: searching files, preview text - with selecting/copying selected to the clipboard, and image files of most popular formats, view directory tree as color blocks with info on sizes).
    • Delphi: $INCREMENTAL option abandoned for a time (supporting it very hard, and it solves very thin class of task which I believe to solve a bit later and only for Delphi+Windows, with a multiplatform AL-IN|terpreter);
    • AL-IV: if a filed has both modifiers INIT and READ, then it is therefore allowed to use the standard object constructor object={Type}(...), initializing all such fields (but these fields become unavailable to modify it later except in descendant or friendly classes as usual for read-only fields);
  • Fixes:
    • IDE/Designer: entering multi-line text foxed (earlier, the caret always moved to the first line);
    • FPC/{Form}: in the inner event Form_shown, the event Form_resize also is called (otherwise there were no calls to {Form}.resize until the first manual resize of a form);
    • AL-IV: calling overloaded functions fixed with the first parameter which is a STRUCTURE (e.g. A.S, where A is a STRUCTURE e.g. {rect});

January, 12, 2021 - version: 1.5.2

  • Changes:
  • Fixes:
    • Delphi/VCL: automatic width sizing is implemented for the {Checkbox} on a column aligned 'TOP'/'BOTTOM';
    • Compiler/Optimizations: some problems found for the optimization 'V5' (merging same type local variables). It is turned off until solve;
    • Delphi/FPC: MIN_INT corrected to $8000_0000;
    • FPC: in case of integer constants having 31th bit set the compiler could not compile code;
    • Delphi/KOL: in case if symbol PAS_ONLY switched on, the function Extended2Str works incorrectly: the corrected code with the bug fixed is included into AL4.pas;
    • Delphi+FPC: any unstable working problems seems (I believe) fixed finally for the {Thread}: protecting of common variables added (using critical sections), and the list of threads (global variable) was declared as the threadvar. This last should minimize (to 0) a possibility of a mutual influence of threads of different levels in a creation tree;
    • Delphi/VCL+KOL: {Text_file}.Load fixed for case of UTF8 texts (even if the Encoding was set to 'UTF8', auto-detected 'ASCII' was using);
    • IDE/Designer: generating of a class {Ex_...} for a form fixed (it contains 4 generated functions to save and restore form state, including filled in fields to/from a structure {ex_...} correspondent and generated for the form, and to save and restore form state in/from a configuration, in a specified branch). In the function getting a form state from a configuration, now disabled capability was used: updating fields of a structure variable passed as a parameter. Now, it returns the structure {ex_...} as a RESULT;

January, 7, 2021 - version: 1.5.1

  • Changes:
    • IDE AL4/Designer: {Paint_tree} support added;
    • Another application created with the AL-IV is published: Color Commander; Now it is running (and mostly functioning) in Windows and Linux and can be compiled and launched in Android;
    • A gallery of the most interesting applications made with the AL-IV is published on the main page of the AL-IV.
  • Fixes:
    • FPC: Compiling under Linux (Lazarus/x86) tested;
    • FPC/Linux: functions {Form}.Get_active crashed when there was no any active control - fixed;
    • FPC/Linux: {Dialog_dir} + {Tray} are fixed (reference to the AL-IV control from the native control was stored in Tag converting it from Pointer to Integer rather then to IntPtr);
    • FPC: {Dialog}.Show_modal(parent_form) fixed (due a very annoying typo in the native code an exception occurred);
    • FPC: typing in edit controls fixed (handling keyboard keys assigning key to 0 value to prevent further handling for handled keys led to stop passing these to controls, in contrast to Delphi VCL / KOL);
    • FPC/Linux: {File_path}.Delete_file, Recycle fixed;


Previous versions history (2020)

See here

Previous versions history (2019)

See here


Previous versions history (2018)

See here


Previous versions history (2016-2017)

See here