Ubercode Version History

 


Ubercode Version History

Version 1.2 Release (2010-02-05)

Version 1.2 includes the Professional Pack (v1.2.2006) and the Standard Pack (v1.2.2005). It has the following improvements:

  • The full path is now visible in the compiler progress window, in the Lmake window and in the Run - Info window. Previously longer file paths were being truncated.
  • Improved Msgbox to allow icons and standard usage of the Windows API MessageBox() function.
  • Also Msgbox includes a help button and an auto-close option.
  • Fixed an issue where a program compiled with full debug information caused the debugger to pop up when the EXE runs on another computer. The debugger no longer pops up when an application is run on another computer or if the sources are missing.
  • Add extra reserved words to prevent classes having the same names as the core run time library code.
  • Also renamed some of the core run time library code to prevent possible conflict with class names.
  • Allow US and UK English spellings. Eg ColorDialog / ColourDialog, ForeColor / ForeColour, BackColor / BackColour, TransparentColor / TransparentColour can both be used.
  • More US and UK English spellings. Eg DRAW_CENTER / DRAW_CENTRE can both be used.
  • Support for serial communications ports above COM9.
  • Added extra functions GetSystemMetrics and SystemParametersInfo for obtaining useful Windows information from the Windows API.
  • Fixed sound files (*.wav) so they work under Windows Vista.
  • Support for Generic Out Parameters, allowing functions to return out parameters of generic types (eg out returns:array[*:*]). Generic types can be assigned from user-defined types.
  • Increased the maximum identifier length to 40 characters. The previous limit was too low and was causing problems.
  • The Program - Add Dialog window in the Developer Environment checks the dialog being added isn't called Main (not allowed since this would cause two functions called Main in the program).
  • Fixed an issue in the Programs - Add Data Source window, where the imported field names were mis-spelt.
  • The Developer Environment detects when saving a class file under a different file name, and changes the class name automatically.
  • Created SQL Server utility functions in a new class SQLUTIL. This enables a SQL server connection dialog, and testing of connections.
  • Added the ability for Ubercode to connect to SQL Server (tested with SQL Server Express edition). In the connection window, you choose the driver, server, and method of authentication. You can select Windows authentication which logs onto the database using your current username and password, or SQL authentication which prompts you for a database username and password.
  • Added support for tabbed text files (FILE_TAB) to Loadfile and Savefile. This makes it possible to load result sets returned from SQL Server.
  • Allow tabbed text files to have headers and footers.
  • Added FindWindowHandle which searches for windows using the window class name, the window's title (caption), and can search with or without case sensitivity, and can limit the search to the current application or to all applications.
  • Fixed a bug in the dialog editor. Previously the dialog editor caused a string overflow when more than 80 to 100 control objects were added. Now you can add up to 255 control objects to a dialog.
  • Fixed a bug that happens when the Microsoft Input Method Editor (IME) attaches itself to a Ubercode program without closing itself when the program unloads.
  • Doubled the speed of the compiler. This was done by improving the way the compiler sends information to the Developer Environment when multiple classes are being compiled.
  • Ported Ubercode to Windows Vista. The main changes are defaulting to the correct help file type (CHM), setting permissions on the installation folder and changes to the installer.
  • IIf function has been added to Ubercode.
  • Type system includes type casting functions. This means if you declare a type Tsometype, the compiler automatically generates a casting function with the same name. This makes it possible to convert generic types and other structurally compatible types to values of Tsometype.
  • Filelist is improved to work with readonly, hidden and system files.
  • File attribute constants have been introduced and named to begin with FILEATTR.
  • Environ can get all the environment strings, in addition to getting the value of a single environment variable.
  • Added section to the help on How to use the registry. This provides an overview of the registry functions and terminology.
  • Added support for the REG_BINARY data type.
  • Added more registry functions: RegGetAllSections, RegGetSettingInfo, RegKeyExists.
  • RegDeleteSetting, RegGetSetting, RegGetAllSettings, RegSaveSetting These registry functions have been added and are in the documentation and the run time library.
  • Added example programs for setting up a timer control, capturing the output of a command line program and making a dialog window store its settings.
  • Errorhandler This function had a bug which allowed it to be called directly. This has been fixed, since the error handler is not intended for calling from user code.
  • The Developer Environment now saves its position when it exits, and restores itself to this position when it next starts. Also there is safety code that detects if the position is off the screen, and resets the position to the default if this happens.
  • The Arguments constant has been changed into the Arguments function for consistency (it was the only auto-declared constant in the run time library).
  • Improved Loadfile and Savefile. Now they consistently return an empty value if the filename is an empty string, is a non-existant file or has a size of zero.
  • Improved Loadfile and Savefile with the ability to load and save XML to multi-dimensional arrays.
  • Added support for RS-232 (Serial Communications). This connects a computer to electrical devices such as PLCs (Programmable Logic Controllers), test and measurement equipment.
  • Added sections to the help How to use the communications port and How to write a communications program. This provides a simple introduction to serial communications.
  • Added a new Program - Add Dialog Window command to the Developer Environment. This makes it possible to import individual dialogs from RC (Resource Compiler) files and helps re-engineer older style C/C++ applications.
  • If a pushbutton had the default status, and disabled itself and other pushbuttons in the same dialog, the default status would sometimes be incorrectly applied to one of the other disabled pushbuttons. This has now been fixed.
  • Fixed a bug in the dialog handling code that caused static controls with the SS_SIMPLE style to be incorrectly interpreted as icons. Note the bug was unlikely to occur, as the SS_SIMPLE style is seldom used.
  • The Developer Environment command Tools-Test Dialog had a usability problem when testing dialogs with off-screen X,Y coordinates. Although the Developer Environment was working properly, it seemed to be non-responsive because the dialog was not visible. To fix this, the Tools-Test Dialog command automatically centers any dialogs that are off the edge of the screen, and shows a warning message.
  • Fixed a bug that happened with external resource files that had icons using the old-style memory options (PRELOAD, LOADONCALL, FIXED, MOVEABLE, DISCARDABLE, PURE, IMPURE). These memory options are obsolete and are now ignored.
  • Improved the Ubercode installer to use Inno Setup. This makes the install file about 30% smaller, speeds up the install, and makes it possible to safely install multiple versions of Ubercode without overwriting older versions. The same version can also be re-installed to repair an existing installation.
  • Fixed a bug in the debugger where if you specified CHM files as the preferred help type, it would still try to display a HLP file.
  • Removed ERR_LIST_EMPTY. This error is no longer required as there is no problem in deleting from an empty list.
  • Fixed up LMAKE (command line tool) so it shows an error message if incorrect command line parameters are used.
  • Fixed a compiler bug that occurred if too many list types had the same component type and an iterator function was used.
  • Increased the default maximum number of symbols and increased the number that may be inherited from a compiled class to 1000.
  • Improved the code editor to hilite Basic, SQL, Batch files and resource files in addition to Ubercode code.
  • Also added highlighting for Inno Setup ISS files.
  • Updated the help file to include images from Windows XP wherever possible.
  • In some cases the help file generator caused text to wrap wrongly when a left aligned bitmap is followed by some text. This has been fixed.
  • Made Ubercode help available in dual formats (CHM and HLP). Both help files contain the same information, and the Developer Environment can select which format to use.
  • Make Ubercode help available in HTML format.
  • Added two new functions Winhelp and Htmlhelp and supporting constants to the Ubercode run time library. This makes it possible to call up both help systems in the same way.
  • Internal improvements to the run time library, to standardize on buffer sizes for most internal functions.
  • Produced the Ubercode Academic Version. This license is for CDs shipped to schools and colleges for class study over the course of an academic year.
  • Updated the main help file by adding a Contents View for the HLP format. The HLP Contents View opens up in a separate window and provides a top-level view of the entire help file.
  • Fixed a bug in the compiler which occurs when floating point literals were compiled under non-English locales.
  • New functions ArraySort and ListSort have been added to sort arrays of strings and lists of strings.
  • The debugger has been improved to show the current length of dynamic strings, the current bounds of resizable arrays, the maximum size of fixed size strings and the bounds of fixed size arrays.
  • Improved Meminfo so it correctly reports the amount of free memory when run on computers with more than 2GB of virtual memory. Before this, a signed integer overflow occured which incorrectly reported memory over 2GB as a negative value.

