What’s New in UniPlot 4.2.0

This page describes the changes made to UniPlot 4.2.0 since version 4.1.5.

New Features

  • Some of the dialog boxes can be resized using the mouse. (See UniScript function DialogBox.)
  • New dialog element: Tree-Control. (See UniScript function DialogBox.)
  • UniScript-Strings are now eight-bit-clean, which means a string in UniScript can now hold binary data. Before this modification a string ended at the first character with the code 0 (see String Constants).
  • Data Browser: The channel data can be displayed in rows or columns (see Browser=>Options).
  • Data Browser: The data records can be sorted in ascending and descending order. (See Browser=>Sort.)
  • Formula Interpreter log file. (See Browser=>Check Formula).
  • New Article in UniPlot-Tools. Two new tools are introduced ncgen.exe and ncdump.exe.
  • New SQLite version 2.8.16 (see Overview SQLite).
  • New File function File=>Merge Documents.

New UniScript Functions

  New Functions in UniPlot 4.2.0
GridGetSwapRowCol GridGetSwapRowCol checks if the channels are displayed in the Browser dialog in columns or rows.
GridReplaceFile GridReplaceFile replaces the data file displayed in the Browser dialog.
GridSetSwapRowCol GridSetSwapRowCol sets the display of the data channels in the data browser (channels can be displayed in rows or columns).
LayerMoveDataset LayerMoveDataset moves datasets to the specified diagram. Datasets can only be moved inside a page. The function can also be used to change the drawing order of datasets.
LayerMoveObjects LayerMoveObjects moves Objects to the specified diagram. Objects can only be moved inside a page. The function can also be used to change the drawing order of Objects.
OBJGetParentCB OBJGetParentCB returns the handle of the parent group object.
RBSetMillimeterEx RBSetMillimeterEx displays a millimeter grid in the rectangle object. The gridlines are drawn with the edge pen.
interpol The interpol function executes a linear interpolation for the given x-coordinates.
mem_alloc mem_alloc creates a scalar string of the given length.
mem_compare mem_compare compares two strings or string matrices which may contain 0-characters.
mem_compress mem_compress compresses a string which may contain 0-characters.
mem_get mem_get reads bytes from a string and converts the data.
mem_len mem_len returns the length in bytes of a scalar string or a matrix of strings.
mem_set mem_set sets the bytes in a string to values of a specified data type.
mem_uncompress mem_uncompress uncompresses a string that was compressed with mem_compress.
poly_poly_intersect poly_poly_intersect returns the intersections of two polylines.

Modified UniScript Functions

  Changed Functions in UniPlot 4.2.0
@f{labeldatapoint} Labels the data points of the original data with its y value.
DialogBox DialogBox creates a dialog box with static text, edit fields, list boxes, combo boxes, check boxes, a report list (list with multiple columns), a property list box, a group box, tree control and buttons.The dialog box can be configured to be resizeable (see Dialog control |F @ xxx_callback|).
GridGetConfigInfo GridGetConfigInfo returns a string vector with 6 elements containing the options, displayed in the option dialog box.
GridSetConfigInfo GridSetConfigInfo sets the data browser configuration.
LayerGetAllDatasets LayerGetAllDatasets returns the handles of all datasets.
MapLookup MapLookup uses a hashing algorithm to quickly find the map element with a key that exactly matches the given key.
MapSetAt MapSetAt means to insert an element in a map. First, the key is looked up. If the key is found, then the corresponding value is changed; otherwise a new key-value pair is created.
RegisterFunction RegisterFunction registers a function from a dynamic link library (DLL) to the UniScript symbol table. After a function is registered, the function can be called directly by UniScript.
base64_decode base64_decode decodes a string that had been encoded using the base64_encode function.
base64_encode base64_encode encodes data into the base64 format
binary_decode Is replaced by base64_encode.
binary_encode Is replaced by base64_encode.
fread fread reads data from a file.
sqlite_open Removed, use sqlite3_open.
strcode strcode returns the code values (numbers) of the given string.
strextract strextract returns a substring of its argument string.
strlen strlen returns the length of a string in bytes.

Bug Fixes

The following bugs have been fixed:

  • (ID334) The Save As Command in the editor always added the extension .ic. If a file name with a different extension was typed in, e.g. test.txt the file was saved as test.txt.ic. The function has been changed The extension will only be added to the file name if no extension is given.

  • (ID653) The call sqlite_open(“”) caused a memory access violation.

  • (ID660) Scrolling problem: Using the scroll bars white lines were added to the display.

  • (ID676) The Help button did not work in the Browser=>Interpolation dialog box.

  • (ID686) Open Data Browser => Channel-Interpolation => Cancel => Data is missing. Workaround: Reopen Browser.

  • (ID691) NC-Browser: Channels were missing if columns were moved and than a new NC file was selected without closing the dialog box. The error occurred if the new NC file had less channels than the currently open NC file.

  • (ID702) UTX-Filter: If an Excel file in the UTX format contained new line characters (Alt-Enter) inside a cell, e.g in a channel name, the file could not be imported correctly. Newline characters are now removed.

  • (ID707) Dataset copy: The datasets were copied to the clipboard in the order they were selected. Now they are copied to clipboard in the order they are displayed in the diagram. The same is valid for copying drawing objects to clipboard.

  • (ID716) If a dataset was loaded from a file, in which the file name contains a percent character (“%”) the data exchange failed.

  • (ID718) Exchange Datasource: During the data exchange using the Data=>Data Exchange (Page) function all placeholder values which could not be found in the NC file were replaced by an empty string.

  • (ID720) Stacked Diagram: When a y-axis was added to a stacked diagram the grid settings were set to default. Now the settings are set to default only when the grid is created. The y division is set to 1 centimeter when the grid is created.

  • (ID721) The user name could not be removed in Tools=>More Options.

  • (ID734) Akimaspline: The function used an invalid data point to calculate a coefficients. The result was that all points between the second last and the last original data point were set to 0. The error occurred irregular.

  • (ID736) Error in Exchange Data source (dx-Function). See Insert Datasets into a Template. If a data source had more than one option, the table created were incorrect.

    To fix is insert the following line to \uniplot\script\dx-main.ic:

    ssFile = sum(svPath[3:4]) + " {" + ssImportOptions + "}";

    before (line 133)

    ssImportOptions = strcat(ssImportOptions, ",");

    This bug is fixed in 4.2.0.

  • (ID740) The input of “def test()” in the command window can cause a memory violation error. The function is defined but invalid. Steps to create the bug 1.) Type “def test()” and press enter 2.) type ”;” 3.) function test() is invoked => Crash. The bug has been fixed.

  • (ID748) Style file (Tools=>Dataset Style Configuration): Umlauts and other special characters in style names are not handled correctly. 2. Error: If you create a style “abc” the name is displayed as 2D-abc=’name’. The name should have been displayed as name=‘2D-abc’. The bug does not occur if at least one attribute is added, e.g bar=‘1’. 3. Error: Style file name is not displayed (only 4.2.0 beta 1).