About Us
Mailing List
Reference Papers
Apply to Join
Delphi Jobs
Special Offers


Meetings: Next Meeting
Jan Feb Mar Apr
May Jun Jul Aug
Sep Oct Nov Dec
Jan Feb Mar Apr
May June July Aug
Sep Oct Nov Dec
Jan Feb Mar Apr
May June July Aug
Sep Oct Nov Dec
Jan Feb Mar Apr
May June July Aug
Sep Oct Nov Dec
Jan Feb Mar Apr
May June July Aug
Sep Oct Nov Dec
Jan Feb Mar Apr
May June July Aug
Sep Oct Nov Dec
Jan Feb Mar Apr
May June July Aug
Sep Oct Nov Dec
Jan Feb Mar Apr
May June July Aug
Sep Oct Nov Dec
Jan Feb Mar Apr
May June July Aug
Sep Oct Nov Dec
Jan Feb Mar Apr
May June July Aug
Sep Oct Nov Dec
Jan Feb Mar Apr
May June July Aug
Sep Oct Nov Dec
Jan Feb Mar Apr
May June July Aug
Sep Oct Nov Dec
Jan Feb Mar Apr
May June July Aug
Sep Oct Nov Dec
Jan Feb Mar Apr
May June Jul Aug
Sep Oct Nov Dec

Sydney Meetings


May 2014

XE2 to XE6 for VCL Developers -
Lachlan Gemmell has been trawling through the "What's New" pages and VCL source for XE6 down to XE2, compiling a list of the new features and enhancements available for VCL development. He'll give a whirlwind tour of what he's found that should reveal at least one or two hidden gems for any VCL developer using recent Delphi versions.

FireMonkey for VCL programmers -
In this short presentation we will things to look out for when first moving to FMX. As a practical demonstration Linden will be implementing a simple property inspector in FMX.

April 2014

FireDAC SQL Update -
The FireDAC components have become Delphi's main method to talk to different databases on different platforms. In this talk we take a close look at the options to optimise the SQL generated to update a dataset. We shall use the monitor to see what queries and are generated by TFDQuery on the fly and how we can tweak them.

Custom Property Editors -
Ever needed a property editor or similar in your VCL app? If so, this may be for you. A short dicussion on how to add standard and custom editors to a virtual treeview.

November 2013

Principle Languages - How to Make and Communicate Design Decisions -
Just like patterns, software design principles or "rules of thumb" are a form of experience reuse. Some of these principles are well known and accepted (KISS, DRY, SOLID, etc.) others are rather unknown. But there are dozens and probably hundreds of those principles, so which are the interesting ones? And the even more interesting question: How can they be used and how do they influence each other? This talk shows how to use these principles for making design decisions on a comprehensible foundation and how to communicate the underlying reasons. Furthermore is presented, a wiki which documents, discusses, and interconnects software design principles.


December 2013

Building simple applications for the Raspberry Pi -
Simple DirectMedia Layer (SDL) is a graphics engine that is used in the likes of classic games like Doom and Quake and media players like XBMC for the Raspberry Pi. As it is a multi-platform engine, applications can be developed using Delphi on Windows then transfered to a linux system, re-compiled under FPC and run. Hence the full features of the Delphi IDE can be used for development.

November 2013

Principle Languages - How to Make and Communicate Design Decisions -
Just like patterns, software design principles or "rules of thumb" are a form of experience reuse. Some of these principles are well known and accepted (KISS, DRY, SOLID, etc.) others are rather unknown. But there are dozens and probably hundreds of those principles, so which are the interesting ones? And the even more interesting question: How can they be used and how do they influence each other? This talk shows how to use these principles for making design decisions on a comprehensible foundation and how to communicate the underlying reasons. Furthermore is presented, a wiki which documents, discusses, and interconnects software design principles.

October 2013

Delphi X5 Android support - looking under the hood -
Damien showed some of the new Android features of Delphi XE5, such as wrapping native Android API calls, showing what features are available on your Android device with the DeviceManager and the REST client components in a bit more detail.

September 2013

Supporting SSL/TLS with SecureBlackbox -
SecureBlackbox is a suite of software components that allows developers to add strong security to their applications to protect binary data, files, documents and e-mails. Jared will show us how to use the SecureBlackbox components to encrypt communications and generate X509 certificates.

August 2013

A look into ICS -
Internet Component Suite (ICS) is an alternative to Indy consisting of various components and applications that leverage the power of non-blocking asynchronous techniques for IP and internet communications.

July 2013

Five Eyed Hand : A trip through the sourcecode of a real Delphi XE4 iOS app -
There are lots of samples that ship with Delphi XE4, and they're great for showing how to do one particular thing. However, sometimes you want to see an example of a complete App. During the XE4 beta program, Malcolm has been writing a showcase app for exactly this purpose.
During this session, he'll walk you through the entire app's source code, looking at such things as:

  • deploying configuration files with your app and reading them at runtime
  • dynamically changing frames at runtime in iOS
  • using custom styles and LiveBinding together
  • reading RSS files
  • downloading images in background threads

and whatever else we stumble across that might be interesting. All the source for the app will be available afterwards.

June 2013

Next Generation Delphi Language Enhancements -
When it comes to the Object Pascal language Delphi XE4 can be seen as something of a turning point. XE4 introduces a number of new language features some of which are quite significant additions. However XE4 actually includes 5 different compilers for 5 different platforms and not all these features are available across all of the compilers. Lachlan will explain these new language features, their usage and implications as well as detail which compilers they're available for. Since some of the new features are actually breaking changes we'll look at how you can write code today using pre-XE4 versions that will run on the new compilers tomorrow.
Some of the topics we'll be covering

  • What is LLVM and why is it now important to Delphi
  • Garbage collection via automated reference counting
  • string type changes (zero indexed, immutable, deprecated types)
  • operator overloading for classes

May 2013

Mobile in RAD Studio XE4 -
Glenn Stephens will be going through the mobile aspects of RAD Studio XE4 demonstrating how to work to build mobile applications in the platform, looking at some of the common patterns for mobile development and how they can be applied in the mobile space. We'll be looking at the fundamentals of setup, some of the language changes and also writing an app that we'll deploy to a one or many devices (Attendees, bring your devices).

April 2013

First look at FireDAC -
Recently Embarcadero released the component-suite FireDAC, which allows the developer to talk to different databases via the same components& methods. Pretty much like dbExpress. The presentation will explain the basic usage of FireDAC. We will also look at the advantages of FireDAC and when one would still prefer to stick to dbExpress.

Synopsis for RPC -
A short discussion on the JSON RPC 2.0 specification, which allows remote procedure calls (RPC) using the JSON (JavaScript Object Notation) syntax.
Two examples will be demonstrated, one using a JSON RPC client to control an XBMC media server and the other using both a JSON RPC client and server to access our own custom procedures.

February 2013

Writing your own enumerators for the "for ... in" loop -
This presentation will cover the for-in style of enumeration in Delphi, including:

  • the range of out-of-the-box enumerators;
  • a detailed examination of how to create custom enumerators;
  • practical issues and limitations to be aware of.


November 2012

Error Handling in Multi-Tier Applications -
How do you structure software properly? Why should we think about the structure of a software? And how? How to handle exceptional cases? Is the exception language feature always the best way? This talk has roughly two parts. In the first part we will have a look at architecture, layers and tiers. The second part deals with exceptions and how to use them properly. In the end we will see what the one has to do with the other.

October 2012

Delphi by Design: A look at the Open-Close Principle -
"Software entities (classes, modules, functions, etc.) should be open for extension, but closed for modification”. What does this mean? In this talk we'll look at a simple application to illustrate this design principle. Our aim is to design code that doesn't need to be modified when requirements change.

FireMonkey: How to implement a TDBLookupComboBox -
FireMonkey FM2 is extremely flexible and since the ADUG Autumn Symposium 2012 we have all become heros in implementing FireMonkey controls thanks to Bruno Fierens. Let's see what it takes to implement something like a TDBLookupComboBox in FireMonkey.

September 2012

Delving deeper into XE3 -
Damien is going to pick up where he left off at the recent Sydney XE3 World Tour event and delve deeper into

  • Differences between FMX1 and FMX2
  • Layouts in FMX
  • Actions in FMX
  • Media Support in FMX
  • MetropolisUI in FMX
  • LiveBindings and TProtoTypeBindSource

And of course there will be plenty of opportunity to ask questions of Damien on these and other topics.

August 2012

The bleeding edge of IDE enhancements -
Recently there have been a few new IDE enhancement plugins released both commercial and freeware. While some are more mature than others we'll take a look at them all and assess how useful they might be to your day to day development practices.

July 2012

Delphi with jQuery Mobile -
Discuss a method of combining Delphi with the jQuery and jQuery Mobile JavaScript libraries to generate web based GUIs that are optimised for the Mobile web browsers.

Managing Source Control with Github for Windows -
Git is a distributed version control system that is gaining increasing popularity amongst mainstream developers. Github is one of the largest code hosting company in the world centered around Git. One of the barriers for Git is its mainly command-line interface. This talk will give a quick demonstration of Github for Windows, a Windows GUI client for Git which makes the task of using Git much more easier and if time permitting we may also cover a little bit about the source code hosting ecosystem provided by Github.

June 2012

Distributed Messaging Systems with Delphi and ZeroMQ -
ZeroMQis a high-performance asynchronous messaging library aimed at use in scalable distributed or concurrent applications. It provides a simple socket-like interface to send and receive messages across application boundaries. In this talk we will be looking at the features of ZeroMQ and demonstrating messaging patterns like publish-and-subscribe and request-and-reply that can be achieved with it using Delphi.

May 2012

Using Generics in Delphi 2009 to Delphi XE2 - Delphi Community
This month we want to encourage everyone to contribute on a discussion about Generics in Delphi (since Delphi 2009). Have you ever struggled with saving classes in TObjectList and found all the type casting to get your objects back as the right type/class annoying? Then Generics are your friend & helper. But there are many other areas where Generics make sense. Come and share with us your little success story about using Generics in Delphi 2009 and beyond.

April 2012

Using Delphi XE2 to develop for the iPhone & iPad -
This month we take a closer look into iPhone & iPad development with Delphi XE2. Glenn has implemented 4 native iPhone apps so far and wants to shar some of his experiences with us. These include:

  • iOS and the benefits of developing for mobile device
  • Appropriate setup configuration of your development platform
  • Using the provisioning portal and iTunes Connect
  • Building a simple application and compiling it on XCode for iPhone
  • Deploying it to the device
  • Keeping the user informed and good UI practice for iOS
  • Popping up alerts
  • Configuring an application for deployment
  • Debugging strategies
  • Location based services and other app based information
  • Using Media on the iOS devices (Graphics, Camera and Audio)
  • Working with Data on the phone (Local data, SQLite, REST & Web Services)

