Version 1.11.3.0 to 1.12.0.0

<< Click to Display Table of Contents >>

Navigation:  What's new > 2020-2024 - Version history >

Version 1.11.3.0 to 1.12.0.0

Date

Module

What

ID

Description

Thanks to:




 



2024/02/03

 

 

 

--- thinBasic version 1.11.3.0 to 1.12.0.0  ---

 

---

TBGL

Updated

 

Module updated to the latest version available on GitHub: https://github.com/ThinBASIC/thinBasic_TBGL

Petr Schreiber

---

Oxygen

Updated

 

Oxygen module updated to the latest version available on GitHub: https://github.com/Charles-Pegge/OxygenBasic

Charles Pegge

 

Inno SetUp

Setup

 

thinBasic Setup application:

compiled with Inno Setup Compiler version 6.2.2

 

 

Core

Compiler

 

thinBasic Core engine is now compiled using PB10.04

 

 

UPX

 

 

All thinBasic executables and DLLs modules are compressed using UPX 4.2.2 64bit

 

 

Scintilla

thinAir

 

Scintilla editor control updated to Scintilla 4.4.6.0: https://www.scintilla.org/

 

thinBasic version 1.12.0.0


 

 





 

 





 

 




2024/02/03

thinAir

Improved


Added mouse wheel support in MDI Tabs. When cursor is above MDI Tabs,mouse wheel can be used to switch from one tab to the other and select corresponding code window



thinAir

FIX


Remove flickering when switching from one MDI window to the other



thinAir

FIX


Removed Bundle options from thinAir Options dialog.
Bundle options are indicated directly inside script source code using #Bundle keyword and all its variants



thinAir

Improved


Added CallTips option while typing. It can be switched on/off from thinAir options dialog



thinAir

Improved


Added CallTips option for mouse over. It can be switched on/off from thinAir options dialog



thinAir

Improved


Calltips options is now working from thinAir option dialog and not from theme XML file



File

Improved


File_Save now have ENCODING ... option in order to specify text encoding to be written:

%FILE_SAVE_ANSI

%FILE_SAVE_UTF8

%FILE_SAVE_UTF16


2024/01/30

File

NEW


Added File_Save_Utf16 function



File

NEW


Added File_Save_Utf8 function



File

NEW


Added File_Save_Ansi function



thinAir

FIX


Fixed thinAir open file dialog when script file name or path contains accented letters

dco045


thinAir

FIX


Fixed thinBundle when script file name or path contains accented letters

dco045

2024/01/27

thinAir

NEW


Added SHIFT+ENTER auto closing for Begin ControlId / End ControlId



thinAir

NEW


Added SHIFT+ENTER auto closing for Begin Const / End Cost



thinAir

NEW


Added SHIFT+ENTER auto closing for Enum / End Enum

Petr Schreiber


thinAir

NEW


Added new script template when creating a new script: General\General_AppStartUp.xml

Petr Schreiber

2024/01/26

Core

Improved


<cHash>.Get has now an optional default value to be returned if searched key does not exists

Petr Schreiber

2024/01/23

thinAir

NEW


Added thinBasic_TypeLibrary tool under Tools\User Tools menu. It can be used to inspect registered or unregistered COM Dll


2024/01/20

thinAir

FIX


Fixed menu \File\Save As ... recent file saving now reporting correct new file saved name



File

FIX


FILE_GetDateTime fixed for long file paths/file names



thinAir

FIX


File/Open dialog not able to determine last file save date/time for long file paths/file names



thinAir

Improved


Improved File/Open script dialog.
List of recent opened thinAir files will be maintained into a specific .INI file.
File is: .\thinAir\Config\thinAir_RecentFiles.ini


2024/01/13

Core

Improved


Fixed Dir_ListArray new multiple wild cards masks removing possible duplicates

Petr Schreiber

2024/01/13

Core

Improved


<cHash>.FromJSon method accepts string elements name delimited by single quote ' too


2024/01/10

Core

Improved


Now new output format YYYYMMDDHHMMSS



Math

NEW


Added Fibonacci function


2024/01/06

Core

Improved


Return improved: it can now be used to Return from main script


2024/01/01

Core

FIX


Fixed a problem when script path and/or script file name had accented letters.

justin045, dco045

2023/12/29

CJSon

Improved


CJson internal library from Dave Gamble https://github.com/DaveGamble/cJSON updated to the last version available so far: 1.7.17 https://github.com/DaveGamble/cJSON/releases/tag/v1.7.17



CJSon

NEW


<CCJson>.IsValid method added for easier source code reading



File

NEW


Path_Fix function added



File

NEW


Path_Canonicalize function added


2023/12/27

Core

NEW


Added Enum ... End Enum statement to easily create organized numeric enumerators equates. Enum are also resolved inside thinAir for easy code completion


2023/12/15

Core

Improved


#Compile ... #EndCompile improved



Core

Improved


Improved \thinBasic\Compilers\thinBasic_Compilers.ini possible options.

It is now possible to add other Basic compilers other than FreeBasic, for example PowerBasic in different configurations setup

 

User is responsible to install 3rd party compilers and configure them into \thinBasic\Compilers\thinBasic_Compilers_Usr.ini configuration file.

 


2023/11/30

File

Improved


Dir_ListArray can now have multiple wild cards masks in one single call.

Programmer can now specify multiple masks separated by semi colon.

 

Example "*.dll;*.exe":

dim sFiles()    as String
dim nFiles      as Long
 
