December

Automated Code Generation using CodeSmith – Lachlan Gemmell

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 – Mathias Burbach

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

DUnit on DataModules – Mathias Burbach

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 – Zijian Huang

ModelMaker provides some demo codes for the observer pattern. The talk will enhance the demo patterns for production.

October

ADO.NET & Borland Data Provider In-Depth – Mathias Burbach

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

Object Oriented Design using Together Designer Community Edition and Colour – Lachlan Gemmell

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 – Xerxes Battiwalla

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

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

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

Threads to your help – Part 2 – Malcolm Smith

This session will cover the basics of threading in Delphi.
In particular

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

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

April

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

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

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

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.