March 2012

Working with Delphi Web Script -
Paul will demonstrate a few applications of using the Pascal / Delphi language as a scripting tool within Delphi itself. Applications include allowing limited application customisation by the user as well as building a simple automation controller. The talk is based on Delphi Web Script.

February 2012

Converting your VCL applications to FireMonkey -
This month we will look at the challenges when trying to convert your existing VCL application to FireMonkey. In the process we will examine a tool called Mida to convert VCL apps to FireMonkey and see some of the challenges when doing so. This talk will cover regular VCL controls as well as data-aware controls and the necessary live bindings in FireMonkey (e.g. converting a TDBLookupComboBox). We will see how the FireMonkey control events differ from their VCL counterparts and how to cope with

Januray 2012

Monitoring your Firebird database with FBTraceManager -
This month Thomas Steinmaurer will join us from Austria via GotoMeeting to talk about the Firebird trace API, which was introduced in Firebird 2.5 (see also here). This trace API is the base for Thomas' FB TraceManager. First we will look at the trace API and how to use it in a command prompt and then we will see how FB TraceManager can make it really simple to spot the SQL commands that keep you Firebird server busy for a long time and/or require many database page reads/writes.

November 2011

Copying locked files using Windows' Volume Shadow Service -
Using the Volume Shadow Service (VSS) in 32 bit environments has been possible with Delphi since VSS's introduction in Windows XP. However using these COM objects in 64 bit evironments has not been possible with Delphi until now, as the program using them has to be a native 64 bit application. Two years ago I had to use C++ to write part of an application in order to use the VSS in 64 bit OS's.
Now that Delphi compiles native 64 bit applications, I have ported my code back to my favourite language.
In this half hour we'll look at why it was impossible to use the Volume Shadow Service without 64 bit support, and how Delphi XE2 brought a smile back to my face. To demonstrate, we'll make a bare bones utility to copy open and locked files.


December 2011

Building mobile applications with RadPHP -
RadPHP ships with jQuery Mobile and PhoneGap and  that provide us with the ability of building mobile web apps and then turn those mobile web apps into actual apps that can be deployed to the device.  We will spend a short of time explaining what these technologies are and the rest of the time building a demo that shows you how they work.

November 2011

Copying locked files using Windows' Volume Shadow Service -
Using the Volume Shadow Service (VSS) in 32 bit environments has been possible with Delphi since VSS's introduction in Windows XP. However using these COM objects in 64 bit evironments has not been possible with Delphi until now, as the program using them has to be a native 64 bit application. Two years ago I had to use C++ to write part of an application in order to use the VSS in 64 bit OS's.
Now that Delphi compiles native 64 bit applications, I have ported my code back to my favourite language.
In this half hour we'll look at why it was impossible to use the Volume Shadow Service without 64 bit support, and how Delphi XE2 brought a smile back to my face. To demonstrate, we'll make a bare bones utility to copy open and locked files.

September 2011

Delphi XE2 Explorer Tour - Delphi Community
DataSnap can be used to build multi-tier applications with Delphi and has changed in Delphi 2009 to no longer relies on DCOM. Since end of August 2011 we have been able to explore the new Delphi XE2 version. In the September meeting three members of our community want to share with you their excitement regarding some of the new features in Delphi XE2. Lachlan Gemmell will start by showing us how tu use the DataSnap Mobile Connectors to call a Delphi application from an Android smartphone. Colin Johnsun, a long time user of Apple & OS X, will show how to develop and deploy a FireMonkey application on a Mac. Finally Mathias Burbach will delve into some of the new Live Binding features of Delphi XE2. Each presentation will be around 20-30 min including the discussion.

August 2011

DataSnap in a real world project -
DataSnap can be used to build multi-tier applications with Delphi and has changed in Delphi 2009 to no longer relies on DCOM. We will look at how DataSnap can be used and what are the little quirks you may encounter when using DataSnap.
The source code can be downloaded from here.

July 2011

A Practical Overview of Delphi's Generic Collection Classes -
Delphi introduced Generics a few versions back, along with a whole bunch of very useful generic collection classes. However, for some people all those angle brackets and T's still look like their keyboard threw up in their code editor. In this session Malcolm will attempt to give a gentle, practical overview of the various generic collections such as TList<T>, TDictionary<T>, TQueue<T> and others, along with topics such as searching, sorting, comparators and enumerators.
The source code can be downloaded from here.

May 2011

Implementing "Telemetry Transport" in Delphi -
The MQTT (MQ Telemetry Transport) protocol enables a publish/subscribe messaging model in an extremely lightweight way. It is useful for connections with remote locations where a small code footprint is required and/or network bandwidth is at a premium. For example, it has been used in remote sensors communicating to a broker via satellite link, over occasional dial-up connections with healthcare providers, and in a range of home automation and small sensor device scenarios .

April 2011

The Observer Pattern in Delphi -
One of the most used design patterns in software is the Observer pattern. It describes the one-to-many dependency between objects, whereby many objects (observers) can react to the changes made from a single object (subject).  In this presentation Colin will demonstrate a simple example using this pattern and will discuss how he has implemented it in Delphi.

The TIndex website - Community Discussion
The TIndex is a new website for the Delphi community recently launched by Lachlan Gemmell of ADUG Sydney which aims to be the best way to find Delphi information on the web.

March 2011

An introduction to Feature Driven Development (FDD) -
Feature Driven Development (FDD) is an Agile software development methodology that can be applied to software projects when schedules are important. Some of the activities involved with FDD that we will discuss are:
A brief introduction to agile software development

  1. Modelling the domain
  2. Creating features and feature lists
  3. How to implement a feature
  4. FDD reporting

February 2011

DUnit + Memory Leak Detection -
This month we want to have another look at DUnit with an emphasis on memory leak detection. But we also want to hear your story how DUnit "saved your bacon". Please send send us a short message to if you can/want to contribute so we can slot that in.

January 2011

Using Google API with Delphi -
At the November meeting of ADUG Sydney we were discussing to show how to connect to the Google API. Adam has been checking out the Google maps API and wrote a simple application to retrieve the ‘driving time’ and distance between two addresses.  It consists of a TGoogleMaps component. The response actually contains the turn by turn directions as well, but this was enough to demonstrate the principle works.
The source code can be downloaded from here.


November 2010

Component Design - Paul, Lachlan & Mathias
This month we want to have a look at component design. Paul, Lachlan & Mathias will show some of their "home-grown" solutions and want to encourage all participants to bring their own component code and/or designed classes.

October 2010

Introduction to the Virtual Treeview component -
The Virtual Treeview is an open-source Treeview component for Delphi. It is an alternative to the TTreeView component that is already available in the VCL. This short presentation will cover the design principles behind the component as well as the basic steps of setting up and using the Virtual Treeview in your Delphi project.

Network Mutexes with Firebird 2.x -
We will show how we can implement exclusive tasks over a network using Firebird 2.x and its connection monitoring tables.
The source code can be downloaded from here.

September 2010

Embedding video and audio player into Delphi Applications -
A look beyond the standard TMediaPlayer into embeddiing a number of different video and audio players; allowing most video and audio file/stream formats to be supported within a standard application.
The source code can be downloaded from here.

August 2010

Accessing Google services using Delphi -
Google provides an API for just about everything they provide from Spreadsheets to Maps to Calendar to Translator. We'll demonstrate how you can start to make use of these services from within your Delphi applications.

July 2010

Delphi in a Parallel Universe - or what to do with all those cores -
We will have a look at some multi thread options with emphasis on the OmniThreadLibrary We will run some examples and compare with TThread and some of Misha's libraries, etc. to get an overview of its style and range of application.

June 2010

Distributed Version Control with Git -
In continuing on the topic distributed version control systems. This month's meeting we'll be looking at Git. First introduced into the world of Linux but over the last few years we have seen better integration into Windows.

We'll be covering:

  • The basic concepts of Git
  • Setting up and installing on Windows
  • A rundown on how to use Git (add, commit, checkout, etc)
  • Branching, merging and handling conflicts
  • Local and remote repositories
  • Typical and useful workflows

May 2010

Distributed version control with Mercurial -
In the past few years distributed version control systems have been gathering a lot of attention. The two best known are the open source systems, GIT and Mercurial. This month we'll take a look at Mercurial and see

  • what advantages it has over centralised version controls systems,
  • how you can be up and running with it in about 60 seconds,
  • how it can be invaluable even for a solo developer,
  • super easy branching and merging,
  • great support for renamed files,
  • automating it into a build procedure,
  • running with or without a server.

April 2010

Model-View-Controller Principal - Delphi Community
At the February meeting it was suggested to do a discussion on a best-practise topic every now and then. As a first topic the Model-View-Controller design pattern shall be examined and how it could be used in Delphi. This is not a polished presentation but rather an attempt to collect ideas + techniques from everone coming on how to achieve this in Delphi.

February 2010

Programming and Deploying an Excel Add-In using VSTO 3.0 -
This presentation will cover how to write Excel 2007 Add-In with Delphi Prism  using VSTO 3.0.
In particular

  • Create a new Excel 2007 Add-In
  • Excel objects
  • Deployment using msi
  • Troubleshooting deployment
  • Development environment: MS VS2008, Delphi Prism, Excel 2007

January 2010

A few techniques for drawing on the canvas -
How to anti-alias (smooth) your text, thin or fatten up the fonts, write text at angles and how to minimise redrawing flicker.
The code from Paul's presentation can be downloaded from here.


December 2009

Talking to Windows Services -
We will look at how to implement a Windows Service application and examine the options to "talk" to the service. The presentation will cover the standard Windows Service class TService and what RemObjects has to offer in comparison.

DUnit Test Delphi User Interfaces -
This presentation will cover how to write unit tests with DUnit against forms & dialogues. We will see how we can implement an automated test suite even if modal dialogues are involved.
The source code can be downloaded from here.

November 2009

Using .NET Assemblies in Delphi -
Paul will show us what his development team at Happen Business has achieved with RemObjects Hydra. In particular

  • Using .Net within Delphi
  • Delphi 2010 conversion
  • .Net DLL in databases
  • using  RemObjects between Delphi and .Net
  • issues with threading when combining .Net & Win32 code

October 2009

RTTI Past and Present -
What's RTTI? It's Run-Time Type Information or the ability to discover, query, set and invoke variables and methods at runtime. It's not something you use everyday but when you do it either saves you from hours of monotonous typing or it lets you do things in code you didn't think were possible with Delphi. It's one of Delphi's hidden gems and a very valuable tool for any Delphi developer. We'll go version by version through the features of RTTI as it's evolved from modest uses back in the Delphi 5 days, such as avoiding lots of string constants, to the now super enhanced RTTI in Delphi 2010, which brings dynamic programming capabilities to Delphi comparable to .NET's reflection.