nFiles = DIR_ListArray(sFiles(), "C:\Windows\System32\""*.dll;*.exe")
array Sort sFiles()

 


2023/11/29

AppLog

Improved


"{ProcId}" Process Id added in default format for Console, TextFile, Window AppLog output



AppLog

NEW


cAppLog.ProcId read only property added


2023/11/28

Core

Improved


Improved cHash.ToString by 10x



Core

Improved


Improved cOptions.ToString by 10x


2023/11/25

Console

Improved


Waitkey can now have a text to be displayed before waiting


2023/11/23

Core

NEW


Added <cHash>.FromJSon method



Core

NEW


Added <cHash>.Clear method



Core

NEW


Added <cHash>.Exists method



Core

NEW


Added <cHash>.Merge merge together one or more cHash objects



Core

NEW


Added <cHash>.ToString method



Core

NEW


Added <cHash>.Count method



Core

NEW


Added <cHash>.Del method



Core

NEW


Added <cHash>.Keys method



Core

NEW


Added <cHash>.Add method



Core

NEW


Added <cHash>.Get method



Core

NEW


Added <cHash>.Set method



Core

NEW


Added <cHash>.Init method



Core

NEW


New data structure object cHash added.

 

Similar to cOptions object but much more flexible and easy to be used.

Elements can be defined and returned on the fly without the need to be declared.


2023/10/25

Core

NEW


Added SQuote$ function



Core

NEW


Added DQuote$ function


2023/10/17

Core

NEW


iDispatch methods and properties can now be specified using $() string interpolation allowing dynamic method / properties names be determined at runtime


2023/10/13

thinAir

FIX


Fix theme switching. Some settings didn't reset from previous theme.


2023/10/11

AppConfig

Improved


<cAppConfig>.GetKey improved with modifiers



AppConfig

NEW


<cAppConfig>.CaseSensitive property added



Core

NEW


Added <cOptions>.Merge merge together one or more cOptions objects


2023/10/09

Core

NEW


Added <cOptions>.Exists method


2023/08/19

CJSon

Improved


CJSon module is now based on latest version available of CJSon library so far: 1.7.16 https://github.com/DaveGamble/cJSON



Core

NEW


Added <cOptions>.FromJSon method


2023/08/17

Console

Improved


Improved Console_ProgressBar: added automatic Current value, Max value and percentage calculation inside the bar


2023/07/07

Core

NEW


Added App.Arg.[ArgumentName] function



Core

NEW


Added App.ArgV function



Core

NEW


Added App.ArgC function


2023/06/30

CSV



Added <cCSV>.Reset method



CSV



Added <cCSV>.Init method


2023/06/21

AdoDB

NEW


<ADODB_RecordSet>.Export.Csv method added. With few lines of code it is now possible to export a whole recordset with many CSV options specified in a single parameter.



Core

NEW


Added <cOptions>.ToString method



Core

NEW


Added <cOptions>.Count method



Core

NEW


Added <cOptions>.Del method



Core

NEW


Added <cOptions>.Keys method



Core

NEW


Added <cOptions>.Add method



Core

NEW


Added <cOptions>.Get method



Core

NEW


Added <cOptions>.Set method



Core

NEW


Added <cOptions>.Init method



Core

NEW


New data structure object cOptions added


2023/06/20

Core

FIX


AnsiToUtf8$ error in converting.
New string conversion developed: from ansi to wide to utf8 seems doing a better job


2023/06/14

AdoDB

FIX


ADODB_Recordset.CollectD fixed. Some ODBC drivers consider Date only fields as string.


2023/06/06

Core

NEW


Added Stringify() function that will accept anything inside () transforming it into a string


2023/05/31

MSXML2

NEW


HttpClient added as alias of ServerXMLHTTPRequest.
This will simplify code porting from other programming languages sources.



MSXML2

NEW


UrlUnEscape utility function added



MSXML2

NEW


UrlEscape utility function added


2023/05/29

CSV

NEW


Scan of CSV files will work with any combination of text line ending: $CR, $LF, $CRLF



CSV

NEW


Added <cCSV>.Data property added SET operation


2023/05/13

StringBuilder

NEW


Added cStringBuilderArray.Name property



StringBuilder

NEW


Added cStringBuilderArray.Size property



StringBuilder

NEW


Added cStringBuilderArray.Items property



StringBuilder

NEW


Added cStringBuilderArray.ToString method



StringBuilder

NEW


Added cStringBuilderArray.Clear method



StringBuilder

NEW


Added cStringBuilderArray.Add method


2023/05/07

StringBuilder

NEW


Added new class: cStringBuilderArray. This class permits fast string concatenation using internal array of strings growing as needed.


2023/05/06

StringBuilder

NEW


<StringBuilder>.VarPtr method added


2023/05/01

Core

NEW


Build$ function added


2023/04/30

AdoDB

NEW


<ADODB_Connection>.ExecuteCmd function to simplify Insert/Update operations when no need to return an AdoDB Recordset object


2023/04/26

Core

NEW


Hex_To_Str$ function added



Core

NEW


Str_To_Hex$ function added


2023/04/18

File

Improved


File_Append has now an optional parameter that allows programmer to set a retry count to retry appending text into a file in case of run-time error. Sometimes on slow or crowded shared/networking file systems appending data into files shared between multiple applications or too frequently append operations can produce run-time errors and text not appended. By default File_Append will now retry 5 times before giving up. Or will retry the number of times specified in new parameter


2023/04/15

UPX

Improved


UPX upgraded to version 4.0.2


2023/04/01

CSV

NEW


Added <cCSV>.Errors property



CSV

NEW


Added <cCSV>.Rows property



CSV

NEW


Added <cCSV>.Columns property



CSV

NEW


Added <cCSV>.Column.Index property



CSV

NEW


Added <cCSV>.Column.Name property



CSV

NEW


Added <cCSV>.Row.Buffer property



CSV

NEW


Added <cCSV>.Row.Count property


2023/03/27

CSV

NEW


Added <cCSV>.Column.Count property



CSV

NEW


Added <cCSV>.Data property GET



CSV

NEW


Added <cCSV>.FileName property



CSV

NEW


Added <cCSV>.Char.Remark property



CSV

NEW


Added <cCSV>.Char.Delim property



CSV

NEW


Added <cCSV>.Load method



CSV

NEW


Added cCSV Class able to manage CSV files



CSV

NEW


CSV NEW module working with CSV delimited files.


2023/03/08

SQLite

Improved


SQLite engine dll update to version 3.41.0


2023/01/31

Core

Improved


$() string interpolation can now have personalized left and right delimiters


 

Core

NEW


Added System.Info.Environ


 

Core

NEW


Added System.Info.SpecialFolder



Core

NEW


Added System.Info.ComputerName



Core

NEW


Added System.Info.UserName


2022/12/27

File

NEW


Added Path_IsUNCServer function


 

File

NEW


Added Path_IsURL function



File

NEW


Added Path_IsUNC function



File

NEW


Added Path_MakeAll function



File

NEW


Added Path_ToAbsolute function



File

NEW


Added Path_IsRelative function



LibXL

NEW


Added LibXL_Book_Sheet_Count function


2022/12/18

Core

NEW


Added Win_LoadLibrary Windows API native function



Core

NEW


Added Win_LoadLibraryA Windows API native function



Core

NEW


Added Win_LoadLibraryW Windows API native function



Core

NEW


Added Win_GetProcAddress Windows API native function



Core

NEW


Added Win_FreeLibrary Windows API native function


2022/12/03

UI

NEW


Added <DialogName>.SendMessage method



UI

NEW


Added <ControlName>.SendMessage method


2022/11/29

Core

NEW

 

Semicolon ; is now considered like a space during source code parsing.
This should help in porting other programming langiage source code to thinBasic.


2022/11/29

Core

NEW

 

Added #Define keyword that mimic C/C++ equivalent construct.

#Define will create a global numeric or string variables depending on assigned value


2022/11/14

LibXL

NEW

 

LibXL_Sheet_ReadStr function added


 

LibXL

NEW

 

LibXL_Sheet_Name_Get function added


 

LibXL

NEW

 

LibXL_Book_Sheet_Get function added


 

LibXL

NEW

 

LibXL_Book_Load function added


2022/09/30

thinDebug

FIX

 

Fixed visualization of array of UDT elements

MrHiggins

 

thinAir

NEW

 

New Nord thinAir theme


2022/09/14

UI

FIX

 

TBURL32 control will now open default browser


2022/09/13

thinBundle

NEW

 

Added #BUNDLE Manifest "ManifestXmlFileName"


2022/09/10

Core

NEW

 

RGB_GetB function added


 

Core

NEW

 

RGB_GetG function added


 

Core

NEW

 

RGB_GetR function added


 

UI

NEW

 

Win_SetWindowPos function added


 

UI

NEW

 

Win_SetProcessDPIAware function added


 

AppLog

NEW

 

cAppLog.Indent.Text property added


 

AppLog

NEW

 

cAppLog.Indent.Val property added


2022/09/06

UI

NEW

 

Canvas_GetClient function added


2022/09/05

thinAir

FIX

 

CTRL + / CTRL - keyboard accelerator fix, where removed by mistake

Primo

2022/09/01

Core

NEW

 

Evaluate$ function added


 

Core

NEW

 

Evaluate function added


2022/08/30

thinAir

Improved

 

F1 context sensitive help key over a variable will try to give help on variable type


2022/08/25

Core

FIX

 

Select Case ... Case num, num, ... not always working when Case used with multiple values


 

AppConfig

NEW

 

cAppConfig.Save method added ... still experimental


2022/08/18

thinAir

FIX

 

Fixed folding false error of Sub / Functions inside #Compiled / #EndCompiled block


 

thinAir

FIX

 

Fixed folding error for multiline strings. Folding was not counting $CRLF inside multiline


 

AppLog

NEW

 

cAppLog.Console.WaitKey method added


2022/08/17

thinAir

NEW

 

User can now Try before Use a script template when using "New" script.

 

If template has the <CanTry>1</CanTry> XML node set to 1, "Try" button will be activated and script template source code can be tested immediately from the Template dialog.

 

 

If you have nice little snippets that can be used as a template to show specific thinBasic functionality/example, please create a post in thinBasic community forum.

 

 

2022/08/16

Core

NEW

 

File_Load, File_Save, File_Exists are now also available in thinBasic Core engine too.
Those 3 functions are very often useful in scripts that do not need complete File module functions so from now on they can be called without adding File module to script

 

2022/08/03

Core

NEW

 

$() String Interpolation new feature added

 

2022/08/03

CJSON

NEW

 

<CCJson>.Print method added

 

2022/08/01

AppLog

NEW

 

cAppLog.Window.Title property GET / SET added

 

 

AppLog

NEW

 

cAppLog.Console.Title property GET / SET added

 

2022/07/18

UI

NEW

 

Win_CallWindowProc function added

 

2022/06/20

Core

Improved

 

Declared external functions in 3rd party DLLs can now have WString data type return data.
thinBasic will take care to convert WString to UTF8 thinBasic String when needed

 

 

Core

Improved

 

Declared external functions in 3rd party DLLs can now have WString data type parameters passed BYVAL.
thinBasic will take care to convert UTF8 thinBasic String to WString while passing data to external functions.

 

2022/03/28

thinAir

Improved

 

/* ... */ is now recognized as block commenting and code colored as comment

 

 

thinAir

Improved

 

// is now recognized as line commenting and code colored as comment

 

2022/03/16

Core

Deprecated

 

RAWTEXT deprecated. Please use multi line strings instead.

 

2022/03/09

thinAir

FIX

 

Fixed RAWTEXT block folding

ReneMiner

 

Core

FIX

 

Fixed RAWTEXT block buffer loading

 

2022/01/25

LibXL

NEW

 

LibXL_Book_Create function added

 

 

LibXL

NEW

 

LibXL_BookXML_Create function added

 

 

LibXL

NEW

 

LibXL_Book_SetKey function added

 

 

LibXL

NEW

 

LibXL_Book_Sheet_Add function added

 

 

LibXL

NEW

 

LibXL_Book_Release function added

 

 

LibXL

NEW

 

LibXL_Book_Save function added

 

 

LibXL

NEW

 

LibXL_Sheet_WriteNum function added

 

 

LibXL

NEW

 

LibXL_Sheet_WriteStr function added

 

 

LibXL

NEW

 

Added new LibXL module able to handle Excel files (both XLS and XLSX formats)

 

LibXL is not a free module but a module based on a 3rd library developer.

It is fully functioning but a "not registered line" will be added in Excel files
 

In order to use it without any limitation, a LibXL license must be purchased from LibXL producer at https://www.libxl.com/ and used inside thinBasic scripts.

 

If you have a license key, use it inside LibXL_Book_SetKey function in your scripts

 

 

2022/01/18

ThinBundle

Improved

 

Fixed manifest file for Bundled Exe setting correct high dpi awareness

 

 

ThinBundle

Improved

 

Changed logic for Bundled Exe Isolation Path. Now it will include executable name and a GUID in order to better identofy those bundled exe not cleaning temp files after execution

 

2022/01/07

Core

Improved

 

Now new output format 11

 

2022/01/03

AppLog

NEW

 

AppLog NEW module to be used for logging information during script execution.

 

AppLog implements cAppLog object

 

cAppLog object can log into the following logging targets:

Console

Window

TextFile

Database

SMTP

 

 

2021/10/31

UI

Improved

 

Revised thinBasic.exe manifest info

 

2021/09/27

Core

NEW

 

NewID$ function added

 

2021/09/20

Core

NEW

 

Base64_Mime_Decode$ function added

 

 

Core

NEW

 

Base64_Mime_Encode$ function added

 

2021/09/08

SMTP

Improved

 

SMTP_SendEmail and SMTP_SendHtml: message size improved to 1 Mega Byte.
Before it was 32 Kilo Bytes

 

2021/08/18

File

NEW

 

DISK_Size function added

 

 

File

NEW

 

DISK_Free function added

 

2021/08/10

Core

NEW

 

App.Data.Exists function added

 

 

Core

NEW

 

App.Data.Del function added

 

 

Core

NEW

 

App.Data.Free function added

 

 

Core

NEW

 

App.Data.Count function added

 

 

Core

NEW

 

App.Data.Get function added

 

 

Core

NEW

 

App.Data.Set function added

 

 

Core

NEW

 

App.Data.PHash function added

 

 

Core

NEW

 

App.Data.* functions added. A set of functions used to store/retrieve application data without the need to create global variables

 

2021/07/01

Core

Improved

 

<cDateTime>.ToString can now have format options

 

2021/06/30

Core

NEW

 

App.Environ.* function added

 

2021/05/19

Core

Improved

 

CodePtr function can now have up to 6 32bit parameters

 

2021/04/09

Core

NEW

 

It is now possible to declare and pass an UDT PTR as function parameters.

 

Example:
Function MyUdtUsingAPtrToMyUdt(ByVal lMyUdtPtr As tMyUdt PTR) As Long
 

Similar to pass and UDT ByRef but convenient in many situation when programmer have just a pointer to the UDT.

 

2021/04/06

UI

NEW

 

Added Win_IsWindowUnicode function

 

 

UI

NEW

 

Added SHA256HMAC function

 

 

UI

NEW

 

Added Win_DispatchMessageW function

 

 

UI

NEW

 

Added Win_DispatchMessageA function

 

 

UI

NEW

 

Added Win_GetMessageW function

 

 

UI

NEW

 

Added Win_GetMessageA function

 

 

Core

FIX

 

CodePtr function error when passing parameters to Core engine.

Parameter array declared with the wrong parameter variable type

 

 

UI

NEW

 

Added Win_DefWindowProcW function

 

 

UI

NEW

 

Added Win_DefWindowProcA function

 

 

UI

NEW

 

Added Win_GetAppInstance function

 

 

UI

NEW

 

Added Win_CreateWindowA function

 

 

UI

NEW

 

Added Win_CreateWindowW function

 

 

UI

NEW

 

Added Win_CreateWindowExA function

 

 

UI

NEW

 

Added Win_CreateWindowExW function

 

 

UI

NEW

 

Added Win_RegisterClassExW function

 

 

UI

NEW

 

Added Win_RegisterClassExA function

 

 

UI

NEW

 

Added Win_RegisterClassW function

 

 

UI

NEW

 

Added Win_RegisterClassA function

 

 

UI

NEW

 

Added Win_UpdateWindow function

 

 

UI

NEW

 

Added Win_ShowWindow function

 

2020/12/31

Core

Improved

 

Bin_To_Hex$ improved with new formatting options

 

2020/12/08

CJSON

NEW

 

Added method <CCJSon>.ParseFile

 

 

CJSON

NEW

 

Added property <CCJSon>.Path.Name

 

2020/12/07

Core

Deprecated

 

Operator . (dot) has been deprecated as string concatenation operator

 

 

CJSON

NEW

 

Added property <CCJSon>.Path.Ptr

Petr Schreiber

 

CJSON

NEW

 

Added property <CCJSon>.Path.Type$

Petr Schreiber

 

CJSON

NEW

 

Added property <CCJSon>.Path.Type

Petr Schreiber

 

CJSON

NEW

 

Added property <CCJSon>.Path.Size

 

 

CJSON

NEW

 

Added property <CCJSon>.Path.Count

Petr Schreiber

 

CJSON

NEW

 

Added property <CCJSon>.Path.Value

Petr Schreiber

 

CJSON

NEW

 

Added property <CCJSon>.Root

 

 

CJSON

NEW

 

Added property <CCJSon>.Valid

 

 

CJSON

NEW

 

Added method <CCJSon>.Parse

 

 

CJSON

NEW

 

Added CCJSon Class able to manage json files and string buffers

 

 

CJSON

NEW

 

cJSON_Path_GetValue function added

Petr Schreiber

 

CJSON

NEW

 

cJSON_Path_GetCount function added

Petr Schreiber

 

CJSON

NEW

 

cJSON_Path_GetPtr function added

Petr Schreiber

 

CJSON

NEW

 

cJSON_Path_GetType function added

Petr Schreiber

 

CJSON

NEW

 

cJSON_Path_GetTypeName function added

Petr Schreiber

2020/11/29

MSXML2

NEW

 

Added DOMDocument.SelectNodes

 

 

MSXML2

NEW

 

Added DOMDocument.SelectSingleNode

 

 

MSXML2

NEW

 

Added DOMDocument.Load

 

 

MSXML2

NEW

 

Added DOMDocument.LoadXml

 

 

MSXML2

NEW

 

Added DOMDocument.ParseError.Url

 

 

MSXML2

NEW

 

Added DOMDocument.ParseError.FilePos

 

 

MSXML2

NEW

 

Added DOMDocument.ParseError.LinePos

 

 

MSXML2

NEW

 

Added DOMDocument.ParseError.Line

 

 

MSXML2

NEW

 

Added DOMDocument.ParseError.SrcText

 

 

MSXML2

NEW

 

Added DOMDocument.ParseError.Reason

 

 

MSXML2

NEW

 

Added DOMDocument.ParseError.ErrorCode

 

 

MSXML2

NEW

 

Added DOMDocument.SelectSingleNode.Text

 

 

MSXML2

NEW

 

Added DOMDocument.SelectSingleNode.Xml

 

 

MSXML2

NEW

 

Added DOMDocument.GetElementsByTagName.Count

 

 

MSXML2

NEW

 

Added DOMDocument.GetElementsByTagName.Text

 

 

MSXML2

NEW

 

Added DOMDocument.GetElementsByTagName.Xml

 

 

MSXML2

NEW

 

Added DOMDocument.SetProperty

 

 

MSXML2

NEW

 

Added DOMDocument.GetProperty

 

 

MSXML2

NEW

 

Added DOMDocument.Text

 

 

MSXML2

NEW

 

Added DOMDocument.Xml

 

 

Console

Improved

 

Print and PrintL can now have multiple blocks of strings to print each of them having ...IN ... and ... AT ... options. Just put each block inside a () pairs.

Example:

PrintL ("Text....:" In %CCOLOR_FLIGHTCYAN)(Text In %CCOLOR_FLIGHTGREEN)

 

2020/11/24

Curl

NEW

 

Curl module now allows to perform requests using industry standard curl.exe tool.
 

 

 

Curl

 

 

Procedural interface for command line like experience:

Curl_Exists

Curl_Command

Curl_Command_GetLastOutput

Curl_Command_GetLastCommand

Curl_Command_GetLastExitCode
 

 

 

Curl

 

 

Class based interface for more structured code:

Curl_Http class with methods for request and response.

 

It allows you to specify http method, headers, payload and more!

 

Browse the Curl_Http topic for more details and examples of use.
 

 

 

Console

NEW

 

Console module can now have optional startup parameters that can be specified after Console module during USES clause.

"noalloc": will not allocate a new console window on module startup.

 

Example:

Uses "Console noalloc"

 

Programmer can then use Console_Alloc, Console_Hide, Console_Show, Console_Free to precisely control when to create/hide/show/free a console window.

 

2020/11/20

Console

NEW

 

Console_X_Enable function added.

It will allow to enable [X] close button in console window

 

 

Console

NEW

 

Console_X_Disable function added.

It will allow to disable [X] close button in console window

 

 

SDK

Improved

 

USES can now have optional information to be used by those modules using version 2 of thinBasic SDK and taking advantage of LoadLocalSymbols_V2 and UnLoadLocalSymbols_V2 SDK functions

 

2020/11/16

ADODB

Improved

 

<ADODB_Recordset>.UpdateS method has now and optional field to specify to truncate updated values to match field size

 

 

Core

NEW

 

$(StringExpression) string interpolation.
The single $ special character identifies a string literal as an interpolated string. An interpolated string is a string literal that might contain interpolation expressions. When an interpolated string is resolved to a result string, items with interpolation expressions are replaced by the string representations of the expression results.

String interpolation provides a more readable and convenient syntax to create formatted strings than a string composite formatting feature.

See example in \thinBasic\SampleScripts\General\StringInterpolation.tbasic

 

 

Core

FIX

 

APP.Process.Id fixed

 

2020/11/11

 

 

 

Added RoundNM function to round a number to the nearest multiple of ...

 

 

 

 

 

Added System.Metrics

 

 

 

 

 

Added System.Memory

 

 

 

 

 

Added System.VirtualScreen

 

 

 

 

 

Added System.Desktop

 

 

 

 

 

Added System.Monitor

 

 

 

 

 

Documented System pseudo variable

 

2020/11/09

Core

NEW

 

DWORDLONG added as alias of QUAD

replwithoutacause

2020/09/22

File

NEW

 

DIR_GetTempFileName function added

 

2020/09/03

Core

Improved

 

MD5 function now has File option used to pass a file name instead of a string buffer

 

 

Core

Improved

 

MD5 function is now much much faster

 

2020/09/02

ThinBundle

NEW

 

thinBundle will now check bundled exe file size. If AV software or other kind protection software detect something suspicious ... bundled exe file size less then 100KB can be an indication of executable corruption.

 

 

File

Improved

 

File_Move improved. Programmer can now specify to replace destination file if it exists

 

2020/08/01

thinAir

FIX

 

Clicking #Include file in Code browser failed for paths over 100 characters

 

 

thinAir

FIX

 

#Region / #EndRegion is now folded

 

 

thinAir

FIX

 

Execution of temporary scripts works again (SHIFT+F5)

 

 

thinAir

FIX

 

"With selection" / "Comment Out" and "Uncomment Out"

 

 

thinAir

FIX

 

Delays blocking thinAIR on startup and some operations fixed

 

 

thinAir

Improved

 

Using right click on #include, pointing to non-existing file, offers file creation

 

 

thinAir

Improved

 

Tooltip for UDT variables

 

 

thinAir

Improved

 

Error reporting changed from >>>>> to more specific message regarding detected block end

 

 

thinAir

Improved

 

In case multiple files are missing during thinAir start, only one summary message displayed

 

 

thinAir

NEW

 

Events code completion for dialog, button, label

 

 

thinAir

NEW

 

#includedir context menu now opens the directory

 

2020/07/22

SMTP

NEW

 

SMTP_VerifyFormat function added

 

2020/06/22

Core

FIX

 

Do / Loop Until ... error when conditional clause was simple variables due to internal binary conversion instead of logical test

DirectuX

2020/04/22

thinAir

FIX

 

.HTML template files used for process monitoring and runtime errors didn't have <meta charset="utf-8"/> statement so errors having utf-8 strings were not recognized correctly

DirectuX

2020/04/20

thinAir

Improved

 

Named controls added with CONTROL ADD ... NAME ... syntax are now identified by thinAir.
In this way named controls will have dotted notations.

 

 

thinAir

Improved

 

Dialog names created with DIALOG NEW ... NAME WinName ... syntax are identified by thinAir. Dialog names will have dotted notation autocompletion.

 

thinBasic version 1.11.6.0

 

2020/04/19

thinAir

FIX

000560

Indent error when using "right click/insert code block" functionality

DirectuX

2020/04/18

thinAir

Improved

 

thinAir templates (File / New) will now have personal templates tree expanded

Petr Schreiber

 

thinAir

Improved

 

Only Process monitor and Runtime error checking tabs left in output window.
Others will come when there will be a real need

 

2020/04/17

thinAir

FIX

 

thinAir themes names fixed.

In case of names containing points, names were not correctly detected.

DirectuX

2020/04/16

thinAir

Improved

 

General reduction of window flickering when resizing

 

2020/04/13

thinAir

Improved

 

Added code browser indentation level value in default theme in key:

codebrowser.options.indent.level

Indent level specify number of pixels to indent code browser items.

New default value is 10 pixels

 

 

thinAir

NEW

 

Added "View/Maximize Edit" menu command or F12 keyboard accelerator key in order to hide/show thinAir MenuBar/Toolbar/StatusBar/Output and give the maximum vertical size to edit window.

 

Use F12 to switch from hide/show state. Following image show thinAir in Maximize edit mode

Primo

2020/04/12

thinAir

Improved

 

Process window reduced to the minimum.

Added a button to enlarge/reduce size.

By default Process Monitor will be enlarged/reduced automatically before/after script execution. It is always possible to enlarge to see last execution results

 

Primo

 

UI

NEW

 

Win_DrawFrameControl function added

 

thinBasic version 1.11.5.0

2020/04/08

UI

Improved

 

Control Append Text ... is now UTF8 aware

Primo

 

thinAir

NEW

 

Click area above output window to expand or reduce it.

 

 

 

 

thinAir

NEW

 

thinAir is now able to kill a script process in case programmer loose control of it.

Added toolbar button to kill current running script

 

2020/04/03

thinAir

NEW

 

thinAir is now able to monitor script execution reporting information like process cpu usage, process memory and script duration.

 

 

Process monitoring is performed using a Web Browser embedded Control whose layout can be changed using html/Javascript templates present in \thinBasic\thinAir\ProcessMonitor\Html\

 

Programmer can copy one of the templates and personalize it.

Inside template you can find the list of place holders you can use to set where to show process info.

 

To change Process Panel layout and parameters go into default Theme and change one or more of those parameters:

 

<panels>

  <options>

 

    <item name = "process.monitoring.active">true</item>

    <item name = "process.html.template">

ProcessMonitor\Html\ProcessMonitor_Template_1Chart.htm

    </item>

    <item name = "process.monitoring.sampling.points.max">30</item>

    <item name = "process.monitoring.sampling.delay">900</item>

      <!-- DO NOT GO BELOW 500 -->

 

    <item name = "process.onstart.maximize">true</item>

    <item name = "process.onstop.minimize">false</item>

 

  </options>

</panels>

 

 

2020/04/01

thinAir

Improved

 

It will not be possible to close thinAir if there is a running script started by thinAir

 

 

thinAir

NEW

 

Added new Screen Ruler thinAir tool under Tools\User Tools menu.

It can be used to calculate screen dimensions.

Program developed and released to the public by Gary Beene in Power Basic forum

 

 

UI

FIX

 

Fixed DIALOG UNITS output variables were inverted

 

2020/03/30

thinAir

NEW

 

Added autocompletion for Statusbar named control

 

 

thinAir

NEW

 

Added autocompletion for Listbox named control

 

 

thinAir

NEW

 

Added autocompletion for Progressbar named control

 

2020/03/29

thinAir

Improved

 

You may know that SHIFT + ENTER let's triggers auto creation of blocks like Function ... End Function, If ... End If, Type ... End Type.
Now position of the cursor after triggering auto blocks is improved thanks to the placeholder "$Cursor" inside "\ThinAir\Syntax\thinBasic\thinBasic_StartEnd_AutoClose.ini" file

thinBasic Facebook page: Vinod Kc

 

thinBasic version 1.11.4.0

2020/03/28

UI

FIX

 

Dialog_BrowseForFolder didn't returned trailing "\"

DirectuX

 

UI

Improved

 

Event functions for Dialogs and/or Controls can now have dotted (.) or underscored (_) notation.

For example if programmer needs to react on OnLoad event for a dialog named frmMain, just create one of the following callback function:

frmMain_OnLoad

frmMain.OnLoad

 

Dotted notation is preferred one.

 

 

 

thinAir

NEW

 

Call Tips Key nodes can now have new child nodes in CallTips XML file:

Events

 

This node will be used to indicate Event names for those keys that have events like Dialogs, Controls, ...

Example in \ThinAir\Syntax\thinBasic\thinBasic_CallTips_Module_UI.xml

 

 

 

thinAir

NEW

 

thinAir editor is now able to parse script UDT elements and show autocompletion of declared variable/sub/functions  when using ME. inside an UDT to udentify current UDT

 

thinBasic version 1.11.3.0

2020/03/25

thinAir

NEW

 

Call Tips Key nodes can now have new child nodes in CallTips XML file:

Properties

Methods

 

Those 2 new nodes can be used to add autocompletion to module classes defined inside modules like cDateTime. Example in \ThinAir\Syntax\thinBasic\thinBasic_CallTips_Module_CDateTime.xml

 

2020/03/24

thinAir

NEW

 

thinAir editor is now able to partially parse script UDT elements and show autocompletion of declared variable/sub/functions inside the UDT

 

So far this is very experimental:

still many bugs to fix for correct parsing

still to remove unwanted code from element list

still to manage extended UDT

still to manage multiple declaration

still to make it local to the script and not global to all the loaded scripts

still to improve speed for large script

...

 

You know ... just a beginning of a new thinAir usability we hope.

 

 

File

NEW

 

FILE_COPYEX function documented. It now uses CopyFileExW Windows API function.
Still to understand how to stop/resume file copy operation. Behaves seems different from one documented in MS docs

 

2020/03/23

thinAir

NEW

 

During programming, having too many Call Tips on the screen can be disturbing. For this reason, the "showlevel" attribute has been added to the "key" node within the "\ thinBasic \ Lib \ ThinAir \ Syntax \ thinBasic \ thinBasic_CallTips * .xml" files. This new attribute can have a value from 1 to 9 where 1 indicates the maximum importance level while 9 indicates the minimum importance level.

 

In this way, each user can set the level of importance of Call Tip he wants to work by hiding or showing the most appropriate level according to his needs

 

<Key Name = "Dim" showlevel = "3"></Key>

 

 

2020/03/22

thinAir

NEW

 

Code Tips can now be divided into different XML file thanks to "source" attribute of <Module> node.

 
For example the following <Module> node instruct parser that Code Tips for TBGL module must be loaded from the external file named thinBasic_CallTips_Module_TBGL.xml:

 

<Module name = "TBGL" source = "thinBasic_CallTips_Module_TBGL.xml"></Module>

 

 

 

thinAir

NEW

 

Call Tips of script user defined functions a automatically generated at runtime

 

 

 

thinAir

NEW

 

Call Tips Key nodes in \thinBasic\Lib\ThinAir\Syntax\thinBasic\thinBasic_CallTips.xml file can now have linkto attribute in order to link a key to another key. This can be useful to avoid double writing of keys that has the same meaning.

 

Example: "CallBack" key is empty but it is linked to "CallBack Function" key

 

<Key Name = "Callback" linkto = "CallBack Function"></Key>

 

 

 

thinAir

NEW

 

Moving mouse over text inside a script will activate Call Tips window on keywords under the mouse

 

 

thinAir

NEW

 

Call Tips Key nodes can now have new child nodes in XML file:

Description

Syntax

Parameters

ReturnValue

Remarks

Example

 

Example of a Key node in \thinBasic\Lib\ThinAir\Syntax\thinBasic\thinBasic_CallTips.xml file:

<Key name = "WCon_SetFont">

  <Description>Set WCon font.</Description>

  <Syntax>WCon_SetFont FontName, FontWidth, FontHeight</Syntax>

  <Parameters>FontName: String\nFontWidth: Long\nFontHeight: Long</Parameters>

  <ReturnValue>None</ReturnValue>

  <Remarks>IMPORTANT: Execute as first script WCon command</Remarks>

  <Example>WCon_SetFont "Consolas", 10, 18</Example>

</Key>

 

And this is how it will appear:

 

2020/03/21

thinAir

NEW

 

Added insert #Region / #EndRegion block in right click menu "Insert code block ..."

 

 

thinAir

NEW

 

Call Tips are now able to show function help of script functions.

 

 

thinAir

NEW

 

Added right edge vertical line to mark lines that exceed a given length. Settings are inside default theme

 

 

WCon

NEW

 

Added GET/SET WCon_CursorSize property

 

 

WCon

NEW

 

Added WCon_CursorHide command

 

 

WCon

NEW

 

Added WCon_CursorShow command

 

 

thinAir

NEW

 

Added possibility to highlight some block of codes to improve script readability. Scintilla editor control call this "Indicators". They are used to display additional information over the top of styling.

Actualy the following blocks are "indicated":

#REGION

FUNCTION

SUB

CALLBACK

TYPE

 

To change configuration for each indicator, please refer to default theme and search for "indicator". There is an indicator for each block and configuration can be setup separately.

 

Some example:

 

 

 

 

thinAir

NEW

 

Added a new node in default Theme to allow style settings for new Call Tips.

It is possible to change font and colors.

 

Authors of themes can inherit "calltip" node in their themes and change as needed.

 

 

thinAir

Improved

 

thinAir CodeTips INI file \ThinAir\Syntax\thinBasic\thinBasic_Codetips.ini and corresponding Urs (user) version are now DEPRECATED and has been removed.

 

CodeTips are now replaced with new Calltips XML file \ThinAir\Syntax\thinBasic\thinBasic_CallTips.xml and relative Usr (user) file. Using XML notation will allow more easy change and implementation in future.

 

CallTips are used to show information/help about keywords while typing code in the following way:

 

2020/03/20

WCon

NEW

 

Added WCon_Refresh command

 

 

WCon

NEW

 

Added WCon_PaletteSetBase command

 

 

WCon

NEW

 

Added WCon_PaletteSetColor command

 

2020/03/19

WCon

NEW

 

Added WCon_PaletteGetColor command

 

 

WCon

NEW

 

Added WCon_SetFont command

 

 

WCon

NEW

 

Added WCon_Box command

 

 

WCon

NEW

 

Added WCon_Frame command

 

2020/03/18

INet

FIX

000627

INET_GetIp fixed. Item number zero was returning and empty value instead  of to return number of ips found

justin045

 

WCon

NEW

 

Added WCon_RowColToPixel command

 

 

WCon

NEW

 

Added WCon_OnPaintLast command

 

 

UI

NEW

 

Added Win_Ellipse function

 

 

UI

NEW

 

Added Win_CreateSolidBrush function

 

2020/03/17

Core

NEW

 

Added property GET/SET <cDateTime>.UnixTime
Because a Unix time stamp is always expressed in UTC, this property expects that current <cDateTime> is in local time because internally it makes temporary conversions from local to UTC to local time.

 

2020/03/16

Core

NEW

 

Added property GET/SET <cDateTime>.SystemTime

 

 

Core

NEW

 

Added property GET/SET <cDateTime>.FileTime

 

 

Core

NEW

 

Added SystemTime predefined UDT

 

 

Core

NEW

 

Added FileTime predefined UDT

 

 

Core

NEW

 

Added DateInterval predefined UDT

 

2020/03/15

Core

NEW

 

Added method <cDateTime>.TimeDiff

 

 

Core

NEW

 

Added method <cDateTime>.DateDiff

 

 

Core

NEW

 

Added method <cDateTime>.Diff

 

 

Core

NEW

 

Added method <cDateTime>.Copy

 

 

Core

NEW

 

Added method <cDateTime>.DaysInMonth

 

 

Core

NEW

 

Added method <cDateTime>.DayOfWeekString

 

 

Core

NEW

 

Added method <cDateTime>.NewTime

 

 

Core

NEW

 

Added method <cDateTime>.NewDate

 

 

Core

NEW

 

Added method <cDateTime>.ToUTC

 

 

Core

NEW

 

Added method <cDateTime>.ToLocalTime

 

 

Core

NEW

 

Added method <cDateTime>.Today

 

 

Core

NEW

 

Added method <cDateTime>.NowUTC

 

 

Core

NEW

 

Added method <cDateTime>.TimeStringFull

 

 

Core

NEW

 

Added method <cDateTime>.TimeString24

 

 

Core

NEW

 

Added method <cDateTime>.TimeString

 

 

Console

FIX

 

Extra space printed in front of Console_Write and Print when more that one comma separated strings were printed. Now it is removed

 

2020/03/14

Core

NEW

 

Added method <cDateTime>.DateStringLong

 

 

Core

NEW

 

Added method <cDateTime>.DateString

 

2020/03/09

Core

NEW

 

Added method <cDateTime>.Now

 

 

Core

NEW

 

Added method <cDateTime>.AddYears

 

 

Core

NEW

 

Added method <cDateTime>.AddSeconds

 

 

Core

NEW

 

Added method <cDateTime>.AddMSeconds

 

 

Core

NEW

 

Added method <cDateTime>.AddMonths

 

 

Core

NEW

 

Added method <cDateTime>.AddMinutes

 

 

Core

NEW

 

Added method <cDateTime>.AddHours

 

 

Core

NEW

 

Added method <cDateTime>.AddDays

 

 

Core

NEW

 

Added method <cDateTime>.SecondsToDate

 

 

Core

NEW

 

Added method <cDateTime>.DateToSeconds

 

 

Core

NEW

 

Added method <cDateTime>.ToString

 

 

Core

NEW

 

Added property GET <cDateTime>.mSecond

 

 

Core

NEW

 

Added property GET <cDateTime>.MilliSecond

 

 

Core

NEW

 

Added property GET <cDateTime>.Second

 

 

Core

NEW

 

Added property GET <cDateTime>.Minute

 

 

Core

NEW

 

Added property GET <cDateTime>.Hour

 

 

Core

NEW

 

Added property GET <cDateTime>.DayOfWeek

 

 

Core

NEW

 

Added property GET <cDateTime>.IsLeapYear

 

 

Core

NEW

 

Added property GET <cDateTime>.Month

 

 

Core

NEW

 

Added property GET <cDateTime>.Year

 

 

Core

NEW

 

Added property GET <cDateTime>.Day

 

 

Core

NEW

 

Added cDateTime Class able to manage dates and time

 

2020/03/05

UI

NEW

 

Added TreeView property: <TreeView>.ImageList

 

 

UI

NEW

 

Added TreeView method: <TreeView>.InsertItem

 

2020/03/03

UI

NEW

 

Added TrackBar named control handling

 

 

UI

NEW

 

Added ProgressBar named control handling

 

2020/02/26

WCon

NEW

 

Added WCon_Inkey$ command (wait a keyboard event)

 

 

WCon

NEW

 

Added WCon_Inkey command (check and return key state without waiting)

 

 

WCon

NEW

 

Added WCon_Locate command

 

 

WCon

NEW

 

Added GET WCon_Cols property

 

 

WCon

NEW

 

Added GET WCon_Rows property

 

 

WCon

NEW

 

Added WCon_OnTimer command

 

 

WCon

NEW

 

Added WCon_Cls command

 

 

WCon

NEW

 

Added GET/SET WCon_Row property

 

 

WCon

NEW

 

Added GET/SET WCon_Col property

 

 

WCon

NEW

 

Added GET/SET WCon_Title property

 

 

WCon

NEW

 

Added WCon_Hide command

 

 

WCon

NEW

 

Added WCon_Show command

 

 

WCon

NEW

 

Added WCon_IsWindow command

 

 

WCon

NEW

 

Added WCon_PrintL command

 

 

WCon

NEW

 

Added WCon_Print command

 

 

WCon

NEW

 

Added WCon_Window command

 

 

WCon

NEW

 

Added new module: WCon

This module allows to have a special "console" like window.

 

2020/02/19

thinAir

Improved

 

Added support for WITH / END WITH folding

 

2020/02/06

Core

NEW

 

Added LARGE_INTEGER data type to be alias of QUAD

 

 

Core

NEW

 

Added LONGLONG data type to be alias of QUAD

 

2020/02/05

File

NEW

 

Added File_CopyEX function able to copy files and call a callback script function in order to show progress.

See example in \thinBasic\SampleScripts\File\File_CopyEX.tbasic

DirectuX

2020/02/04

thinAir

Improved

 

Code browser tree expand status will be saved at thinAir exit and reloaded when thinAir starts

 

2020/02/03

thinAir

FIX

000608

Scintilla editor set a default horizontal scroll width of 2000: https://www.scintilla.org/ScintillaDoc.html#SCI_SETSCROLLWIDTH

Added an option in theme options to set a new value: editor.options.scroll.width

 

 

thinAir

FIX

 

Improved horizontal scroll bar handling

ReneMiner

2020/01/23

thinAir

Improved

 

User tools menu will now have up to 20 tools

DirectuX

 

thinAir

FIX

 

User tools menu will now load configuration also from personal user tool file \thinBasic\thinAir\Tools\thinAir_Tools_Usr.ini

Before only official file \thinBasic\thinAir\Tools\thinAir_Tools.ini was used.

 

2020/01/22

I18N

Improved

000596

Key attribute inside Sentence node can now be in UTF-8 encoding

DirectuX

 

I18N

FIX

000596

Text inside Sentence node can now be in UTF-8 encoding

DirectuX

2020/01/21

Core

FIX

000616

SWITCH$ and SWITCH functions parsing runtime error when used with non scalar variables

DirectuX

 

thinAir

FIX

 

New scripts didn't get the focus inside editor.
Cursor was focused on previous source code window.

Petr Schreiber

2020/01/20

UI

NEW

 

Automatic creation of numeric equates included into a resource file .RC during script execution.

For example if .RC file will contain

#define txtPassword 1004

in your script you will be able to use the equate:

%txtPassword

having 1004 as value

 

 

thinAir

NEW

 

Code completion will now recognize Callback functions

 

 

thinAir

FIX

 

While typing inside text formatted as comment or number or string, code completion will not appear.

 

2020/01/13

UI

NEW

 

Added Listview method: <ListView>.SetItem

 

 

UI

NEW

 

Added Listview method: <ListView>.InsertItem

 

2020/01/09

UI

FIX

 

NMHDR.Code is now defined as DWord. Before it was defined as Long

 

 

UI

NEW

 

Added Listbox method: <ListboxView>.InsertItem

 

 

UI

NEW

 

Added Listbox method: <ListboxView>.AddItem

 

 

Core

FIX

 

RAWTEXT ... END RAWTEXT was adding an incorrect $CRLF at the end of the string

DirectuX

2020/01/08

UI

NEW

 

Added Label method: <Label>.ImageH

 

 

UI

NEW

 

Added Label method: <Label>.ImageW

 

 

UI

NEW

 

Added Label method: <Label>.ImageName

 

2020/01/07

UI

NEW

 

Added Listview method: <ListView>.InsertColumn

 

 

UI

NEW

 

Added anchor property for all named controls: <ControlName>.Anchor

 

SET only property, it can be changed setting anchor edge with OR.

Possible anchor edges:

%Anchor_Left

%Anchor_Right

%Anchor_Top

%Anchor_Bottom

 

Usage example in a textbox named control. The following are equivalent:

txt1.Anchor = %Anchor_Left | %Anchor_Right | %Anchor_Top

txt1.Anchor = %Anchor_Left or %Anchor_Right or %Anchor_Top

 

 

 

UI

 

 

Added Listview named control handling

 

2020/01/06

UI

NEW

 

Added Statusbar property GET/SET: <StatusName>.Parts

DirectuX

 

UI

NEW

 

Added Statusbar property GET/SET: <StatusName>.Text

DirectuX

2020/01/04

File

Improved

 

FSO_DeletebyAge function improved with option to move deteled files into the trash

DirectuX

2020/01/02

thinAir

FIX

 

ThinAir was putting a NULL char as last char when saving script source files.

Now removed

Petr Schreiber