Version 1.1 Release (2006-01-19)

Version 1.1 includes the Standard Pack (v1.1.0121) and the Professional Pack (v1.1.0119). It incorporates the following improvements:

  • The Professional Pack has built-in support for an installer and can automatically create self-installing EXE files.
  • Added menu commands to help distribute Ubercode created EXE files to other computers.
  • Added a new internal library file comlib which contains interfaces to COM objects. At the moment I have added IShellLib and IPersistFile, the idea being to make it possible to create links (short cuts) using standard Ubercode functions.
  • Added a new example program, based on the Moon-lander game originally written in Basic.
  • Minor usability changes. In the Professional Pack Developer Environment, if you go into the Tools - Options - Customize Program Version dialog, the compiler settings are automatically set to ensure the creation of the version information.

Version 1.0 Release (2005-06-18)

Version 1.0 of Ubercode is the first full release. It includes the Standard Pack (v1.0.0615) and the Language Reference Manual. It incorporates the following improvements:

  • Fixed a bug in the part of the compiler that handles structured expressions - numeric type conversions were being handled wrongly.
  • Re-ran the code and error validation tests to check they worked after changes to the compiler.
  • Control arrays of Menuitems have been improved to include all the menuitems in a single popup menu. This makes them more consistent.
  • The select statement has been improved to allow ranges of menuitem objects as case labels. This makes it easier to handle menu selections based on popup menus.
  • When using the Developer Environment to add or remove functions from the code window, functions in the code window were sometimes not found. This occured if functions had characters in common at the end of their name, for example MyFunction and SomeFunction. This has now been fixed.
  • The output of the Systeminfo function has been made clearer. For example when run under Windows XP it shows "Windows XP" v5.1 instead of "Windows NT" v5.1.
  • A bug was found in SetCaption - if the caption of a Menuitem was changed, the menuitem would be re-enabled and un-checked. This has been fixed, and the previous checked (MF_CHECKED) or disabled (MF_GRAYED) state is kept.
  • The maximum size of a single linear memory block has been increased to about 4MB. Larger structures are possible using multiply allocated descriptors. As a result of the memory block increase, the maximum number of lines in a class where the debugger can place a breakpoint was increased to 8000. This is the internal MAX_LINES constant. Also Redim was enhanced to allow a Redim Preserve option to make large resizable arrays more efficient, since the existing data does not require deallocation.
  • Fixed a bug where the manifest file was not included in the list of files when packaging files for re-distribution.
  • Improved the compiler to detect an obscure error. If a function is declared using a prototype, then called, then fully declared with pre and/or postconditions, the function call should not be allowed because the pre / postcondition is unknown at that point (to fix the error the pre/postcond should be moved to the prototype).
  • Fixed up minor bugs in the Dialog1 and Dbfiles1 examples that caused them to fail to find icons and files.
  • Renamed most of the bitmaps used by classes so they are prefixed with the class name. For example bitmaps used by the Dbedit class are named dbedit_file1.bmp etc.
  • Improved the program editor so that if it tries to open a main class on a read-only drive (eg a CD-ROM) it returns a useful error message.
  • Fixed an obscure compiler bug that prevented a class compiling if a private function used preconditions or postconditions with user-defined types.
  • Re-ran all code and error validation tests to check they worked after the compiler changes.
  • Fixed a bug in the dialog editor. If control objects used relative paths to specify files used with the Picture property (eg Picture = dir\file.bmp) the pictures were not shown properly when using the Tools - Test Dialog command or (in some cases) when the program was run.
  • Improved the compiler to report an error if programs use dialogs with non-existent bitmaps.
  • A new example program has been added to show the different control types available with Ubercode. The example is controls1.cls and you can browse the examples using File - Open Examples from the Ubercode Developer Environment.
  • The Learning Ubercode manual has been simplified, re-checked and made slightly smaller so it sits properly in the DVD cases.
  • The startup screens in all Ubercode Packages has been made clearer. You can now see the package description, and the use-by date in the case of the Trial Pack. The Trial Pack also includes buttons for updating to a regular copy.
  • The Help - About command in the Developer Environment shows the details of the computer it's being used on, and includes a Copy Info button for copying the details to the Windows clipboard. This is useful when contacting Ubercode technical support.
  • Fixed a bug in the Dialog font handling code when graphics and control objects were mixed in the same window. If the drawing font was changed, this would change the control font causing the controls to be redrawn using the SYSTEM_FONT. The fonts used with Drawtext are now independent from the control font.
  • Fixed a bug in the dialog editor. If the Property editor was used to delete the Fontname property of the dialog, the Developer Environment would halt with ERR_WIN_FONT (712). This has been fixed by defaulting an empty Fontname string back to the default "Microsoft Sans Serif" font.
  • The common dialogs have been tidied up by the addition of two new ones. OpenFileDialog prompts for one or more files, and OpenFolderDialog prompts for a folder.
  • Fixed a bug in the compiler. In some situations the 3rd pair of bounds of a 3 dimensional array were not being fully checked - this would have caused some invalid array bounds to be detected as a run time error instead of a compile time error.
  • The format used by the Time() and Filetime() functions has been changed to "YYYY-MM-DD hh:mm:ss.dd" where YYYY is the year, MM the month (01 to 12), DD the date (01 to 31), hh the hours (00 to 23), mm the minutes (00 to 59), ss the seconds (00 to 59) and dd the fractions of a second (00 to 99).
  • The Program-Add Resource File command has been improved to work with RC files and DLG files from other applications (primarily C/C++ programs). You can now automatically create a class that uses an existing RC or DLG file.
  • In the Developer Environment, display areas for filenames have been made larger, and filenames will wrap where necessary.
  • If the dialog editor renames a dialog, the project window is automatically updated, and the code editor prompts whether to rename the event handler.
  • When a new dialog is added to an application, the dialog editor checks the dialog name is unique among all the classes, and automatically creates the event handler.
  • The Example Browser dialog (File - Open Examples) now indicates which is the main class.
  • The Run-Start in Debugger command has been improved so it automatically switches debug information on and compiles the minimum number of classes necessary.
  • The Run-Info command has been improved so it shows which classes have been compiled with full debug information.
  • Added the Example Browser dialog, allowing a view of all example programs on disk. The browser gives a summary of each program and the files used. Examples may be compiled and run directly from the Example Browser.
  • Under Windows 2000 / Windows XP, printer names consisting of 32 characters or more caused a printer bug. The bug has now been fixed and names may be up to 255 characters long.
  • The default installation folder has been changed to c:\Program files\Ubercode to be consistent with the Windows installer guidelines.
  • Fixed a bug which sometimes caused the focus to be restored incorrectly in a group of radio buttons.
  • Fixed a bug in the dialog editor which prevented Bitmapbutton objects from correctly saving the Transparentcolor property. The bug was caused by an error in the conversion code that saved property lists back to the RC file format.
  • Fixed a bug in the installer. The installer now correctly detects when the exact same version of Ubercode is being installed twice, and generates a warning message.
  • Fixed a compiler bug. The compiler now correctly reports an error when function main() is declared without the public modifier.
  • Fixed a run time library bug whereby it was possible to select disabled menuitem objects using menu accelerators (short cuts), in the situation where the menuitem was enabled but its parent was not.
  • Changed the structure of Ubercode classes so the division of a class into exported and private sections is no longer required. Instead classes use public and private keywords as modifiers on declarations which is much easier.
  • To support earlier classes that previously separated the exported and private sections, prototype declarations are allowed. This makes it possible for interface declarations to be preceded by public and for the full declaration to be repeated later on in the same class (also using the public keyword).
  • Changed all support code to use the new public / private format.
  • Re-ran all code and error validation tests to check they worked after the compiler changes, revised the Language Reference Manual (LRM) to bring it up to date with the new syntax, revised and re-tested all the example programs so they use the new syntax and updated the Learning to Program manual to use the new syntax.
  • Fixed a bug with exec + EXEC_WAIT if the executed program was shown in a minimized state. Previously the focus was left on a button in the Ubercode program even though the parent window had been disabled.
  • If the debugger was deactivated when the focus was on a push button, the button sometimes kept the focus. This is related to the previous bug, and has been fixed.
  • Improved descriptions of errors occurring when duplicate constants, types or functions are used in a class. The error messages now show the original and the duplicate line numbers, to help error tracking.
  • Symbol files use CSV format instead of structured expression format.