September 2009

Developing multi-threaded multi-tiered/distributed applications with the CSI application framework -
This presentation has been split into two parts, the first part was presented in June outlining the theory behind the framework architecture, and the second part will now be presented this month illustrating the practical nature of the framework implementation. We will dig into the source code and see how the 6 basic component "types" have been implemented. I am looking forward to your suggestions on how to improve it even further.
The most recent version of the framework is available for download from here.

August 2009

Full-Text Search, Newsgroups, Namespaces and Package Design -
This month, Ann Lynnworth from HREF Tools will be filling in on short notice. Ann will talk about two recent solutions and, time permitting, challenge the group with some unsolved problems. The solutions have to do with the recently released Rubicon full-text search engine, and with a project-startup-manager component for use in a wide range of win32 applications (especially applications that might need to run in console-, gui-, service- and other modes). The unsolved problems have to do with name spaces, packages and open source component versioning.

Programming sockets with Asynch Pro -
Mark will be filling in on short notice too. He will show us some of his socket code based on Asynch Pro.

July 2009

What's in my tool chest -
This presentation will cover some of the tools used by Lachlan to help him develop applications with Delphi effectively. A recording of the presentation can be found here.

June 2009

Embarcadero: What's cooking in the labs -
This month Malcolm Groves will be coming along to tell us what he can about the future for Delphi and Embarcadero. Most of you will know Malcolm as he has been involved in Delphi and ADUG forever. Malcolm will hopefully be demonstrating some of the cross-platform native Delphi features, and maybe even the touch/gesturing support, announced recently.
We have all had our chance to play with Delphi 2009 now and Malcolm is the ideal person to to answer questions, take feedback and field gripes.

Developing multi-threaded multi-tiered/distributed applications with the CSI application framework -
This presentation will be split into two parts, the first part in June outlining the theory behind the framework architecture, and the second part in July illustrating the practical nature of the framework implementation. I will explain how it is possible to break all "elements" of distributed systems into 6 basic component "types", and how by implementing a common interface across all "components" it is easy to build complex multi-threaded multi-tiered applications without requiring any knowledge of threads or inter-process communication. I will also explain how an application's "components", their configuration, and how they are "wired", can be defined in a configuration file (rather than code) to remove any "coupling" between the components at design time.

May 2009

VCL for the Web in Delphi 2009 -
This presentation will cover the basic building blocks of VCL for the Web (formerly known as IntraWeb). We will look at Page Mode & Application Mode, see how state is managed in a VCL for the Web application and also make use of data-aware controls. This is as close as you can get to normal Delphi development when it comes to web applications.

April 2009

The DBX Architecture in Delphi 2009 -
Let us watch Marco's DataRage presentation on the DBX architecture in Delphi 2009. The presentation provides an introduction to the Delphi 2009 renewed DataSnap architecture that let's you create multi-tier applications in an easy, RAD way delivering power and flexibility for your remote, zero-configuration, client applications.

March 2009

Delphi 2009 Debugger Tips & Tricks -
The new Delphi 2009 IDE has brought some substantial enhancements, one of which is the improved debugger features. We will have a look at Delphi 2009 and how it compares to Delphi 7 & 2007 when it comes to debugging functionality.

February 2009

Secrets of the Delphi 2009 RTL - Marco Cantù
Let us watch Marco's CodeRage III presentation on the Secrets of the Delphi 2009 RTL and discuss it afterwards. Marco is a well known book author in the Delphi community and has presented at many conferences in the past.

January 2009

ADUG - what I expect & what I can contribute - Delphi Community
In recent months it has been a struggle to find speakers for our meetings. We seriously need to consider what to do in order to keep our meetings interesting to our membership. So please join us for a round table discussion on our future meeting structure/format. Subsequently we will have a few drinks at the City Tattersalls Club.


December 2008

Advanced debugging with logging frameworks -
We'll look at how using a logging framework such as SmartInspect or CodeSite can be used both during development to speed up your debugging and after deployment to resolve problems reported by your end users.
Focusing primarily on database applications we'll use and extend these frameworks (mainly SmartInspect) to give us detailed insight into how our applications work and how they're being used by others. These techniques will work on any application that uses a TDataSet descendant class for it's data access.

Question and Answer Session - Delphi Community
Bring your current development problem to our meeting and let us "crack the nut" together.

November 2008

Delphi 2009 - How would your project benefit from it? -
We will have a look at the new features of Delphi 2009 and focus on your how your project could benefit from it. So please bring your examples and let's have a look together what Delphi 2009 has to offer out of the box.

Question and Answer Session - Delphi Community
Bring your current development problem to our meeting and let us "crack the nut" together.

Octorber 2008

Basics of using audio in Delphi applications -
Discussion of how to utilise audio within Win32 Delphi applications from simple sound effects to handling and converting audio data streams.
The source code of Paul's presentation can be found here.

Question and Answer Session - Delphi Community
Bring your current development problem to our meeting and let us "crack the nut" together.

September 2008

Living like the Greek Gods? -
In recent times I have started to experiment with Linux Ubunutu & Wine in order to run Delphi Win32 applications under Linux. We will have a quick look at Ubuntu, install Wine and run a simple Delphi app built from scratch. Then we open the floor for discussions on what features you are using in your application and see if we can get them to run under Linux too.

Question and Answer Session - Delphi Community
Bring your current development problem to our meeting and let us "crack the nut" together.

August 2008

Software Archaeology -
(AKA I've just inherited a million lines of Delphi code and I don't know what to do with it) Among the features added to Delphi in recent years, there are a few that seem to be regularly put into the "too hard" basket. UML is one, Audits and Metrics is another, Design Pattern support, even Unit Testing in many cases. An opinion often expressed is that unless you use these things from the start of your project, they are no value to you. In this session, Malcolm will take us through a slightly different way of using these and other features, with a particular focus on the value they can give to someone who needs to maintain and extend an existing, large codebase that was developed without the use of any of these features.

Delphi 2009 Preview -
The R&D efforts for the next version of Delphi - codenamed Tiburon - are well on its way. We have seen already a few blogs about the main features of the next version of Delphi. Unicode seems to be one of them. This month we can enjoy even two presentations of Malcolm Groves, CodeGear's Asia Pacific Product Director, in our home town.

June 2008

What's new in Firebird 2.1 -
In April 2008 the open source Firebird community released version 2.1 of Firebird (see also here). Let's have a look together what all these new features mean to our day-to-day work:

  • Database Triggers
  • Dynamic Recursive Queries
  • Update or Insert Statement
  • Treat Text Blobs Like VarChars
  • Database Monitoring via SQL
  • ... (and many others)

Whilst this presentation aims at explaining most of the new features we also want to discuss their relevance for your current projects.

Question and Answer Session - Delphi Community
Bring your current development problem to our meeting and let us "crack the nut" together.

May 2008

Embarca-who? E/R Studio? DB Artisan? Rapid SQL? -
I've never heard of them either but I'm curious as to what sort of products the new owners of CodeGear have to offer. Come along and I'll demonstrate what I've learnt from playing around with the trial versions of the Embarcadero suite of database tools. Are they useful and reasonably priced for small teams? Are they better than the competition? Do they give any hints as to where Delphi might head in the future?

Question and Answer Session - Delphi Community
Bring your current development problem to our meeting and let us "crack the nut" together.

April 2008

CodeRage or Code Crunch in Sydney - Delphi Community
Unfortuantely David I. can't make it to the meeting. This is why we have quickly decided to offer you a replay of any CodeRage session or bring your notebook for a Code Crunch session. During Code Crunch we aim to solve a small problem all together.

Question and Answer Session - Delphi Community
Bring your current development problem to our meeting and let us "crack the nut" together.

March 2008

Phone System Integration using Delphi and Asterisk OpenSource PBX -
Asterisk is an open source VoIP Private Branch Exchange software system that runs on Linux on a standard PC hardware platform. A demonstration of how to write a Delphi application to control user access to retrieve information via a telephone based user interface will be presented.

Question and Answer Session - Delphi Community
Bring your current development problem to our meeting and let us "crack the nut" together.

February 2008

Webcam Fun with Delphi - Bob Swart
In this session, you'll see how to use Delphi and a webcam to build fun and useful applications. This is a CodeRage 2 recorded presentation, which we will replay and have a discussion about.

Question and Answer Session - Delphi Community
Bring your current development problem to our meeting and let us "crack the nut" together.

January 2008

Memory Leak Detection with FastMM -
Since Delphi 2006 FastMM has become the default memory manager for Delphi. The presentation will focus on the memory leak detection feature of FastMM and how to pin down even the line of code, where the leak was introduced.

Not your father's Pascal -
There have been many extensions to the Delphi/Object Pascal language since Delphi 7. Are you making the most of these new language features? Did you know that records can now have methods, properties for instance? Do you know what the difference between "private" and "strict private" is? What is a "sealed" class? What is a "class helper"? Have you ever used nested classes? What is a "for in" loop?
We'll look at these new language features and others and discuss how you can make use of them in your code.
This presentation can be downloaded as a video from Lachlan's FTP site. The FTP server and password can be found in the ADUG mail-list archive here.


December 2007

CodeRage II "in Sydney" - All the famous guys
From 26th to 30th November 2007 CodeGear held the second online conference called CodeRage II. The presentation times have been a bit tricky for us here in Australia (12 AM to 9 AM). Now all the presentations are available for download from here. The complete schedule was published here. Please pick your preferred topic and we will run the video and then have a short discussion on the presentation during the pizza break.

Future Speaker List - Delphi Community
The topics suggested at the last meeting are published here. Please let us know whom we could approach to present in one of the topics. If you wonna give it a go - even better! We are looking forward to your presentation. A list of suggested topics has been posted to the ADUG mail-list here.

November 2007

An introduction to using Delphi inside Virtual Machines -
For the past 2 years I've used Delphi exclusively from inside VMware virtual machines, providing me with an inexpensive development and build environment that is consistent, reliable and portable. This presentation will give my tips on how best to use Delphi and virtual machines together. No prior knowledge of virtual machines is required.
The presentation can be downloaded as a video from here.

Your preferred topics for the future - Delphi Community
Please help the sub-committee in planning future meetings and come along with your suggestion for good topics in the future. You may even know a possible presenter.
A list of suggested topics has been posted to the ADUG mail-list here.

October 2007

CodeGear RAD Studio 2007 -
Delphi, Delphi for .NET, and C++Builder in one environment for rapidly developing Windows and .NET 2.0 applications on and for Windows 2000, XP, and Vista. You get all the tools you need to create AJAX powered web pages using ASP.NET 2.0 and VCL for the Web and database applications with local database connectivity. And deploy your applications, with no additional charges, on the Windows platform or your choice.
Nick will talk about & present the new CodeGear RAD Studio 2007. He will also share with us the Delphi Roadmap (e.g. What’s coming up in future versions of Delphi?) and be available for an open forum discussion.

