Please note that some of the links in these meeting summaries
may no longer be valid
Using the Delphi Spring Framework - Josh
Josh has been using the Spring Framework extensively and talked about some of its
container classes. The framework is open source and available from the Spring4D BitBucket page. Its use is
also documented in Nick Hodges' new book Coding in
Dependency Injection - John
John talked about Dependency Injection, a software design pattern that allows the
removal of hard-coded dependencies and makes it possible to change them as
required. This can be used to load plugins dynamically or to choose stubs or mock
objects in test environments vs. real objects in production environments.
RTF from Scratch - Tony Bryer (Greentram
Tony talked about RTF (rich text format), using Word to produce RTF templates
with placeholders which could then be filled using a Delphi program and his own
experience of producing RTF formatted output from within his programs. Edited version of Powerpoint presentation (515kB: links on
Operator overloading - Robert Pallot
Operator Overloading was introduced in Delphi 7 for .Net. Delphi XE added methods
and properties to records, allowing VCL programs to use operator overloading.
Robert showed how this can make for readable code, using matrix operations as an
example. Presentation and source
Polygon Clipping as applied to ECAD - Brian Watson (Desktop EDA)
Brian gave a presentation on the internals of his PADS ASCII Modeler program
which turns PADS ASCII data into a 3D model of a printed circuit board. Product page
A Delphi Web Application Framework -
Roger Connell (Innova Solutions)
Roger talked about the Object Framework used to implement a WEB front end for
ADUG member interactions on the ADUG web site. Presentation,
source code and further documentation
OAuth Protocol - Grahame Grieve (Health
Grahame provided an overview of the OAuth Protocol, including a walk through of
the steps to register a Dropbox API application. He then followed that up with a
live Delphi demonstration, reading and writing data to a file located in a
Dropbox directory. Powerpoint
presentation (2.4MB) and sample code
Lachlan Gemmell (ADUG President)
The first part of the meeting was taken up with the AGM at which new Rules were
passed. Lachlan then gave a presentation on real world usage of Generics and
Anonymous Methods. Check out Lachlan's TIndex site pages on Generics Anonymous Methods
Multi-platform development - Damien
Damien showed a sports coaching program he had written using Delphi + FireMoney
running on iOS, outlining some of the design decisions he had made, then showed
the same code recompiled to run on an Android tablet.
SQLite - Lance Collins
Lance has used Delphi since Delphi 2 to maintain and analyse share market data.
He's moved from storing data in typed and INI files to using a database. His
decision to use SQLite - open source, thus free - was not the result of a study
of all available options but it's working out OK. Outline of talk (11kB) Source code (16kB)
A different clock - Robert Pallot
Robert showed off what can be done with FireMonkey by demoing his clock - five
intermeshed gears rotate, three showing the hours, minutes and seconds. The gear
shapes were created using Inkscape, an
open-source vector graphics editor. Inkscape's output is then pasted into a
FireMoney TPath component's Data property, generating the shape. To make the
clock function all that's required is to change each gear's rotation angle by the
appropriate amount on each timer tick. Source code
and compiled exe (2.4MB)
LMD Tools - Andrea Coffey (Miss
Andrea chose the LMD Tools 2013
component suite as a symposium prize this year and shared her experience of this
product. As it includes 480 components Andrea focused
on the TLMDGrid.
ADUG Web Statistics - Roger Connell
Roger shared some of the ADUG web log analysis statistics with us, in particular
which pages draw the most hits and where visitors come from. Check these out
of site All
URLs Year To Date
Barcodes, Photo Manipulation via Delphi
- Geoff Smith (Tyson Technology)
Geoff talked about using barcode recognition and face detection to manage the
many images generated by school photographers. Useful resources: Generating
barcodes: TZintBarcode; reading barcodes and QRCodes: ClearImage Barcode SDK
(free); face identification: Windows
Live Photo Gallery API
Delphi and .NET - Adam Johnston
Adam talked about accessing the .NET framework from Delphi using the open source
JVCL library. For a summary of Adam's presentation with some examples see this
post. The examples can be downloaded from GitHub.
Anonymous Methods - John
John gave a presentation on anonymous methods, first introduced with Delphi 2009,
also mentioning generics and RTTI and how they can be used with anonymous
methods. The talk was illustrated with a series of examples
(download 99KB). John also drew attention to the system.generics.defaults
unit included with Delphi which contains many useful type definitions.
Further to John's talk, during his symposium presentation Malcolm Groves
showed how anonymous methods could be used to produce better code with a class
accepting one method in production code, and another from a unit test
HexEdit and HexEdit Pro - John
McDonald: John gave a short presentation of HexEdit (free) and HexEdit Pro (US$50). Both do far more than the
names suggest. Among the features demonstrated were the colour coding of file
contents depending on byte values, making it easy to pick out text within a
binary file, and the template option used to unpick file contents.
Constant Builder - Jason Tolley - ROK Technology P/L: Jason has
developed his own utility called 'Constant Builder', a tool that aids in the
creation of records of constants and arrays of records of constants. These values
have become more and more complex and he uses dynamic arrays of record constants
and sometimes dynamic arrays of dynamic arrays of record constants. The task to
create and manage these can be tedious. Hence 'Constant Builder'. The resulting
constant declarations can then be compiled into the application instead of using
additional data files for configurations, resulting in a single EXE in many
Delphi Remote Debugging - Richard King: Richard demonstrated debugging
a 64-bit application running on a 64-bit computer from a 32-bit computer. To do
this you need
PAServer running on the remote machine and need to set up a remote
Containers and Collections - Roger
Connell and Richard King
Roger spoke about container classes, focussing on TStringLists, linked lists
and the library he had built to support dynamic arrays. One useful idea was to
build a helper application to generate large amounts of random data rather than
using real data and running the risk of compromising confidentiality. PowerPoint
Richard focussed on the TDictionary class which first appeared in Delphi 2009
and its use in combination with CSV files.
Delphi.about.com page on using TDictionary
Mobile Studio - Damien Bootsma
Damien gave a demonstration of building an application using the current beta
version of Mobile Studio
Web GL Game Development - Josh Weberruss
Josh and TJ demonstrated building a multi user browser based game using
Delphi Containers - Richard King
Richard gave an overview of on the various types of containers including
arrays and lists as a precursor to a full session on containers in January.
How to make Data Entry Operators happy!
- Noel Lodge
It seems Noel has always looked for ways to use automation to improve life.
Noting that data entry can be pretty boring and quite repetitive he talks about
simple ways applications can help improve things and in the process increase
Noel demonstrated a number of the techniques he uses in his Open Office based
application, some of which are quite basic and others more complex. All of them
have the effect of making the operator happier and more productive and are
directly applicable to data entry applications developed in Delphi.
The demonstration of the techniques in the application provided a better
insight but the slides Noel used give many hints so they are published here
Remote Debugger - Richard King, Andrea Coffey
We had planned for Brian Watson to give a demonstration of debugging a 64 bit
application from a 32 bit VM on the same machine followed by a physical machine
to machine demo.
Brian had an unfortunate altercation with a Stanley knife and so we tried for
a demo from a PC to Andrea's Apple. While logistics defeated this attempt it did
demonstrate some of the issues likely to be encountered when setting up remote
debugging between physical machines especially when one is a MAC.
We will program this topic again early in 2013
AGM + Mercurial version control -
After the AGM Lachlan introduced us to Mercurial , a free distributed (i.e. no
server required) version control system. Mercurial itself is a command line
application but TortoiseHg, a
shell extension, provides a user-friendly interface. If you want to use a server,
BitBucket offers this and is free for up to
TMS Scripter Studio Pro - Tony Bryer
Tony outlined how he used TMS Scripter Studio Pro
to add scripting options to his EuroBeam program.
Interesting components and other
Roger Connell introduced Addict Spell spell checking
from Addictive Software. Jim Duff talked about MarshallSoft Computing's FCE4D - FTP Client Engine for Delphi,
using it to make connections to a web page, and send up selected files to it.
Brian Watson gave an overview of Delphi
scripting in the Altium product. Roger Connell talked about how delving into
XE2 3D component design has resulted in a component '3D Pipe' which
is interesting but is not currently useful.
64-bit Applications - Richard King (Creative Analytics)
Richard gave an account of his first attempt at moving a 32-bit application to
64-bit, looking at how the compiled code differs and how the 64 bit debugger
works from the 32 bit IDE.
Object Pascal - Andrea Coffey (Miss Programs)
Registration Free Activation of COM Servers - Brian Watson (Desktop
Registration-free COM is a platform feature of great interest to enterprises
with locked-down servers and applications isolated on shared infrastructures. It
allows you to install a COM server without writing to the registry.
Open Office - Noel Lodge
Noel demonstrated the capabilities of the Open Office Database (Base)
Delphi and the iPhone- Damien Bootsma
Damien gave an excellent hands on introduction to the use of XE2 to generate
iOS applications. His power point presentation is here.
Programming Challenge - Richard
The challenge was to write a generalized program which would read a 5000 line
csv file and enable the user to query the data. The example file provided by
Richard is here.
Half a dozen of us rose to the challenge, which required homework! An interesting
exercise which revealed a range of approaches, from Noel Lodges use of Open
Office - required no work! to Roger's object database (of course!).
Chinese Characters and Delphi- Alan
Alan Tan is one of those who was hanging out for the introduction of Unicode
into Delphi. His software makes use of Chinese Characters and he agreed to give
us an insight into his world. He covered:
- Introduction to Chinese Characters
- Introduction to Unicode
- Chinese Characters in Unicode
- Unicode in Delphi
- The User Interface for Chinese Characters
- How to Sort Chinese Characters
- What is Pinyin?
- What is stroke count?
- Software requirements to make use of the Chinese Characters in latest
Unicode ver 6.00
- Chinese Characters and Delphi
- Demonstration of Chinese Character in a Delphi Program
- A look at the source of the demonstration program.
Alan provided many useful references on the subject. Alan's presentation in
Coding a Simple Utility Function- Don
function IntToWords(const Value: Cardinal):
//IntToWords( 123456 )
//'one hundred and twenty three thousand four hundred and fifty
Either beforehand or on laptops at the meeting the above function was worked
on, and then each was looked at in turn. Three of them are here for you to peruse, any others I
receive will be added.
Refactoring - John McDonald
John demonstrated the use of the refactoring support facilities in Delphi,
particularly rename and extract method, and compared them with similar support
offered by third party tools ModelMaker, Code Explorer and Castalia.
Playtime with Firemonkey - Roger Connell
and Richard King
This meeting was billed as an opportunity to "allow anyone who has done
anything with Firemonkey to share their experience..".In the event it was a
two part presentation by Roger and Richard respectively. Roger focussed on the
issue of converting vcl forms to Firemonkey, while Richard gave a fascinating
rundown on his exploration of 3D, which culminated in a windfarm with turning
blades. You can read more about this in Richard's blog post on the ADUG blog site
We were inspired by an event organized by the Python User Group called
'Code Wars'. The
idea was to have the meeting break up into small teams, in most cases two, each
with a lap top, and for all teams to tackle a sequence of basic problems. On
majority completion, compare results, discuss, and move on to the next problem.
Problems were kindly generated by Glenn Crouch, and presented for the first time
at the meeting. Interesting and fun.
Reports were received, a rule change in recognition of the demise of cheques
and the rise of electronic banking was passed, and a new committee was
approved (Since the number of nominations for committee and ordinary committee
member positions equalled the number of positions, all were 'elected''. For
details see the minutes, wherever they might be.
Cycling Metrics Software - Phil Sheppard
In addition to being the MD of Creative Analytices Phil is a cycling
enthusiast, read amateur racer, and he takes a scientific approach to monitoring
and managing his training. This involves a power meter, various sensors and a
computer on his bike, and uploading from the bike computer to his desktop for
analysis. Phil demonstrated software he's created to help him with the task of
recording and assessing progress and performance.
Building Design Software- Mike Connell,
Pryda manufactures timber trusses and the various components thereof.. Mike
demonstrated the software they give away to their clients. This was the most
impressive software demonstration I've ever seen. It designs the roof and floor
trusses for multi floor buildings, showing a complete 3D view and everything down
from there, including hardware requirements and material cutting requirements. It
was fast, elegant, robust and apparently complete. Mike is an engineer who has
presided over the evolution of this software over 30 years, starting with some
basic calculations. Much of the work is still done by Fortran routines, with
current GUI requirements done using Visual Studio. Database is Access, with
Firebird due to replace it.
Under the hood, Part 2 - Tony
Tony added to his January presentation with more detail
on his newest application, EuroBeam, discussing some of the third party tools and
components used, including TMS ,
eDoc PDF generation eDoc
PDF generation and MadExcept exception reporting
Pascal Analyser: Tony demonstrated the use of this tool from Peganza
RTTI Past and Present - Lachlan
Lachlan gave a clear and methodical presentation of RTTI, comparing the
syntactically obtuse older version with the new and improved model introduced
Smart Comboboxes etc- Don Macrae, Roger
Don demonstrated and code reviewed a module which took a dataset with names as
an argument and used a listbox and an edit on a frame to allow selection by
typing (auto completion) or clicking.
Roger's code was more involved but the details escape me. I must talk to him
about that. Watch this space!
Reading data from Delphi code using C# -
Brian took us through the process of implementing a Collection in a COM
server. This allows us to expose the data contained in something such as an
object list to the outside world. He then demonstrated how to access the this
data from C#, and touched on the contortions involved in implementing an event in
a Delphi COM server
Delphi Demos - JSON Viewer - Peter
Peter gave us a very clear description of JSON - 'the fat-free alternative to
XML', and to the way it is supported in Delphi, since D2010 and XE, and
demonstrated the JSON viewer, included in the Codegear demos folder in the
DataSnap directory. Peter's presentation may be downloaded
Delphi Demos: Inter Process
Communication - Don Macrae
Don's previous presentation on this topic, in November, reviewed the demo
'IPCDemo', as distributed by Borland. IPCDemo implemented an approach they called
'shared memory', based on Windows File Mapping objects. This time, Don
demonstrated how the same demo could be implemented using what he suggests is the
more straightforward approach, using Windows Pipes. Demo project page is here.
Using the Google Translate API from Delphi - Richard King
Richard demonstrated the use of this API from Delphi, making JSON requests and
Under the Hood- Tony Bryer
Greentram Software, Tony's business, derives its revenue from an application
which allows engineers to establish the correct size of steel beam for a span and
load. Tony told us the story of this business, from 1979 when, as a London
Council building inspector, he took out a loan to buy a Commodore PET, through to
today, based in Melbourne, with the program running on Delphi XE and still