Internal Changes (27 December 2009)
- The weather's not so nice now, so here is a picture taken during the summer. It's Baltimore
Castle in County Cork in south-west Ireland:
- Happy Christmas Everyone! In case Santa didn't bring what you want, there's a new
Ubercode download with the latest bug fixes and improvements.
- There's not much to see from the outside, but I have spent some time tidying up the internals
and renaming the run time library files to prepare for the next release (v1.2). I plan to get this
out in January, and because it has taken a while all existing licenced customers will be able to
upgrade free of charge.
Registry Functions (30 November 2009)
- This month's photo is again taken from Durrell Wildlife (formerly Jersey Zoo). I wanted to see
if my camera could do closeups:
- This month I did some more work on the registry functions. There's a new function
RegKeyExists that checks whether or not a registry key exists.
- Also I improved the registry functions to work with binary data. They now work with the
registry types REG_BINARY, REG_DWORD, REG_SZ and REG_EXPAND_SZ.
- There's also a new download containing the latest improvements.
You're welcome to download the Trial Pack and try out Ubercode.
Ubercode connects to SQL! (10 November 2009)
- Ubercode can now connect to a Microsoft SQL Server database. This picture shows the SQL Server
- In the connection window, you choose the driver, the server, and the method of authentication.
You can select Windows authentication which logs onto the database using your current username and
password, or you can use SQL authentication which prompts you for a database username and
- After entering the details, you can test the connection (see the Test button). If the
connection is successful, the connection window returns a connection string which is used to
connect to the database.
- You can then open the database, run queries and updates, then close the database when you have
finished. I have tested this with a local installation of Microsoft SQL Server Express, available
as a free download from Microsoft. It should work with all versions of SQL Server (2000, 2005 and
- There are some sample programs Sql1 and Sql2 which show how to use the connection
string, and how to connect and retrieve some data.
- Download the Trial Pack now to test out the SQL connectors and the
sample database code.
Database Integration (3 October 2009)
- Durrell Wildlife (formerly Jersey Zoo) recently celebrated its 50th anniversary - here is a
picture of their gardens taken in the summer:
- There's a new Ubercode Free Download which includes the latest
improvements and developments. You can download this and test out Ubercode immediately.
- In terms of Ubercode the main developments this month have been extra code for database
integration. The first step is to add a new filetype (FILE_TAB) to Loadfile and
Savefile. This enables tab-separated files to be loaded and saved, and these files can
optionally have header rows and footer rows. A tabbed file stores a single data table. This new
code is a step towards capturing result sets from database applications.
- I also started work on a new class for SQL integration and a SQL login window. This will enable
Ubercode to connect to databases. The first one I have tested is Microsoft SQL Server Express which
is a good choice as it's available as a download from Microsoft.
- My plans are for Ubercode database integration to include SQL Server Enterprise, MySql and
Windows API functions (3 September 2009)
- More improvements and extra functions this month as the path continues to the next release:
- Registry functions - a new registry function RegGetAllSections allows all the
sub-sections from withing a registry section to be obtained.
- Information functions - extra functions GetSystemMetrics and
SystemParametersInfo have been created for obtaining useful Windows information from the
Windows API. For example:
- Screen saver timeout
- Check if the screen saver is available and is currently running
- Get or set the desktop wallpaper file
- Get the work area - the part of the desktop not covered by the taskbar
- Get the width and height of the primary screen
- Get the width of a vertical scroll bar
- Get the height of a horizontal scroll bar
- Get the caption bar height and the menu height
- Get the window border width and height
- Check if the Windows debug kernel is running
- Get the 3D border width and height
- Get the size of an icon
- Check if there is a mouse and a mousewheel
- Check if the computer is connected to a network
- Check if Windows was booted in normal mode or safe mode
- Find the number of monitors
- Communications ports - support has been added to enable serial communications ports
above COM9. You can test this out using the Comms example in the latest Trial Pack.
- Sample communications program - a new example program has been written to show all the
connected serial ports. It does this by calling Commopen and Commclose for each port
and checking the success status. If you run this on your laptop you may be surprised to see it has
no COM1 or COM2 port, but only a COM3 port!
- Version history - I created a list of the different
versions of Ubercode this to help people see what has been added to each release, and the dates of
- Sounds under Vista - Windows Vista does not support a 22 KHz 8 bit sample rate, which
caused some of the Ubercode sound files not to work. This has been fixed by resampling at 44
Generic types (19 July 2009)
- I apologize for not updating the web site sooner. My wife has just given birth to a beautiful
baby daughter and so my evenings have been spent changing nappies instead of writing software.
She's a bit too young to do any coding, but she is pretty good at making gurgling noises, staring
intently at her doting parents and filling up nappies.
- The delay in updating the website caused the Trial Pack to go out of date, so I have just
uploaded a new Trial Pack to fix this. If you downloaded a Trial Pack
which did not install, please try again with this new trial pack (email me if you have any
- Other changes to Ubercode include:
- Generic Out Parameters - this means you can declare functions with out parameters
of generic types, eg out returns:array[*:*]. Inside the function you can copy any array type
to the return value, then the function returns this value. Generics are not limited to arrays, they
can be record, union, array, list or table type. They are useful for functions returning tables
from databases, functions returning lists of data and for any situation where you don't know the
exact format of the returned data. The main reason they were added is for the database integration
I'm currently working on.
- Casting functions - all structured types now have casting functions (these are created
by the compiler so you don't have to do anything to make them work). The casting function takes a
generic type as its input and returns a value of the type as its output. They go hand-in-hand with
the generic types, as they are used to cast a generic value to a user-declared type. Again these
are part of the database integration.
- Maximum identifier length - this has been made longer and is now 40 characters. The
previous limit was too low and was causing problems.
- Usability of the IDE - The Program - Add Dialog window now checks the dialog
being added isn't called Main (not allowed since this would cause two functions called Main in the
program). Also fixed an issue in the Programs - Add Data Source window, where the imported
field names were mis-spelt.
Yet Another Newsflash (12 May 2009)
- The website is back to normal and I will respond to questions, emails and forum issues within
the normal timescale. Thank you for your patience.
Another Newsflash (2 May 2009)
- Over the next 10 days, it will take longer than normal for me to reply to questions and emails.
In the meantime there is a new Trial Pack to test out.
Newsflash (21 March 2009)
- Website move - To fix some performance issues with the website, the site is being moved
to another server under the same provider at 8pm EDT this evening. The website and forums may be
unavailable for a few minutes around this time.
Improvements to Developer Environment (8 March 2009)
- To get throught the cold winter months here's another sunny picture taken from when I was in
Perth. This is a giant sundial at Cottesloe beach:
The dial is the curved bronze part held up by the pillars. The markings on the dial take the time
of year into accout - this makes the sundial accurate to within about one minute which is pretty
good for a sundial.
- Other news - due to popular demand from an important future customer (you know who you are) the
Developer Environment detects if you're saving a class file under a different file name, and
changes the class name automatically. This avoids a confusing error that happens if you rename a
class without changing the class name.
- Also the "Getting started" topic has been rewritten to make it more relevant to new users.
There's information on installing Ubercode, reinstallation, and on writing basic programs.
- Also I added a new FindWindowHandle command which can search for windows by the window
class name, the window's title (caption), can search with or without case sensitivity, and can
limit the search to the current application or to all applications. This is based on the Windows
API FindWindow function with many extra improvements. FindWindowHandle is fully
documented in the help system.
- So what are you waiting for - download now and find how easy
Ubercode Forum (2 February 2009)
- Ubercode has a new forum Visit now to say Hello and to get answers
to all your Ubercode questions. The forum would not have happened without a lot of input from a
willing volunteer - many thanks Mike for prompting the forum and doing so much to help. Your
inspiration and persistence really got the forum going.
- Compiled new pre-release versions of the Professional pack and Standard pack for
version 1.2 - if you are a licenced Ubercode customer, you can get these from the download
- Fixed a bug in the dialog editor (error 615). 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. When the Microsoft IME is
active, it attaches itself to all the windows in the program and changes its owner window as the
program runs (which goes against Microsoft's best practices). In some cases the Microsoft "MSCTFIME
UI" and "IME" window classes stay in memory when the program ends, which stops it unloading. To fix
this I modified the core Ubercode library to allow for the IME.
- There's a new Ubercode Trial Pack which is bursting with
improvements So download now and get coding...
- Added documentation for the Communications functions - these are now a reliable and
tested part of Ubercode. They allow serial communications to most types of serial device and
there's an example program to experiment with.
- Updated the documentation regarding calling help files.