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()
- 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
- Also renamed some of the core run time library code to prevent possible conflict with class
- Allow US and UK English spellings. Eg ColorDialog / ColourDialog, ForeColor /
ForeColour, BackColor / BackColour, TransparentColor / TransparentColour can both
- 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
- 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
- Fixed an issue in the Programs - Add Data Source window, where the imported field names
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- Internal improvements to the run time library, to standardize on buffer sizes for most internal
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- Fixed an error in the resource file parser which prevented some valid resource files from
- Fixed a compiler disambiguation problem which prevented a main class having the name
- 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:
The versioning allows multiple Ubercode programs from any version to run without conflict.
- 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 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
- 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
- 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
- Help system using HLP files
- Printed manual (available as an optional extra)
- Distributed on CD only