September 2007

CSI Object-Oriented Application Framework for Win32 -
The CSI application framework has been developed over the last ten years to provide a simple and easy-to-use framework for application development to handle some of the basic application "plumbing" common to most applications. The framework has also been extended to provide some general utility routines, classes, and components, and offers generic inter-thread messaging, generic inter-process TCP communication, and abstracted database access. We will have a presentation on this framework at our meeting as a leed up to the workshop on the 19th September 2007.

Question and Answer Session - Delphi Community
Bring your current development problem to our meeting and let us "crack the nut" together.

August 2007

Automated testing strategies, which tests to use when -
Automated testing to many of us means DUnit and possibly some kind of performance or GUI testing. But those are not the only tests that can be automated. On the web load testing is often critical, and for regression testing a GUI test tool like TestComplete or WinRunner can make all the difference. With more of us writing multithreaded code some kind of thread-intensive testing will find bugs that would otherwise be hard to detect and can be impossible to reproduce any other way. I'll run through a few techniques and tools that I use, and suggest ways to get started.
Chris' white paper on the topic can be downloaded from here.

Question and Answer Session - Delphi Community
Bring your current development problem to our meeting and let us "crack the nut" together.

Juli 2007

Integrating Object Pascal and PHP -
Prior to the release of CodeGear's Delphi for PHP there was another way  for Delphi developers to integrate PHP into their Delphi projects. The  PHP4Delphi project is an open source framework for Delphi (v5 and later)  that lets you extend the functionality of the PHP language using Object  Pascal. We'll go through examples that show how you can call Object Pascal code from within PHP code and vice versa.

Question and Answer Session - Delphi Community
Bring your current development problem to our meeting and let us "crack the nut" together.

June 2007

Delphi and OpenGL -
Traditionally most Delphi programming has been about reading and writing files and databases - and no doubt this will continue to be bread and butter programming for many.
However, built into the plumbing of Windows is OpenGL. It's 3d subsystem of libraries that is becoming a more and more important. Many of the special effects in Vista are built using the OpenGL subsystem.
This talk covers two different styles of 3D programming, firstly, the low level method directly accessing the OpenGL libraries and then secondly, a much easier system : GLScene. This set of components provides a VCL drag and drop of 3D components that will be familiar to many Delphi programmers.
With GLScene, 3D objects can be added to Delphi forms and manipulated like any other VCL components. Thus bringing OpenGL programming within the reach of projects that many of us may currently be working on.

May 2007

Architecting an enterprise-wide system -
A discussion on a current real-world Delphi system, with a focus on n-tier considerations and inter-process communication. I will be drawing on a novel approach that has been used in the development of an alarm monitoring system, which should hopefully prompt further discussion on these and other related is.

Using Delphi to control external devices -
A discussion on using Delphi as a Central Controller and Graphical Interface in audio/visual installations.

April 2007

Easy GUI development with ActionBands -
ActionBands are an under-utilised suite of components in the Borland VCL which can give you a lot of functionality quickly to desktop applications. Think of them as super-charged TActionLists. In this presentation, I will explain:
   1. What are the ActionBand components;
   2. Demonstrate usage and features;
   3. high level design
   4. Summarise the merits
   5. Summarise the limitations and weaknesses;
   6. Demonstrate my own Unicode version of Action bands.
You will find Sean's source code here

Question and Answer Session - Delphi Community
Bring your current development problem to our meeting and let us "crack the nut" together.

March 2007

Licencing shrinkwrap software & managing customers -
This presentation will show some interesting techniques to create licence files for your shrinkwrap software. How to activate certain modules of your package and distinguish between stand-alone and network version of the same app. The demo also delves into the technique of managing technical support renewals and efficient communication with the client including automatic letters & e-mails as well as recording any actions taken against that particular licence.
François' slides code here

Question and Answer Session - Delphi Community
Bring your current development problem to our meeting and let us "crack the nut" together.
We spoke about Cary Jensen's CodeRage presentation on "Building Scalable Data Access Layers for ASP.NET Applications". The source code for his presentation can be found here.

February 2007

Your Delphi apps under Windows Vista - Delphi Community
We will look at a set of articles published on the internet and discuss necessary amendments in your Delphi source code to make your apps first class "citizens" under Windows Vista.

Turbo Delphi at the universities - Delphi Community
With the start of the next term we will have the opportunity to distrubute our ADUG burned Turbo Delphi install CDs to a bigger number of computer science students at UNSW. We want to look at basic training videos taped by Nick Hodges and decide on a good mix of topics to speak about at the "Tech Friday" of the student guild at the School of Computer Science and Engineering (CSE).

January 2007

Concurrency Handling in Win32 World -
We will look at concurrency handling in Delphi Win32. How to detect changes made by another user since you selected your resultset and how to handle them efficiently. This solution is based on Firebird, IBX and "visual" inheritence on Datamodules. We will use a centralized OnPostError handler to deal with the conflict.
You will find Craig's source code here

Concurrency Handling in .NET/ECO World -
We will look at concurrency handling in Delphi .NET with ECO. The presentation will show how to make use of the ECO Timestamp, which is really a version number on the record, how to detect changed object instances that could not be saved because of a direct conflict and how to deal with that conflict on the client side (EcoSpace & WinForm).
You will find Mathias' source code here


December 2006

Case Study: Remote access via RemObjects' DataSnap integration pack -
This will look at how we fulfilled a requirement to allow existing applications to remotely access data using RemObjects and specifically their DataSnap integration pack. It will also focus on ways forward by migrating to using RemObject's Data Abstract product.

Christmas Wish-List for Delphi Developers - Delphi Community
Please bring your preferred Christmas biscuits & cookies and let us discuss what you would like to see from CodeGear in the future. What are the challenges in your current project and how could the next version of Delphi support you best?

November 2006

Long live Live Templates -
Did you realise that the Ctrl+J template system in the Delphi 2006 editor has had a massive facelift and is now actually quite useful? Now known as Live Templates, the new system is somewhat comparable in functionality to the templates from the old CodeRush for Delphi 3-7.
We'll take a look at how to edit the existing templates, write a new template, and write a template that can call your Delphi code as it executes.
Hopefully by the end of the session we'll go part of the way to helping you with your CodeRush withdrawal symptoms.
You will find Lachlan's slides and source code here.

October 2006

Follow-up discussion on Threads - Delphi Community
After last month's round table discussion on threads, quite a few of our members expressed their interest in discussing the topic further. This is why we thought we would do this rather sooner than later.

What I always wanted to present on, but never dared - Delphi Community
As you can see in the last few months we have had difficulties in finding enough speakers and topics. Thanks to this discussion, we hope to identify topics of interest as well as possible speakers. For sure we also have time for a Q&A session.

September 2006

A Roundtable Discussion on Threads -
any of us have considered using threads, some of us have considerable experience with them. However, no matter how much we know, there always seems to be more to learn. From the basics of when to use threads, through to the complexity of inter-thread communication, I will introduce the issues and hopefully prompt others to share their knowledge and experiences.
You will find Misha's source code here

August 2006

Case Study: Happy CHAP thanks to ECOIII -
The Centre for Health Assets Australasia (CHAA) has been given the task to organise a survey to capture & analyze financial spendings in the health building sector on behalf of the federal government and the state governments of Australia & New Zealand. The project was called Capital Health Asset Project (CHAP)  and Maranatha Consulting was approached to provide IT consulting services for the project. The case study will focus on the technical side of the project and how Delphi 2006 & ECO helped to make it a much easier task for CHAA to analyse the data entered by the different jurisdictions.

July 2006

Get your applications into shape with FIT -
Based around HTML this open source testing framework allows you and your users to work together to build tests using familiar tools such as Word or Excel. Especially well suited to Test Driven Development methodologies this framework also has the potential to change the way you gather requirements from your users.
You will find Lachlan's source code here.

Make the most out of ClientDataSets -
See how ClientDataSets can provide an easy logging facility for updates to the database.  Even with nested tables you have full control over what you want to do with the Delta. If time permits after this short presentation, the group can discuss experiences in the use of ClientDataSets or any other questions you might have, regardless of your expertise level.
You will find Craig's source code here.

June 2006

Round Table Discussion: The Future of Delphi & DevCo -
Malcolm Groves will give us an update on DevCo and the plans for Delphi (and the other Borland developer tools) - not to be missed for any Borland development tool user. For all those ADUG members that couldn't make it to the symposium in either Melbourne or Adelaide.

Build your own gant chart component -
This presentation will show a visually interesting commercial application, developed in Delphi 7 & firebird DBMS. The application is a Gantt style calendar builder, similar functionality to that of the MS Project application we all know so well. We will cover some of the custom component development used as well as inheritance, paint override and image drawing to show you how an application of this type can be built.

April 2006

Developing a Google Desktop sidebar using Delphi -
Zijian has developed this without using the Google SDK. The talk will focus on the desktop, COM, and plug-in, using Google Desktop as an example.

Product Review: FastMM -
Have you ever had the feeling that you were losing your memory? Come to this month's ADUG meeting to find out how to stop it. Anthony will be demonstrating how to use FastMM to detect leaks and help plug them. If time permits, he'll also demonstrate a technique to help you remember other stuff as well.

March 2006

Application and Event Logging Framework -
We've all done logging at some time, whether to record errors, check performance or log data changes. However, how do you log a communications error to the database if your network has gone down? Misha's solution allows multiple client applications to centralise event logs on a server database in a reliable way.

ADUG Meeting Reminder with ECOIII -
This will be a short presentation on how ECOIII has helped me to build an even better meeting reminder mail-merge tool. We will look into building the model separately from the database & UI. We will write NUnit test cases to proof the "business rules" are working properly. We will see an import app to import existing TClientDataSet XML files and finally the beginning of an ASP.Net front-end for the model.
You can download the source code from our ADUG JediVCS version control server at as user "Guest" with password "Guest".

February 2006

Jim2 Business Engine ERP package -
The development team from Happen Business will be presenting an overview of their Jim2 Business Engine ERP package.
Topics include…

  • General architecture
  • Coding methods and style
  • Release cycle
  • Support issues
  • Documentation
  • MS SQL tricks and hacks
  • Various Windows related issues and workarounds
  • Software startup issues
  • How we have achieved success so quickly
  • Some of the trickier coding issues we have had to tackle.
  • 3rd party components we use and why
  • D2006 migration issues
  • User interface design

January 2006

What's new in ECOIII -
ECO III, released with Delphi 2006, introduces many new features to dramatically improve developer productivity. This session covers the new features, such as State Machines, the ECO Action Language, multiple persistence mappers, as well as the many smaller but much requested tweaks that have found their way into this release. We also cover some dramatic changes to how we deliver ECO to you. A must see session for anyone using, looking at using, or wishing they could use ECO.
For more information on ECO have a look here.