Release Candidate 2 (2003-10-30)

Ubercode release candidate 2 incorporates the following changes:

  • Changed the file extension of source files to .cls
  • Improved the SplashDialog() in Commdlgs to handle transparent bitmaps and text with fonts and color attributes.
  • Fixed a Bitmaputton bug which prevented Unload() from being called from the Command event. Ubercode buttons should now look fully native under Windows XP.
  • Changed the compiler so that source files now use class ... end class for their outer structure.
  • Fixed an error in the resource file parser which prevented some valid resource files from loading.
  • Fixed a compiler disambiguation problem which prevented a main class having the name "app".
  • The compiler supports product and version resources (VERSIONINFO) and includes a property editor to change the version details.
  • A version numbering system has been applied throughout Ubercode. Version and release numbers are used as follows:
    • displayed in the install screen
    • displayed in Help-About
    • included in DLL names
    • included in window class names (WNDCLASS names)
    • included in version resources
    The versioning allows multiple Ubercode programs from any version to run without conflict.
  • The Program-Input files and Program-Output files dialogs correctly show all the files.
  • Bugs in the manifest file were fixed, and a compiler option was added to suppress the manifest file.
  • Added highlighting for VB script and VBA to the Developer Environment.
  • Added transparencies to the Bitmapbutton object and to the Drawpicture function. Bitmaps can now include a color which is drawn transparently, and icons are drawn using their transparency mask.
  • Changed Bitmapbutton objects so they are drawn using the standard Windows button color.

Release Candidate 1 (2003-05-01)

The initial Ubercode release candidate includes the following:

  • Developer Environment
  • Dialog editor
  • Compiler
  • Help system using HLP files
  • Printed manual (available as an optional extra)
  • Distributed on CD only