Sydney Meetings
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 jvcs.adug.org.au 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)
OPXpert
GExperts
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!)
Clipmate
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
MadExcept
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.
|