December 2005

Programming in Virtual Machines -
Moz shows you the joy of programming inside virtual machines - why you'd want to, how to set them up and some tweaks to make them moreuseful. He'll bring along a test rig for people to look at.
His talk can be found here.

November 2005

Round Table Discussion on Delphi 2006 -
During his tour throughout New Zealand & Australia to present on Delphi 2006 at the Borland Technology Days 2005, John Kaster - Principal Engineer for Borland Software Corporation (USA) - will have time to meet with us at a regular ADUG meeting.

Tutorial on Stored Procedures in MS SQL Server -
Stuart will cover he basics of stored procedures in MS SQL Server and why you may wish to use them. He will then delve into XML, marking duplicates and handling tree structures inside Transact-SQL.

October 2005

DeXter Sneak Preview -
Malcolm will be giving us an insight into the next version of Delphi codenamed DeXter. We will see ECO III, the next version of ECO. He will explain some of the new features and then put ECO through its paces. This will be followed by a look at the Delphi Compact Framework compiler and finally, if we have time, a quick look at C++ Builder - the latest language personality in Delphi.

Tutorial on Embedding Control Functions into Columns of a DataGrid -
During this discussion an Interface definition is defined (IHostControl) which supports the implementation of customized Controls that may be embedded within a DataGrid or directly placed on a Windows Form.
The original problem required standard or customized Controls to be made available for columns of a DataGrid or placed on a form. These Controls are to behave identically in both locations.
To reduce the development effort and complexity for each Control, the following strategy was implemented. A wrapper class per environment was implemented which controlled any customized/standard Control which supports the IHostControl interface. Any Control could implement this interface.
The tutorial shall discuss and demonstrate the implementation of the above.

September 2005

ADUG Membership System -
The team developing the new membership system wants to present its results so far. As we have moved to ECO recently we will discuss the class diagram and how ECO should help us to be more productive. We are looking forward to your comments and suggestions for improvement.
"The Team" are Craig Goodall, Dick Walker, Esther Hamburger, José García, Mathias Burbach and Phillip Allan.

A few more of my favourite tools -
I have been referred to as a tool junkie by one of my colleagues. But I prefer to think of it as spending an inordinate amount of time finding tools which will save me time. Come along and find out my favourites - like Autoruns and Process Explorer - where the time has been wasted for you.

August 2005

Turning MDA into reality with ECO2 -
We will have a look at a commercial application developed by Dick Walker using ECO2. We will look at how ECO and .NET are used to create a real life business application. We will cover the general concepts involved, discuss design decisions and take a high-level view of some of the latest technologies can be used. Come along, have a look and ask some questions.

Here are some helpful links:

Modal Frames -
Modal dialog boxes stop your application in its tracks: the user is forced to deal with it before any other operation is allowed. This might make sense in an SDI application, but very little in a MDI application, where an error message on one form prevents you from opening another. Why should this be so? Following a need to have modal dialog boxes be modal only to the current form in a MDI application, "Modal Frames" were born. We will cover the design and implementation of what is yet another very useful feature of TFrame.
The source code of this presentation can be downloaded from here.

July 2005

Turning a program into a sustainable software business -
Has your mind every drifted and wondered "what could I code that would really make a difference to the world, and be turned into a sustainable software business". This talk passes on lessons and ideas on what we did at the architecture level, and in terms of processes, configuration management and documentation to achieve this.
We followed a broad agile process of peer testing , daily builds and incremental development, but took a slightly different approach in that we did build a layered platform up front....and stuck to it, with continuous cleanup and periodic spring cleans.
The talk will cover some of the patterns used and the architectural framework, in particular the persistence layer. We'll talk about the commercial need for a "build it and speed it up later" approach. A key to the product's success is its amazing configurability and we'll discuss how that was achieved, and also the way we do configuration management that allows 100's of customers to all request their own customisations while maintaining one version of the code.
Lastly documentation! Although hard to maintain, it is the level that is important to get right. eTrack uses a variation of use cases to document fanatically the business requirements of every issue, enhancement and feature in a quick efficient manner that works in a virtual environment and results in almost zero rework.

Questions & Answers Session - ADUG Membership
As requested by our members we re-activate an old tradition of having a Questions & Answers session from time to time. Feel free to post your question(s) to our mail list server.
The posted questions can be found on our mail list archive under "Sydney Meeting: Questions + Answers" in July 2005.

June 2005

Practical interface usage -
This session will introduce Object Pascal interfaces (not user interfaces) and provide some practical examples of where they can be used. Examples will include interface usage in the VCL, using interfaces to build an application that be run either as a single exe or a distributed system, code that can be reused in both a web and desktop application, and a technique useful for library type code that gives a class seperate private and public interfaces.
If you're unfamiliar with interfaces or if you have trouble finding a role for them in your applications this session will give you some tips.

ModelMaker 8 Product Review -
ModelMaker is a two-way class tree oriented productivity, refactoring and UML-style CASE tool. It is specifically designed for generating native Delphi code. It has won serveral Delphi Informant "Best Modelling/UML Tool" awards. Since it was bundeled with Delphi 7 as ModelMaker 6.2 the company ModelMaker Tools has released version 7 & 8. So its time to have a look at the new features of ModelMaker 8.0.6 and why and when to use it.

May 2005

What's new in InterBase 7.5 -
Are your customers struggling with 4 GB InterBase files, too? Do you want to monitor closer what's going on in your InterBase server? Then the new version of InterBase might be of interest for you. Come along and see what improvements the Borland InterBase development team recently introduced to InterBase 7.5.
You will find the InterBase PLANalyzer home page here.
You will find the InterBase Performance Monitor home page here.
You will find the BorCon 2004 InterBase proceedings here.

ADUG Sydney Activity Review -
Mid April the Sydney sub-committee approached all ADUG members in NSW to answer a few questions regarding the future direction of ADUG in Sydney. Quite a few of you have replied. We would like to discuss their suggestions for improvements with you. Please come along and help us to make this chapter even more interesting.
The result of the survey can be downloaded from here.

April 2005

ECO2: Enhanced capabilities for Model Driven Development -
For this presentation Damien will briefly outline what Borland offered in ECO1 and how this compares to the increased funcionality in ECO2. He will then go through an example of these new capabilities in Delphi 2005. Some of the features that he will be discussing are:

  • Synchronisation of multiple ECO Spaces
  • Web development with ECO
  • Transaction support with ECO

The source code of this presentation can be downloaded from here.

The Singleton Design Pattern -
The Singleton design pattern is defined as: "Ensure a class only has one instance, and provide a global point of access to it." I will be discussing various Delphi implementations of the Singleton design pattern and the trade-offs associated with them.
So come along to find out everything you wanted to know about Singletons but were too afraid to ask.
The source code of this presentation can be downloaded from here.

March 2005

NexusDB V2 Memory Manager and RDBMS -
NexusDB is a high speed DBMS engine for Delphi, C Builder and .Net applications. Version 1 has been a successful heir to the popular FlashFiler engine from the now defunct TurboPower Software company. A significant part of the success and speed of NexusDB can be attributed to its well known memory manager. In this talk we explore both the Nexus Memory Manager and Version 2 of NexusDB. Aspects of the Memory Manager that make it the technical best of its kind on the market are explained in this presentation. Examples showing its speed and lean use of memory will be demonstrated highlighting just how easy it is to use. The talk will then lead on to an in-depth discussion of Version 2 of the RDBMS, NexusDB. The various new features of NexusDB will be explained, with examples, as well as a look into how to utilize it potential to the fullest. Version 2 also represents a move by Nexus into the .NET world. Future editions of NexusDB, namely the Enterprise Edition, will also be showcased.

Automated Solution Generation Algorithms for Scheduling -
The generalized scheduling problem is a well known real-world work issue which confronts all levels of industry and government on a day to day basis. Specific examples of such problems include time tabling, rostering, job-shop scheduling and the well known travelling salesman problem. The provision of the automated generation of solutions to these problems has interested business analysts and academics alike for many decades. Research into this area has resulted in a huge number of publications discussing proposed algorithms, implementations and systems. In this talk is presented a summary of the more well-researched algorithms and some recent research results. The results present allow a more deeper understanding of the various techniques including insights into regions of the solution phase space they are more better suited to.
An good introduction on Constraint Satisfaction Programming is available here.

February 2005

Creating and Using Web Services with Delphi 2005 -
In this presentation we will explore how easy it is to create and consume web services with Delphi 2005 thanks to the Microsoft .Net Framework SDK. After buiding our own simple web service we will consume an existing web service to retrieve weather information around the globe and store those requests in a database. Finally we will show how to present those weather requests in an ASP.Net page.
The source code of this presentation can be downloaded from here.

January 2005

Member Built App: A Business Process Management System -
During the last few years, Glenn has been designing & building a Business Process Management (BPM) system in his spare time which consisted of nights, weekends etc. This BPM system was designed to allow people to perform the most common operational tasks, such as moving domain specific data in a natural way by integrating databases, workflow, middleware, enterprise systems etc, so that managers and process change engineers can define automated processes as well as monitoring KPIs.
Glenn will demonstrate the techniques used to create a professional client/server application with high levels of usability, such as the what GOF and POEAA patterns he used, how to setup a complex serialization model that supports file persistance, the clipboard and databases and an overview on how he found developing his first major .NET application.

A faster, stronger Delphi 2005 -
A look at the new Delphi 2005 IDE, going beyond the surface and exploring some of the many different customisation options available, some documented and others not. In particular a way to dramatically shorten the load times of Delphi 2005 (also Delphi 6-8 as well) will be shown as well as some fixes and tips to keep the IDE running smoothly.
The Delphi Settings Manager is available for download from here.
You will find more information in Lachlan's blog entries under "A lean mean Delphi machine"


December 2004

Automated Code Generation using CodeSmith -
CodeSmith is a freeware code generator that can be used to generate any sort of text file including Delphi source files. It can come in handy if you need to write several classes or units that are almost but not quite identical to each other such as strongly typed lists or object wrappers for database tables. Templates are used to generate the Delphi source code using a template syntax that is very similar to ASP.NET.

Managing Security via User Roles in InterBase -
During this presentation we will look at one possible scenario to manage user security in InterBase. We will discover how subjects can help to prevent users from using third-party tools to access the data. The techniques presented will demonstrate how to use the features of the operating system to assure that the user logged into the database is also the user using the application. The presentation will focus on the creation of a security admin tool to manage roles and user accounts. We will also see an example of a client application, which demonstrates a generic way of applying your database access rights to the user interface.
The slides and the source code of this presentation can be downloaded from here.

November 2004

