<< Click to Display Table of Contents >> Navigation: What's new > 2018 - Version history > Version 1.10.5.0 |
Date |
Module |
What |
ID |
Description |
Thanks to: |
|
|||||
2018/10/15 |
|
|
|
--- thinBasic version 1.10.5.0 --- |
|
--- |
Updated |
|
Module updated to the latest version available on thinBasic SVN server. Introduction of large arsenal of functions for state-safe programming, see more in TBGL help file |
Petr Schreiber |
|
--- |
Updated |
|
Oxygen module updated to the latest version available on GitHub: https://github.com/Charles-Pegge/OxygenBasic |
Charles Pegge |
|
|
Setup |
|
thinBasic Setup application: •created with Inno Script Studio 2.2.2.32 •compiled with Inno Setup Compiler version 5.5.9 |
|
|
|
Compiler |
|
thinBasic Core engine is now compiled using PB10.04 |
|
|
|
|
|
All thinBasic executables and modules are compressed with UPX 3.94 |
|
|
|
|
|
|
|
|
2018/10/08 |
NEW |
|
<cAppConfig>.ProgId property added |
|
|
|
NEW |
|
<cAppConfig>.ErrorDescription method added |
|
|
|
NEW |
|
<cAppConfig>.ErrorPresent method added |
|
|
|
NEW |
|
<cAppConfig>.ErrorCode method added |
|
|
|
NEW |
|
<cAppConfig>.LoadString method added |
|
|
|
NEW |
|
<cAppConfig>.Load method added |
|
|
|
NEW |
|
<cAppConfig>.GetKeyName method added |
|
|
|
NEW |
|
<cAppConfig>.GetKeyCount method added |
|
|
|
NEW |
|
<cAppConfig>.GetKey method added |
|
|
|
NEW |
|
New AppConfig module added. It will allow handling application parameters using simple XML file structure implementing cAppConfig module class See example at \thinBasic\SampleScripts\AppConfig\ |
|
|
2018/10/04 |
NEW |
|
Dynamic string STATIC elements in UDT can now have default value. Example: Type MyType static lValue1 as long = 1234 static lValue2 as Double = 5678.901 static sValue1 as string = "ABCD" '<<< static sValue2 as string = "EFGH" '<<<
sName as String
Function _Create() Me.sName = "Random Name " & Timer End Function
Function ToString() as String Function = " sName=" & Me.sName & " lValue1=" & Me.lValue1 & " lValue2=" & Me.lValue2 & " sValue1=" & Me.sValue1 & " sValue2=" & Me.sValue2 End Function
End Type |
ReneMiner |
|
2018/10/02 |
NEW |
|
Numeric STATIC elements in UDT can now have default value. Example: Type MyType static lValue1 as long value 1234 '<<< static lValue2 as Double value 5678.901 '<<<
sName as String
Function _Create() Me.sName = "Random Name " & Timer End Function
Function ToString() as String Function = " sName=" & Me.sName & " lValue1=" & Me.lValue1 & " lValue2=" & Me.lValue2 end Function
end Type |
ReneMiner |
|
|
NEW |
|
Introduced WString and WStringZ data type to be used only when declaring external functions with DECLARE ... statement. When such data type is used in DECLARE parameters, thinBasic will automatically convert strings from UTF8 to Unicode.
A big thanks to Dale Yarker from PowerBasic forum who kindly developed an UTF8 to Unicode function: https://forum.powerbasic.com/forum/user-to-user-discussions/programming/775004-utf8tounicode?p=775209#post775209 |
Dale Yarker |
|
2018/09/24 |
NEW |
|
CallDWord function added |
|
|
2018/08/24 |
Improved |
|
Now function improved with new output formats. Also fixed default behaviour when no format passed |
|
|
2018/08/31 |
Improved |
|
Numeric scalar STATIC variables are now reported in thinDebug when inspecting values inside UDT. |
|
|
2018/08/20 |
NEW |
|
EXPERIMENTAL CodePtr function added. It allows interaction between script functions and external library callbacks. What CodePtr does is to create a compiled proxy function able to talk with external library callback calling and script source code function.
This will open a complete new set of developing possibilities |
|
|
2018/08/10 |
NEW |
|
<ADODB_Command>.CommandType property added |
|
|
|
NEW |
|
<ADODB_Command>.CommandText property added |
|
|
|
NEW |
|
<ADODB_Command>.ActiveConnection property added |
|
|
|
NEW |
|
ADODB_Command class added |
|
|
2018/08/08 |
NEW |
|
<ADODB_Recordset>.CursorType property added |
|
|
|
FIX |
|
If an UDT variable is defined with absolute memory allocation using Dim ... At ... its constructor and/or destructor (if present) are not executed. UDT variable allocated with absolute memory allocation they are supposed to be used just as a placeholder. |
Petr Schreiber |
|
2018/08/02 |
FIX |
|
Fixed theme white space colors |
|
|
|
NEW |
|
Added new theme: Default DOS |
|
|
2018/08/01 |
Improved |
|
SWAP can now exchange UDT and UDT array elements |
Petr Schreiber |
|
2018/07/31 |
FIX |
Console module was not anymore able to write on the standard output due to switch from WriteFile API to WriteConsoleW API. Now reverted to WriteFile |
MBuckingham |
||
|
NEW |
|
Added new theme to thinAir: Candy Land |
|
|
|
|
|
UDT_ElementByte and UDT_ElementOffset will no more generate runtime error if UDT element does not exists but instead will return a negative number. |
|
|
|
NEW |
|
Added "text.case" option to editor.style nodes in thinAir templates. This allows to set text case letters for any specific style. Mainly to be used for keywords. Possible values: 0=mixed (as typed), 1=upper, 2=lower, 3=camel |
|
|
2018/07/30 |
NEW |
|
thinAir will now save all source files with UTF8 Code Page BOM (Byte Order Marks: https://docs.microsoft.com/it-it/windows/desktop/Intl/using-byte-order-marks ) |
|
|
|
NEW |
|
UDT_ElementExists function added |
|
|
|
NEW |
|
AnyType pseudo type added to be used in Function parameter when the kind of UDT is only known at runtime. Usage example:
Function AnyUdt_QSort(ByRef T1() As AnyType, ...) |
|
|
2018/07/20 |
Improved |
|
TypeOf can now be used to determine types of UDT elements.
Example:
Uses "Console" Type tMyType MyLong as Long MyString as String End Type
dim MyType as tMyType
Printl TypeOf(MyType.MyLong)
string sFieldName = "MyString" Printl TypeOf(MyType.(sFieldName))
|
|
|
|
Improved |
|
UDT elements when used to get or set values can be indicated as a string expression including element name into a (). thinBasic will evaluate what's inside () as a string expression and will search for the resulting element name.
Example:
Type tMyType MyLong as Long MyString as String End Type
dim MyType as tMyType
string sFieldName = "MyString" MyType.(sFieldName) = "ABCD"
sFieldName = "Long" MyType.("My" + sFieldName) = 1234
|
|
|
|
Improved |
|
Dim ... Like ... is now able to work in conjunction with TypeOf and UDTs |
|
|
|
Improved |
|
Dim ... Like ... is now able to work in conjunction with TypeOf |
|
|
2018/07/13 |
NEW |
|
thinBasic_ParseStringZ SDK function added |
|
|
|
NEW |
|
thinBasic_ParseWStringZ SDK function added |
|
|
|
NEW |
|
thinBasic_ParseWString SDK function added |
|
|
2018/07/12 |
NEW |
|
PARSECOUNTF function added |
Petr Schreiber |
|
|
NEW |
|
PARSEF$ function added |
Petr Schreiber |
|
|
NEW |
|
GRABF$ function added |
Petr Schreiber |
|
2018/07/05 |
NEW |
|
|
||
|
NEW |
|
|
||
|
NEW |
|
|
||
2018/06/19 |
NEW |
|
<ADODB_Recordset>.Expand method added |
|
|
2018/05/01 |
NEW |
|
Win_GetDeviceCaps function added |
|
|
2018/04/25 |
NEW |
|
Added first thinAir theme options using theme xml files in \thinBasic\ThinAir\Themes\ Use right click over editor to change theme |
|
|
2018/04/15 |
|
Definitely switched from CodeMax control editor to Scintilla control editor |
|
||
2018/03/25 |
NEW |
|
<ADODB_Connection>.LookUp method added |
|
|
2018/03/17 |
|
NEW |
|
Let statement added |
|
2018/03/09 |
FIX |
|
Using$ was adding format char at the right of the formatted string when using strings and "&" |
dco045 |
|
2018/03/07 |
Improved |
|
Console_SetStdHandle fixed and documented |
EmbeddedMan |
|
|
NEW |
|
FILE_Attr function added |
EmbeddedMan |
|
2018/02/10 |
Improved |
|
Array Sort ... can now sort arrays of fixed strings or arrays of UDT |
dco045 |
|
2018/02/09 |
FIX |
|
thinAir Save and Backup was saving backup files with month/day inverted in file name |
dco045 |
|
2018/02/08 |
NEW |
|
Canvas_GetSize function added |
|
|
2018/02/07 |
NEW |
|
COMM_DeviceInfo(n).Class function added |
EmbeddedMan |
|
|
NEW |
|
COMM_DeviceInfo(n).Guid function added |
EmbeddedMan |
|
|
NEW |
|
COMM_DeviceInfo(n).FriendlyName function added |
EmbeddedMan |
|
|
NEW |
|
COMM_DeviceInfo(n).Description function added |
EmbeddedMan |
|
|
NEW |
|
COMM_DeviceInfo(n).Manufacturer function added |
EmbeddedMan |
|
|
NEW |
|
COMM_DeviceInfo(n).Driver function added |
EmbeddedMan |
|
|
NEW |
|
COMM_DeviceInfo(n).Port function added |
EmbeddedMan |
|
|
NEW |
|
COMM_GetDevices function added |
EmbeddedMan |
|
2018/02/06 |
NEW |
|
COMM_TimeOut function added |
EmbeddedMan |
|
2018/01/23 |
FIX |
|
It may happen that thinBundle is not able to create executable file because it is used/executed by the OS. Now this situation is checked before bundling |
dco045 |
|
|
NEW |
|
|
||
|
NEW |
|
|
||
|
NEW |
|
|
||
|
NEW |
|
System.VirtualScreen.Size added |
dco045 |
|
2018/01/22 |
NEW |
|
System.Desktop.Size added |
dco045 |
|
|
NEW |
|
App.Process.Id added |
dco045 |
|
|
NEW |
|
System.Monitor(idx).WorkArea added |
dco045 |
|
|
NEW |
|
System.Monitor(idx).Resolution added |
dco045 |
|
|
NEW |
|
System.Monitor(idx).IsPrimary added |
dco045 |
|
|
NEW |
|
System.Monitor.Count added |
dco045 |
|
|
NEW |
|
Added System pseudo variable that will return System information |
|
|
|
NEW |
|
Added App pseudo variable that will return System information |
|
|
2017/12/27 |
NEW |
|
Added thinBasic_ParsePtrToStringAndLen SDK function. |
|
|
|
NEW |
|
MIDF$ function added. Fast version of MID$ function but with some limitations |
|
|
|
FIX |
|
Fixed loading UTF8 NO-BREAK SPACE parsing (%HC2 + %HA0) that can be present in source code when copy/paste from a web page into thinAir (Scintilla version): https://en.wikipedia.org/wiki/Non-breaking_space |
|
|
2017/12/12 |
NEW |
|
Added Dialog method <DialogName>.Redraw |
|
|
|
NEW |
|
Added Image Callback Function event: <ImageName>_OnDisable |
|
|
|
NEW |
|
Added Image Callback Function event: <ImageName>_OnEnable |
|
|
|
NEW |
|
Added Image Callback Function event: <ImageName>_OnCallBack |
|
|
|
NEW |
|
Added Image Callback Function event: <ImageName>_OnDblClk |
|
|
|
NEW |
|
Added Image Callback Function event: <ImageName>_OnClick |
|
|
|
NEW |
|
Added Image control property GET/SET: <ImageName>.ImageName |
|
|
|
NEW |
|
Added Image control property GET: <ImageName>.ImageH |
|
|
|
NEW |
|
Added Image control property GET: <ImageName>.ImageW |
|
|
|
NEW |
|
Added Control method: <ControlName>.Redraw |
|
|
2017/12/09 |
NEW |
|
CONTROL ADD IMAGE ... new control type added |
|
|
|
NEW |
|
Image control has now basic common named control properties |
|
|
|
NEW |
|
ListBox control text array can now be a simple string with \n delimiters |
|
|
|
NEW |
|
ComboBox control text array can now be a simple string with \n delimiters |
|
|
|
NEW |
|
Check3State control has now basic common named control properties |
|
|
|
NEW |
|
Frame control has now basic common named control properties |
|
|
|
NEW |
|
Canvas control has now basic common named control properties |
|
|
|
NEW |
|
Added Treeview method: <TreeviewName>.InsertItem |
|
|
2017/12/03 |
NEW |
|
Added Treeview property GET/SET: <TreeviewName>.User |
|
|
|
NEW |
|
Added Control property GET/SET: <ControlName>.User |
|
|
|
NEW |
|
Added RichEdit property GET/SET: <RichEditName>.Text |
|
|
|
NEW |
|
Added RichEdit property GET/SET: <RichEditName>.Options |
|
|
|
NEW |
|
Added RichEdit property GET/SET: <RichEditName>.EventMask |
|
|
|
NEW |
|
Added RichEdit method: <RichEditName>.LimitText |
|
|
|
NEW |
|
CONTROL ADD RICHEDIT ... new control type added |
|
|
2017/11/30 |
NEW |
|
Added Control method: <ControlName>.UnTheme |
|
|
|
NEW |
|
Added Control property SET: <ControlName>.Colors |
|
|
|
NEW |
|
Added ProgressBar property SET: <ProgressBarName>.Range |
|
|
|
NEW |
|
Added ProgressBar property GET/SET: <ProgressBarName>.Pos |
|
|
2017/11/29 |
NEW |
|
Added Dialog property GET/SET: <DialogName>.ExStyle |
|
|
|
NEW |
|
Added Dialog property GET/SET: <DialogName>.Style |
|
|
2017/11/27 |
NEW |
|
Added Control property GET/SET: <ControlName>.ExStyle |
|
|
|
NEW |
|
Added Control property GET/SET: <ControlName>.Style |
|
|
2017/11/26 |
NEW |
|
Added Dialog property GET/SET: <DialogName>.Title |
|
|
|
NEW |
|
Added Treeview property GET/SET: <TreeviewName>.Indent |
|
|
|
NEW |
|
Added Treeview property GET/SET: <TreeviewName>.LineColor |
|
|
|
NEW |
|
Added Treeview property GET/SET: <TreeviewName>.TextColor |
|
|
|
NEW |
|
Added Treeview property GET: <TreeviewName>.Count |
|
|
|
NEW |
|
Added Treeview property GET/SET: <TreeviewName>.BackColor |
|
|
|
NEW |
|
Added Treeview property GET/SET: <TreeviewName>.ItemHeight |
|
|
|
NEW |
|
Added Treeview method: <TreeviewName>.Select |
|
|
|
NEW |
|
Added Treeview method: <TreeviewName>.Selected |
|
|
|
NEW |
|
Added Treeview method: <TreeviewName>.Expand |
|
|
|
NEW |
|
Added Treeview method: <TreeviewName>.Expanded |
|
|
|
NEW |
|
Added ActiveX property GET: <ActiveXName>.ActiveXName |
|
|
|
NEW |
|
Added ActiveX property GET: <ActiveXName>.ActiveXObj |
|
|
|
NEW |
|
CONTROL ADD ACTIVEX ... new control type added ACTIVEX control let hosting of visual ActiveX objects, get object iDispatch interface in order to be able to interact with the hosted object. Example: embedding a web browser inside thinBasic applications |
|
|
2017/11/21 |
NEW |
|
Added Dialog property SET: <DialogName>.MinClientSize |
|
|
|
NEW |
|
Added Dialog property SET: <DialogName>.MinSize |
|
|
2017/11/21 |
NEW |
|
Added the possibility to attach any function to a <DialogName> using dotted notation. Example MainWindow.AnyFunctionName(...) will be part of MainWindow named dialog. |
|
|
2017/11/17 |
NEW |
|
Added Dialog property SET: <DialogName>.Icon |
|
|
2017/11/15 |
NEW |
|
Added Dialog Callback Function event: <DialogName>_OnSetFocus |
|
|
|
NEW |
|
Added Dialog Callback Function event: <DialogName>_OnKillFocus |
|
|
|
NEW |
|
Added Dialog Callback Function event: <DialogName>_OnChar |
|
|
|
NEW |
|
Added Dialog Callback Function event: <DialogName>_OnGetDlgCode |
|
|
|
NEW |
|
Added Dialog Callback Function event: <DialogName>_OnKeyDown |
|
|
2017/11/13 |
NEW |
|
Added Dialog property GET/SET: <DialogName>.CW (client area width) |
|
|
|
NEW |
|
Added Dialog property GET/SET: <DialogName>.CH (client area height) |
|
|
|
NEW |
|
Added Control property GET/SET: <ControlName>.CW (client area width) |
|
|
|
NEW |
|
Added Control property GET/SET: <ControlName>.CH (client area height) |
|
|
|
Improved |
|
Improved string expressions handling even when they start with numeric signs (+ or -) |
LechU |
|
2017/11/07 |
FIX |
|
Canvas_BitmapRender error when X2 and Y2 were not present |
|
|
|
NEW |
|
Added Dialog method <DialogName>.End |
|
|
2017/11/06 |
NEW |
|
Added Dialog property GET/SET: <DialogName>.Text |
|
|
|
NEW |
|
Added Dialog property GET: <DialogName>.Name |
|
|
|
NEW |
|
Added Dialog property GET: <DialogName>.Id |
|
|
|
NEW |
|
Added Dialog property GET/SET: <DialogName>.Parent |
|
|
|
NEW |
|
Added Dialog property GET: <DialogName>.Handle |
|
|
|
NEW |
|
Added Dialog property GET/SET: <DialogName>.ForeColor |
|
|
|
NEW |
|
Added Dialog property GET/SET: <DialogName>.BackColor |
|
|
|
NEW |
|
Added Dialog property GET/SET: <DialogName>.X |
|
|
|
NEW |
|
Added Dialog property GET/SET: <DialogName>.Y |
|
|
|
NEW |
|
Added Dialog property GET/SET: <DialogName>.W |
|
|
|
NEW |
|
Added Dialog property GET/SET: <DialogName>.H |
|
|
2017/11/05 |
NEW |
|
Added Control property GET/SET: <ControlName>.Text |
|
|
|
NEW |
|
Added Control property GET: <ControlName>.Id |
|
|
|
NEW |
|
Added Control property GET/SET: <ControlName>.Parent |
|
|
|
NEW |
|
Added Control property GET: <ControlName>.Name |
|
|
|
NEW |
|
Added Control property GET: <ControlName>.Handle |
|
|
|
NEW |
|
Added Control property GET/SET: <ControlName>.ForeColor |
|
|
|
NEW |
|
Added Control property GET/SET: <ControlName>.BackColor |
|
|
|
NEW |
|
Added Control property GET/SET: <ControlName>.X |
|
|
|
NEW |
|
Added Control property GET/SET: <ControlName>.Y |
|
|
|
NEW |
|
Added Control property GET/SET: <ControlName>.W |
|
|
|
NEW |
|
Added Control property GET/SET: <ControlName>.H |
|
|
2017/10/23 |
FIX |
|
Command line not passed to script when executing in debug mode |
LechU |
|
|
NEW |
|
Added Combobox Callback Function event: <ComboboxName>_ONCLOSEUP |
|
|
|
NEW |
|
Added Combobox Callback Function event: <ComboboxName>_ONDBLCLK |
|
|
|
NEW |
|
Added Combobox Callback Function event: <ComboboxName>_ONDROPDOWN |
|
|
|
NEW |
|
Added Combobox Callback Function event: <ComboboxName>_ONEDITCHANGE |
|
|
|
NEW |
|
Added Combobox Callback Function event: <ComboboxName>_ONEDITUPDATE |
|
|
|
NEW |
|
Added Combobox Callback Function event: <ComboboxName>_ONERRSPACE |
|
|
|
NEW |
|
Added Combobox Callback Function event: <ComboboxName>_ONSELCHANGE |
|
|
|
NEW |
|
Added Combobox Callback Function event: <ComboboxName>_ONSELCANCEL |
|
|
|
NEW |
|
Added Combobox Callback Function event: <ComboboxName>_ONSELENDOK |
|
|
|
NEW |
|
Added Combobox Callback Function event: <ComboboxName>_ONKILLFOCUS |
|
|
|
NEW |
|
Added Combobox Callback Function event: <ComboboxName>_ONSETFOCUS |
|
|
|
NEW |
|
Added Combobox Callback Function event: <ComboboxName>_OnCallBack |
|
|
2017/10/22 |
NEW |
|
Added TextBox Callback Function event: <TextboxName>_OnKillFocus |
|
|
|
NEW |
|
Added TextBox Callback Function event: <TextboxName>_OnSetFocus |
|
|
|
NEW |
|
Added TextBox Callback Function event: <TextboxName>_OnUpdate |
|
|
|
NEW |
|
Added TextBox Callback Function event: <TextboxName>_OnChange |
|
|
|
NEW |
|
Added TextBox Callback Function event: <TextboxName>_OnCallBack |
|
|
2017/10/21 |
NEW |
|
Added Label Callback Function event: <LabelName>_OnDisable |
|
|
|
NEW |
|
Added Label Callback Function event: <LabelName>_OnEnable |
|
|
|
NEW |
|
Added Label Callback Function event: <LabelName>_OnCallBack |
|
|
|
NEW |
|
Added Label Callback Function event: <LabelName>_OnDblClk |
|
|
|
NEW |
|
Added Label Callback Function event: <LabelName>_OnClick |
|
|
2017/10/17 |
NEW |
|
Added Dialog Callback Function event: <DialogName>_OnRButtonUp |
|
|
|
NEW |
|
Added Dialog Callback Function event: <DialogName>_OnRButtonDblClk |
|
|
|
NEW |
|
Added Dialog Callback Function event: <DialogName>_OnRButtonDown |
|
|
|
NEW |
|
Added Dialog Callback Function event: <DialogName>_OnNCMOUSELEAVE |
|
|
|
NEW |
|
Added Dialog Callback Function event: <DialogName>_OnLButtonDblClk |
|
|
|
NEW |
|
Added Dialog Callback Function event: <DialogName>_OnLButtonUp |
|
|
|
NEW |
|
Added Dialog Callback Function event: <DialogName>_OnLButtonDown |
|
|
|
NEW |
|
Added Dialog Callback Function event: <DialogName>_OnNCMOUSEMOVE |
|
|
|
NEW |
|
Added Dialog Callback Function event: <DialogName>_OnSETCURSOR |
|
|
|
NEW |
|
Added Dialog Callback Function event: <DialogName>_OnNCHITTEST |
|
|
|
NEW |
|
Added Dialog Callback Function event: <DialogName>_OnMouseMove |
|
|
|
NEW |
|
Added Dialog Callback Function event: <DialogName>_OnSizing |
|
|
|
NEW |
|
Added Dialog Callback Function event: <DialogName>_OnSize |
|
|
|
NEW |
|
Added Dialog Callback Function event: <DialogName>_OnMoving |
|
|
|
NEW |
|
Added Dialog Callback Function event: <DialogName>_OnMove |
|
|
|
NEW |
|
Added Dialog Callback Function event: <DialogName>_OnShow |
|
|
|
NEW |
|
Added Dialog Callback Function event: <DialogName>_OnShowWindow |
|
|
|
NEW |
|
Added Dialog Callback Function event: <DialogName>_OnActivate |
|
|
|
NEW |
|
Added Dialog Callback Function event: <DialogName>_OnTimer |
|
|
|
NEW |
|
Added Dialog Callback Function event: <DialogName>_OnClose |
|
|
|
NEW |
|
Added Dialog Callback Function event: <DialogName>_OnNotify |
|
|
|
NEW |
|
Added Dialog Callback Function event: <DialogName>_OnDestroy |
|
|
|
NEW |
|
Added Dialog Callback Function event: <DialogName>_OnSysCommand |
|
|
|
NEW |
|
Added Dialog Callback Function event: <DialogName>_OnCommand |
|
|
|
NEW |
|
Added Dialog Callback Function event: <DialogName>_OnInit |
|
|
|
NEW |
|
Added Dialog Callback Function event: <DialogName>_OnLoad |
|
|
|
NEW |
|
Added Dialog Callback Function event: <DialogName>_OnCallBack |
|
|
2017/10/14 |
NEW |
|
Added Find dialog when using Scintilla Control Editor. |
|
|
|
FIX |
|
Fixed Excel module: properties assignments not working |
|
|
2017/10/10 |
FIX |
|
Permutations function fixed |
|
|
|
FIX |
|
Combinations function fixed |
LechU |