DUnit on DataModules -
Sometimes it seems difficult to get Delphi's RAD approach and DUnit "under the same hat". This presentation will show how you can get the most out of DUnit even if you use TDataModules and TDataSets. We will see how we can separate our business logic from the user interface and how to apply unit testing on the business logic container called TDataModule.
The source code of this presentation can be downloaded from here.

Observer pattern with Delphi 7 -
ModelMaker provides some demo codes for the observer pattern. The talk will enhance the demo patterns for production.

October 2004

ADO.NET & Borland Data Provider In-Depth -
The talk will cover the fundamentals of ADO.NET, like DataSet, DataTable, DataRow, DataColumn & DataAdapter. We will see how Borland's components (e.g. BdpConnection, BdpTransaction, BdpCommand & BdpDataAdapter) will help you to build database applications under .NET for a variety of SQL servers. We will learn about a very efficient mechanism to control concurrency situations and how to handle PK values in a disconnected "DataSet-world".
The source code of this presentation can be downloaded from here.

September 2004

Object Oriented Design using Together Designer Community Edition and Colour -
Take a look at the recently released freeware version of Together Designer from Borland. Together Designer is a UML diagramming tool with great flexibility and intelligence in it's behaviour. A technique for using colour with UML diagrams will also be discussed, plus a short introduction to basic UML notation if required.

Utilising the WebBrowser within -
All Windows operating systems since Windows98 contain an embeddable version of IE. In this session we look at how Internet Explorer can be embedded into your applications to provide a rich user interface, and still maintain operability with your application.
The source code of this presentation is available for download from here.

August 2004

Web Services Trick and Tips with Delphi 8 - Glenn Stephens
The basics of ASP.NET web services are easy to grasp. In a nutshell to create a Web Service, you create a class that inherits from System.Web.Services.WebService and apply the WebMethod attribute to the methods you want to expose as part of your web service. But like programming on any other system, once you try to perform more complex tasks, you will need to know some more complex ways of working with ASP.NET Web Services using Delphi 8.
This session will take you through some of the advanced ASP.NET Web Services tasks that you are likely to come across in a production environment such as multi-threading Web Services clients, using binary data in your web service and allowing your Web Service to accept XML data without the need for defined parameters.

Version Control with FreeVCS - Mathias Burbach
We will look into the features of FreeVCS, an open source version control software. This project has is been overtaken by the JEDI project.

July 2004

An XML Case Study - Misha Charret
In this short presentation I will illustrate how XML was used as the framework to implement a web sports statistical database. The purpose of the application was to automatically download sporting results (cricket, tennis, etc) from internet web pages to populate tables in a sports statistical database. Two of the hurdles to overcome were to effectively parse a variety of poorly formatted web pages and to determine suitable database schemas to allow effective statistical queries. I will explain how the use of XML schemas and documents were utilised to achieve these aims.

Software Localization with Multilizer - Bisser Tzanov
The software package Multilizer is well known for years as a good software globalization tool among the Delphi developers. The latest version: Multilizer 6.0 makes the Software localization efforts even easier and more efficient. Find out why!

June 2004

Threads to your help - Part 2 - Malcolm Smith
This session will cover the basics of threading in Delphi.
In particular

  • why/when to use threads
  • basic thread details such as FreeOnTerminate, OnExecute, Synchronize
  • methods of terminating threads
  • notification of thread completion
  • thread access to shared objects using different sync objects
  • critical sections, mutex, semaphore, multi-read-exclusive-write
  • TThreadList and custom thread safe lists
  • and anything else I can think of....

Data Abstract Product Review - Mathias Burbach
Data Abstract is an innovative data-access framework for Delphi. Used in combination with the RemObjects SDK, it allows you to create RemObjects services that access any database providing a clear separation between data-access and business-logic. The Data Abstract Drivers layer will let you use the data access technologies that you prefer (i.e. IBObjects, SDAC, ODAC, DOA, ADOExpress, IBExpress, etc.), switching from one to another by simply changing a connection string.
In this session we will have a look at this product and how it can help you create database applications for multiple database servers.

The source code of the presentation can be found here

May 2004

Controlling MSOffice applications using Delphi - Lachlan Gemmell
This session will explore the use of Automation (formerly known as OLE Automation) to control MSOffice applications such as MS Word, MS Excel and MS Outlook using Delphi code at the desktop level. The trade-offs between the different methods will be discussed as well as some timesaving tips. The pros and cons of creating MSOffice documents on the server side will also be discussed.

Threads to your help - Part 1 - Malcolm Smith
This session will cover the basics of threading in Delphi.
In particular

  • why/when to use threads
  • basic thread details such as FreeOnTerminate, OnExecute, Synchronize
  • methods of terminating threads
  • notification of thread completion
  • thread access to shared objects using different sync objects
  • critical sections, mutex, semaphore, multi-read-exclusive-write
  • TThreadList and custom thread safe lists
  • and anything else I can think of....

April 2004

Configuration Management with StarTeam - Damien Boostma
When people think of Configuration Management, the immediate thought is a source code repository to manage the versions of files within a project.
While a source code repository is one important factor in Configuration Management there are other things to consider like Defect Management, Task Management, Requirements and Communication Channels.
This is what Starteam is - a solution to configuration management. We will have a look at the key capabities of Starteam in conjunction to the current integration with Delphi.

Develop plug-in programs with Jedi Plug-in Manager - Zjian Huang
While there are many ways of developing plug-in programs, Jedi Plug-in Manager provides a set of framework for developing plug-in programs efficiently. This talk will illustrate the structures of the manager using the source codes and UML diagrams. Inspired by Jedi Plug-in Manger, an easy approach of developing Office plug-in will also be discussed.

March 2004

Application in a Refactored Light - Derek Renouf
"Legacy application" is no longer a term strictly reserved for COBOL or FORTRAN applications. It is a term that can now encompass application code written in VB, C++ and even Delphi. This talk discusses some approaches to refactoring applications from an older RAD all-business-logic-in-forms code to more extensible and maintainable code. As part of this, business processes, documenting architecture, web services and XML will be discussed.
It would be good if people want to bring along some of their code, or be in a position to discuss things...

February 2004

Life after death -
the story of TPS's FlashFiler transition to NexusDB - Dr Geoff Harris

Approximately 12 months ago TurboPower Software Company announced, totally unexpectedly, their immediate withdrawal from the Delphi 3rd Party Component business. As a company with significant history, acclaimed technical acumen, and many high quality components in various stages of their life cycle, serious concerns by their customers (both hobbyist and professional Delphi Developers) for these components were raised.
Amongst their many libraries, TPS had a database engine, FlashFiler, which was in a transitional state: version 3 had already been promised to be delivered in 2003 and had significant improvements as well as fixes for a number of serious bugs. This created a difficult situation for Developers using FF2 : do they hope the Open Source version will eventually get fixed or do they undertake the onerous task of replacing their backend with another DBMS backend?
This talk presents an insider's view of how a team of FF2 experts got together and created a totally new DBMS (quite literally from scratch) in just 6 months. In particular, the old adage of "a project seeks to be on time, within budget, and meets specs - choose 2 out of the 3" is demonstrated to have been apparently broken by the team.
The talk concludes with a discussion of the NexusDB's future plans.

January 2004

Reducing Code Duplication Using OO Techniques - Dick Walker
Some examples of improving a RAD business application by introducing objects, inheritance, custom components and datamodules to improve the code, remove duplication and allow reuse. Before and after examples.

.NET Remoting with Delphi 8 - Mathias Burbach
After Lino's .NET Workshop this session will give us a chance to explore .NET Remoting with Delphi 8. We will see how to create a multi-threaded remote server, which talks to InterBase as the SQL server. We will see how easy it is to implement database connection pooling on the server side. We also will use interfaces to restrict the deployment of certain assemblies on the client side.

Material on this topic can be downloaded from here.


December 2003

New things in Delphi 8 for .NET - Glenn Stephens
For the first time in a few versions, the Delphi language has been updated. In this session you'll see the new features included as part of the Delphi Language. You'll also see how we can port applications written in Delphi 1-7 to .NET applications, and we'll also get a peek at some of the new features in Delphi 8 for .NET. Glenn's presentation provided a good insight into Borland's Enterprise Core Objects (ECO).

Glenn has provided the following links relating to ECO:
Unleashing Enterprise Models with C# Builder
Anythony Richardson's Tutorials
A reference for Object Constraint Language (OCL)

November 2003

Introduction to FinalBuilder - Vincent Parrett
FinalBuilder is designed to automate tasks that you routinely do as part of your software development cycle. It allows you to quickly define a repeatable list of actions that can be executed in the same manner time after time. FinalBuilder cuts down build times by automating tasks that often take many laborious manual steps. Any manual process with more than one step is prone to errors, humans are generally not very good at doing repetitive tasks, often doing steps out of order or missing steps altogether. FinalBuilder can help you cut out those errors.

More information about FinalBuilder can be found here.

The Observer Pattern - Mathias Burbach
The session will explain the observer pattern and show an example of an implementation based on a ClientDataSet in order to better support cloned cursors. We will have a little "side-trip" to component development.

Slides and source code for this talk can be downloaded from here.

October 2003

A few more of my favourite tools - Anthony Egerton
I have been referred to as a tool junkie by one of my colleagues. But I prefer to think of it as spending an inordinate amount of time finding tools which will save me time. Come along and find out my favourites, where the time has been wasted for you.

Anthony has provided the following links:
Free Experts
Castalia (Free or commercial Professional version)
Component Bar
Perforce IDE Plug-in
Unit Expert (near the bottom of the page)
JCL Debug
JCL Open and Save IDE dialogs with favorite folders
JCL Project Analyzer
JCL Thread Name IDE
Commercial Experts
ModelMaker Code Explorer Expert
ModelMaker Expert (comes with ModelMaker)
Clipboard History Tool (Not an Expert!)

Getting your Oracle via Delphi - Mathias Burbach
We will explore some of the basic features of Oracle (e.g. Views, Stored Procedures, Packages, ...) and how to use them from Delphi. The presentation will show different ways of talking to Oracle from Delphi and explain the advantages and disadvantages of those connection options. Finally we want to get your feedback about what you have done with Oracle, and why you chose Oracle versus MS SQL or InterBase.

September 2003

An introduction to CodeRush - Lachlan Gemmell
CodeRush is the ultimate productivity toolset that binds seamlessly into the Delphi IDE. It has been designed to fully enhance Delphi's built in editor and to provide the features and capabilities necessary to program at the speed of thought. Though Delphi provides a fine basic editor (which most people use because it understands dpr, dfm and pas file relationships), it does not provide the advanced features available with CodeRush or other third party editors.

Building applications with plugins - Chris Latta
Plugins allow you to build a modular extensible application framework which can be incrementally enhanced. Using plugins, you can ship customized applications from the one code base. In this presentation we look at when to use plugins, and what technologies can be used to build plugins and their advantages and disadvantages. An simple plugin framework will be developed as an example.

August 2003

Why I'll never create a data-aware application again - An introduction to BOLD - Glenn Stephens
Bold is fast to develop with, easy to maintain, object orientated, and gives you support for things that we all end up coding for hours. Remember Matthias' presentation on an object versioned database - that can be done in Bold within a matter of seconds. Remember my session on Undo/Redo - Bold's got that built in. Want true database portability - you can change from Interbase to Oracle to DBISAM without changing a line of code. And theres much more. Bold takes care of a whole bunch of major plumbing for you.

Debugging Hints and Tips - Anthony Egerton
90% of all developers say they have had bugs in code they have written. The other 10% are of course lying. This tutorial will be to discuss techniques that are useful in tracking down these bugs. I will be demonstrating some techniques I have found useful and I encourage people to come along and share their favourite debugging tips.

Some interesting tips and techniques were revealed by Anthony. He has provided the following links:
Remote Debugging (Included with Delphi. Install from Delphi CD)
Exception Stack Tracing
JCL (Jedi Code Library)
Exceptional Magic (Watch out for the popups)
Eureka Log
Logging Tools
OutputDebugString (Windows API call. Writes to the event log in Delphi)
GDebug (Included with GExperts)
CodeSite (Raize Components)
CodeSiteEx (Free extension for CodeSite)
IBSite (Free extension for CodeSite allows logging from Interbase SP's)
SQLSite (Free extension for CodeSite allows logging from SQL Server SP's)

The results of the ADUG Sydney Survey are available for download here.

July 2003

Creating an OLE DB driver for your Delphi data - Lachlan Gemmell
Using the Microsoft OLE DB Simple Provider Toolkit, a basic read-write OLE DB driver will be constructed allowing read write access to Delphi data and structures from OLE DB compatible applications such as Visual Studio, MS Office, and other reporting tools.

Handling Hierarchies with InterBase - Mathias Burbach
The session will cover design tips for storing hierarchies in InterBase and how to visualize them in you front-end. We will create recursive stored procedures to travers the tree and propagate changes into higher levels of the tree up to the root. We will look into the technique of pre-viewing those propagation in the front-end and how to resolve concurrency issues. Finally we will demonstrate how Borland's TClientDataSet can help on the front-end side.
The slides and source code of this presentation can be downloaded from here.

June 2003

C#Builder - Damien Bootsma
Designed to accelerate the application development lifecycle, Borland® C#Builder™ for the Microsoft® .NET Framework delivers a design-driven, pure C# development solution for .NET. Maintain design integrity throughout your development lifecycle. C#Builder is designed to improve team collaboration and enable integration of the modeling, development and runtime phases so you can deliver better software, faster. Offering technologies for flexible, high performance support and integration with enterprise databases – as well as direct communication with CORBA® and J2EE™ technologies from your .NET applications – C#Builder is optimized for enterprise development. C#Builder helps boost the productivity of your development team, the quality of your .NET applications, and the return on your technology investment.

Further information can be obtained from Damien. There are also discussion papers by Simon Thornhill on Octane and Delphi Q&A and An Open Letter to the Delphi Community.

An overview of ModelMaker - Chris Latta
ModelMaker is a CASE tool that has two-way code management with UML diagrams, design patterns, reverse engineering and refactoring. With its tight integration to Delphi, ModelMaker provides an ideal way to model your system and speed your development. In this presentation we take a look at:

  • Importing existing code.
  • Designing and restructuring classes with UML diagrams.
  • Delphi Integration.
  • Refactoring code.
  • Applying design patterns.
  • Commenting your code.

May 2003

Iterators: Inside and Out - Malcolm Smith
This presentation will review the concept of iterators and how they can be used to simplify the repetitive task of traversing aggregates. We will look at creating very simple iterators up to polymorphic versions as well as distinguishing the difference between an internal and an external iterator. Implementation issues will also be discussed. Four demo applications will be presented during the discussion to reinforce the theory. I am also working on a small utility application that uses just about everything being discussed.

This presentation is now available from Malcolm's web site. It includes a PDF document covering all aspects of the discussion, a powerpoint file as well as the 4 demos shown. Browse down to the bottom where the Delphi stuff has been added. I welcome all comments (since Delphi is not my native development environment).

An Introduction to Delphi’s Open Tools API - Bill Friedrich

The Open Tools API allows developers to add functionality to Delphi’s IDE. Some examples of additional functionality are:

  • Adding new menu items.
  • Adding wizards to the Object Repository.
  • Adding new keystrokes to the IDE.

The documentation of the Open Tools API is notoriously terse, which makes the initial learning curve quite steep. This presentation is designed to help developers avoid the pitfalls of using the Open Tools API for the first time. Source code for all examples are available here.

April 2003

User Centered Design for Developers - Glenn Stephens
The usabilty of an application is often one of the most overlooked parts of an application. While it will typically account for between three and six percent of a development project budgets, it is valued by end users as accounting for 35% of what the product means to them. We could all do with better designed applications. For end users perception is reality.

In this session, we will look at what makes an application usable. It isn't neccassarily about what components to use, but instead looking at methods of achieving the best result for the end users. So we will look at achieving their goals, a little look at cognative psychology to understand how to make applications easier to use, guidelines, usability labs and other techniques.

Glenn's slides can be downloaded from here. The slides don't really represent what was fully discussed, but hopefully will help you remember the key points.

TClientDataSet Tutorial - Mathias Burbach
This tutorial will look into the way how the TClientDataSet is intended to be used. We will cover topics like re-sorting on the fly, using the briefcase model, aggregating columns and working with multiple cursors on the same resultset.

March 2003

Creating objects from template code - Malcolm Smith
The concept of creating classes from templates almost certainly seems unnatural to Delphi programmers. Template based code is used to create a family of closely related objects that can be useful in place of sub-classing when the following criteria presents itself:

  • You have common code for each class
  • You want to perform compile-time type checking
  • You like the idea of reducing another level of indirection
  • The idea of no type casting in the implemented objects sounds cool

The files, document and slideshow can all be downloaded from here.

Inno Setup - Anthony Egerton
Inno Setup is a free installer for Windows programs. First introduced in 1997, Inno Setup today rivals and even surpasses many commercial installers in feature set and stability. I will be telling you about my experiences with Inno Setup and the tools you can use with it.

February 2003

FogBUGZ - Victor Rodrigues
FogBUGZ 3.0 is a system for managing software projects designed by software development guru Joel Spolsky. It works so well that your projects will practically manage themselves.
At the heart of FogBUGZ is a database of cases. A case can be:

  • a feature request,
  • a traditional bug report,
  • or an email from a customer.

At any given time, every case is assigned to one person who must resolve it or forward it to someone else. Cases can be prioritized, documented, sorted, discussed, edited, assigned, estimated, searched, and tracked.
Because FogBUGZ is web-based, everyone on the team always sees the whole picture. Everything from customer feature requests to high level design discussions to tiny bug fix details is instantly searchable and trackable.
Every detail of FogBUGZ was carefully crafted with one goal in mind: helping teams create great software. Rather than giving you a big pile of features, designer Joel Spolsky has created a system that works with real people doing real software development. He even left out features that seem cool but cause more problems than they solve.
The presentation will cover most aspects of FogBUGZ as well as demonstrable integration with Perforce version control system.

January 2003

Multi-tier Applications with RemObjects - Chris Latta
RemObjects is an extensible remoting framework that allows you to build scalable (and high performance) multi-tier systems in the simplest and most flexible way. In this presentation you will see:

  • what RemObjects is
  • what differentiates RemObjects from other solutions
  • how to create a RemObjects server and client
  • the advantage of doing remoting the Delphi way
  • how RemObjects works with other components and frameworks

Delphi for .Net Preview Compiler VCL Update - Mathias Burbach
During this session we will look into new features of the Delphi for .Net Preview compiler. Especially the ported VCL controls and how to use them in an application for the Win32, Linux & .Net platforms.


December 2002

Delphi and ASP.NET - Glenn Stephens
This session covers the fundamentals of creating dynamic web applications using ASP.NET and the Delphi.NET compiler.

By the end of the presentation you should understand.

  • What is ASP.NET
  • How is it better/worse/different to the other web frameworks
  • Using Delphi as a language for ASP.NET pages
  • A look at the ASP.NET controls
  • Mixing ADO.NET and ASP.NET
  • Web Services with ASP.NET
  • ASP.NET tools and resources

Tutorial on "MDI applications design" - Lachlan Gemmell
This is more of an open discussion on how and when to design MDI applications. We want to get your opinion and experience on the matter. Therefor the presentation will be kept fairly short in favour off a hopefully vivacious discussion.

November 2002

Doc-o-matic - Anthony Egerton
Have you ever thought wouldn't it be great if I could create help files for my source code just like the VCL in Delphi. Doc-o-matic is a tool that will create help files automatically from your source code and comments. Come and find out how.

Visual Design of Internet applications with Delphi & IntraWeb - Mathias Burbach
This is an introduction into the new feature of Delphi 7, which was available as a third-party tool for quite a while by Atozed Software. We will discover how easy it is to design web applications with Delphi visually.

October 2002

DIY Utility Classes - Misha Charrett
Virtually no Delphi project is completed without using one or more third party libraries/components, often saving months of development time. But there are still occasions where it is worth your time to write your own utility classes. Maybe you cannot find a component to match exactly what is required, or maybe the classes are so fundamental to your application that you think you can do a better job yourself.

In this presentation I will illustrate, through examples, how a bit of effort invested in developing your own utility classes can save significant development time and increase the quality of your software. I will examine some utilities that I have found to be extremely useful over time, such as a better "id=value" class, a simple way to deal with text data files, and a utility class to manage global variables and error handling. The focus of this presentation will be to show how to develop class libraries from the perspective of a library user, rather then a library developer - there is a difference! Inspired by Paul Spain's presentation at Melbourne ADUG.

Using Delphi IDE Macros - Anthony Egerton
This will be a practical introduction to this under-used Delphi IDE facility. The keyboard macro facility is a simple and natural extension to your editing skills, and can be a serious time-saver like 'cut and paste' or 'find and replace'.

An overview of the TMS TDBPlanner component - Craig Goodall
The TDBPlanner component is quoted as for use with planning and scheduling applications. It can be summarised in one word ... "BIG". It's a huge component with a vast set of properties and functionality to provide an interface for the coupling of time and resources. This overview will provide a brief introduction to a component which members may find useful in their future applications.

Book Review - John Mackerras
User Interface Design for Programmers by Joel Spolsky
144pp inc Index, Apress 2001, Just a few thoughts on the book written by a veteran programmer.

September 2002

WMI from Delphi - Malcolm Groves
Windows Management Instrumentation (WMI) lets your Delphi and C++Builder applications manage basically all aspects of a Windows-based computer. This means more than just enquiring about the current status of software and hardware on your system (or any system on the network), but subscribing to notifications, so that system events such as disk space availability, memory, CPU or network utilization or events occuring in applications can all be used to trigger your code to execute.

Book Reviews - Lachlan Gemmell
Lachlan will present a brief review of two very good books that every serious Delphi programmer should have in their library. The first is Code Complete by Steve McConnell, a very readable, well researched book on techniques for improving your code. The second is Delphi in a Nutshell by Ray Lischner, an excellent reference book for anyone wanting to really understand the Object Pascal language and Delphi RTL.

Delphi .Net Preview - Mathias Burbach
Looking under the bonnet of DCCIL
This session will explain how to use the new Delphi for .Net Preview command line compiler "DCCIL", which ships with Delphi 7, to become familar with the .Net Framework. We will build simple command line applications as well as Windows Forms and Active Server Pages for .Net (ASP.Net). Less slides and more examples.

August 2002

Delphi Internet Technologies - Mathias Burbach
Part 1: Web Services
We will look into the basics of creating and consuming a web service. Then we can look at implementing a multi-tier database application using a web service. Finally in a short case study we want to show how web services can help replicating data between different databases on possibly different operating systems. We should also have a few minutes to look into the task of making web services secure.

Third Party Components - Lachlan Gemmell
Lachlan takes us through issues related to third-party components, predomanantly those around access to source-code, healthy communities around third party components, etc.

July 2002: We had two presentations this month:

Glenn Stephens began with a presentation on "Threading your Delphi Apps". Pat your head and rub your tummy at the same time. Sure it takes a little longer, but you are doing more than you would normally if you were doing one thing at a time, even though it is a little more difficult.

Getting your application to do several things at once can also be tricky, but with some tried and true methods, you can implement by introducing threads into your application. This presentation helped us understand what threads are, how they work, the problems to look out for and how to resolve locking and synchronization issues. 

In addition, there were some interesting demos showing how you can add Internet downloading in a separate thread and downloading large database result sets so that users of your apps can be productive while that huge database query is running.

Mathias Burbach then gave a talk on generic database design with InterBase. The session explained how to design generic database structures. It covered topics like modelling changes over time into you r database structure as well as coping with the demand for notes columns everywhere. We looked into the ability to store real world objects into the database with totally different properties. Finally , we discussed a solution to keep information versioned, which means you can retrieve a table's content as it was days, weeks or even months ago.

June 2002: The first presentation tonight by Victor Rodrigues from Cochlear explained the advantages of Perforce, a fast software configuration management system. Perforce is not only source code version control system but it helps you managing your software development cycle by offering the branching, merging branches and multiple releases. It has a small footprint and can be used via the Internet, although a VPN might be preferable for security reasons. And the best at the end: Perforce offers a fully functional version of it's software for free, you are only restricted to two users and two client workspaces. Additional information is available here.

After the pizza break, courtesy of Borland, we looked into rule based software development. Andrew Rutherford from Object Connections showed us a product of his company named Common Knowledge. He demonstrated the flexibility of this software development tool by creating a set of rules for a insurance company from scratch. Common Knowledge allows you to visually define your business rules (Common Knowledge Studio) and keep them separate from your executable. Thanks to a set of Delphi components you can access the rules engine (Common Knowledge Rules Engine) easily and calculate whatever has been defined in your rules set. More information is available here.

- June photo's available (Victor, Andrew)

May 2002: This month we had an evening packed with interesting presentations. Rajiv & Phil from St. George Bank kicked off with a case study about MIDAS within their bank. They had used this Borland technology to build a work flow software for their loan application processing. It turned out to be very reliable and consumed only a small bandwidth. Their loan processing departments is spread over the entire country and some of them only have 64KBit connection. MIDAS solved their problems by buffering their changes until they apply their updates. An added benefit of allowing the use of an offline notebook and have the ability to use the briefcase model.

Before the pizza break Anthony showed us the usefulness of the Jedi JCL stack track. If you ever had an application deployed, which raised an error with the meaningful error message "list index out of bounds", you should look into these add-on, to provide you with much better error locating facilities.

After the pizza break Glenn presented quite a few possibilities to raise your productivity with Delphi, by creating your own property editors, creating new objects programmatically (e.g. singleton) and using the ToolsAPI of Delphi. Have you ever considered loading an entire RTF document into a TRichEdit component by right clicking on the component and specifying a file location? 

- JEDI  Code Library available here
- Gelnn's Toolsmithing examples here

April 2002: Our April meeting took us into the world of remote software teams and how to co-ordinate their development work. Damien Bootsma explained TeamsSource DSP to us and showed how you can manage not only the source code of your Delphi projects but also the collaboration of the team members. Imagine a chat software that stores the dialogue persistent. Look up what you said 2 months ago and know exactly why your remote colleague introduced this feature to the unit you usually maintain.

During the second presentation Mathias Burbach showed us how easy it is to create WAP applications with Delphi & WebBroker. We came to grips with the structure of WML documents, where a desk can hold multiple cards and how to organize your user interface on such a tiny little display. Finally we saw how WML documents can be stored in TPageProducer components and a simple way of replacing their placeholder tags with content from an InterBase database.

- Damien's DSP presentation here (and a photo here)
- Mathias Source, Database, slides, etc here

March 2002: Malcolm showed us how to talk to Nokia mobile phones from Delphi, raising the scary prospect of SMS-based spam. Also, more cool tools, with Anthony threatening Malcolm with Legal Action over the name of his session.

- Nokia SDK here (free registration required. Look for the Nokia PC Connectivity SDK link on the right hand side).
- Nokia SDK examples here
- Brian's CodeInsight Utility here.
- Find Unit\Use Unit Expert here.
- MaxSpace here

February 2002: This month we had a really interesting meeting. Lot's of helpful tips and tricks from Anthony and also a pretty simple approach how to use DUnit Testing in ordinary Delphi apps. 

- DUnit can be downloaded from
- Photos available  here.
- DUnit Examples available here.

Links from Anthony's presentation:
- Beyond Compare -
- ModelMaker Code Explorer -
- WinKey -

January 2002: Coming Soon
- Photos available  here.
- Steve's presentation available here.


December 2001: This month we looked into ActiveForms: the bugs, the downsides, and the advantages to be gained when you can work around them. In addition, we looked at communicating from your ActiveForm to the Browser, from the Browser to the ActiveForm, between two ActiveForms, and using ActiveForms in containers other than Browsers, such as Outlook.

In addition, we held a discussion regarding the future direction of ADUG Sydney. Lots of good ideas and suggestions were put forward by the guys at the meeting. As always, Borland were kind enough to keep us fed and happy.

November 2001: Glenn Stephens introduced us to the Command Pattern. He showed how to introduce a multi level undo function in your application. The actions are all instances of particular command classes, which know how to undo their action themselves. We even discussed an enhancement to his class, which would cope with database changes. If one would keep inverse DeltaDS in his class, he/she could apply those changes and thereby undo the DB changes. Glenn's source code is available here .

Before the next talk we enjoyed courtesy Pizza from Borland again. Thanks a lot!

During the second talk we had a look into dbExpress and its components (like TSQLConnection, TSQLDataset, ...). We built a simple example app with the employee DB from Borland. During this process we raised the issue of concurrency handling and demonstrated the use of a record version number incremented by a trigger. This makes it very simple to identify if a selected record still exists in the same way on the server side.

- Photos available  here.
- Mathias' sourcecode here.

October 2001: I was crook this month, so unfortunately I missed the presentations. However, Mathias reports: 

"we had quite an interesting ADUG meeting yesterday. Pierre helped us come to grips with English Query and Pivot Tables à la OLAP. The most interesting part for me was that English Query and OLAP are supposed to work with any database via an OLE DB Provider. So in theory you should be able to access data stored in an Oracle or even in InterBase, provided you purchased the OLE DB provider available for InterBase. 

In the Q&A session people were very shy. It took all motivation tricks of Pierre and me to get them to ask questions. But finally we could at least solve two problems raised by the attendees. 

After pizza and garlic bread we delved into the InterBase events and realized how helpful a subscriber (TcdsSubscriber) on top of a subscriber (TIBEvents within TcdsMaster) can be."

The sources for the IB Events presentation are available here and the slides here

Once again, thanks to Borland for keeping us fed and off the streets (err, Pizza and Training Room).

September 2001: We were very lucky to have Peter Hinrichsen up from Melbourne. Peter took us through the evolution of  a simple application, from simple for loop based traversals, through Iterators, method pointer-based Visitors, class-based Visitors, then a Visitor Factory, all tied back to his Open Source OPF (Object Persistence Framework). What was more is that all of this code was written live, from scratch, and without a single code template. Very impressive. 

Next up was Julia Bischof from Rational. Julia took us through a very educational overview of modelling and the UML in particular, then showed off Rose's support for Delphi. This was done firstly by explaining the details of Rose's Delphi-UML mapping, then Reverse Engineering Peter's OPF code into Rose.

Borland again kept us fed and happy with Pizza, Pepsi and such, and Vladimir Nelenson was the winner of the Delphi Informant Collection CD door prize.

More info about Peter's presentation, and his Open Source OPF is available here

August 2001: Glenn Stephens introduced us all to the .Net Framework and what opportunities we have for integration with Delphi 5. After a run through things like Assemblies, IL and the CLR, he demonstrated Delphi calling a C# object, VB.Net calling a Delphi COM object, and discussed calling a Delphi DLL from .Net. He finished off with a discussion about ADO.Net and ASP.Net, amongst other things.

Glenn also showed off some wizards he's written for Delphi 5 to allow easy importing of .Net Assemblies into Delphi, and exporting of Delphi COM objects to .Net Assemblies, complete with obligatory About box with grinning photo of Glenn. The wizards are available for download here (if the thought of that About box hasn't put you off, that is).

Again, we had Pizza and Pepsi kindly supplied by Borland, and Phil Stephens walked away with the door prize (Delphi Component Design by Danny Thorpe).

July 2001: This month, the first meeting of the Sydney Chapter,  we were in the hands of Mathias Burbach and Colin Johnson. Colin, from Borland PSO, was first up showing off Delphi 6's support for Web Services, prompting off an interesting discussion on the relative maturity of this technology and it's readiness for production. Regardless what you think of the technology, I think everybody agreed that Delphi's support for it was first rate. Mathias then gave us a very entertaining presentation on Generic Database Design, and the web application he's developed using this technology. The ability for an administrator to define completely new objects and have them immediately searchable by the website was extremely impressive. Thanks to both our presenters and to Borland for supplying Pizzas and drinks

- Photos available  here.
- Mathias' slideshow here.
- Colin's slideshow and example here