Delphi XE (2011) + 7 + PostgreSQL 9.0 ZeosLib
Today I installed the newly released
Embarcadero RAD Studio XE and I liked what it found. We also intend to
write some notes about this release in the coming days.
Some time ago I wrote a little step-by-step how to install the component
package in Delphi 2010 ZeosLib ( http://flovato.blogspot.com/2009/10/zeoslib-for-delphi-2010.html )
and today I return again to this issue but with a slightly different approach.
Also, a few weeks ago we had the release of version 9.0 of PostgreSQL, and I
wondered how this new version is supported by ZeosLib.
Download
The last official release, stable and affordable ZeosDBO is version 6.6.6 which
was released on December 30, 2009 and supports Delphi 5 to Delphi 2007 (Delphi
11).
Version 7.0 was already eagerly awaited by the public that used Delphi since
2009 due to Unicode support, and even today, remains in development without a
date for release.
In the previous article we used an alpha revision ZeosLib 7 and, as we will use
the latest revision of the testing branch for Delphi 2011
(XE).
Checkout of the branch test ZeosLib ( svn: / / zeos.firmos.at / zeos /
branches / testing ) to a directory.
If your client is svn command line, open the command prompt and move to the
directory where you want to checkout and run the command: svn checkout
svn: / / zeos.firmos.at / zeos / branches / testing.
If you have installed Tortoise SVN client or any other, the procedure is even
easier.
In this article the directory D: \ Delphi \ Components \ ZeosDBO2011 \ will
be the venue for the checkout is used as a base path. So, if you choose a
different path, just adjust the settings in step-by-step installation for this
new path.
NOTE: The revision used during the writing of this article was r822.
Installing the Package
The installation procedure is quite
simple:
1. Open the Delphi IDE with administrator permissions. Although
not required, leave as a strong recommendation because of problems I had on
other occasions.
2. In the Delphi IDE, click the "Open Project"from
the "File" and navigate to the subdirectory "\
packages \ delphi 15" from where it was made ZeosLib
checkout. There, open the project group ZeosDbo.groupproj.
NOTE: The "15" path that identifies the version of
Delphi, in this case, refers to Delphi XE. If you are using another
version, you must open the project group corresponding to that version.
A second tip for those who already have ZeosDBO 7 installed and want to
update them, I recommend before starting the installation to be removed from
the current version of the IDE and also deleted all files created in the last
build (. Dcp,. Dcu,. loca,. identcache,. dsk,. and map. bpl).
The latter can be found in the "build" (\
packages \ delphi15 \ build). So, make sure that this
folder contains no files.
3. Build all projects (Project menu -> Build
All Projects);
If everything is ok, Delphi will report the occurrence of many hints and
warnings during the build of packages. Do not worry, for now we assume
that these reports do not present problems.
However you will most likely have an error message stating that they did not
find a particular file name (Example: "... [DCC Fatal Error]
ZCore.dpk (51): F1026 File not found: 'ZVariant.dcu' .. .. ")
To fix this simply just find the corresponding file mentioned in the error
message from the subdirectory "src" in the place
where the checkout was done and add the full path in the Path libray Delphi
(Menu Tools -> Options -> Environment Options -> Delphi
Options -> Library).
To avoid this and
several other reports of this type, add each of the subdirectories for the
source code of the Library Path ZeosLib, as shown in the picture below.
Note that the
definition of the paths I use "$ (DelphiComponents) \".
In my work there is an
environment variable called DelphiComponents that is intended
to refer to the directory where all the components / third-party packages are
located.
This facilitates the
migration and use of different versions of components without requiring
reconfiguration of the path in the projects or in the Delphi IDE.
If you have not or will
not add this environment variable, just replace "$
(DelphiComponents) \" path by which the ZeosDBO is located (which
this article is D: \ Delphi \ Components \ ZeosDBO2011).
NOTE: If after adding
the directories in the Delphi Library Path continues to display the error
message, just close it and reopen it. Do not forget to reopen it with
administrator permissions!
4. Install the package of components by selecting the "Install" (from
the context menu) package "ZComponentDesign150.bpl";
If you try to install
the package "ZComponentDesign150.bpl" is displayed
an error message like the image below, it means that Delphi did not find the
file. GLP specific.
The most practical and quick to fix this problem is to enter the directory
where this. BPL is located in the PATH system.
Note that when builder packages ZeosLib will be created a directory located in
the subdirectory called build. "\ Packages \ delphi15."
So, just add this path (D: \ Delphi \ Components \ ZeosDBO2011 \ packages \
delphi15 \ build) in the directory listing of the environment variable "PATH".
NOTE: Any changes in the environment variables will require close and reopen
the Delphi for the changes to take effect.
If you try to install the package "ZComponentDesign150.bpl" is
displayed an error message same as or similar to the image below, was probably
an oversight in the specification of the path ZeosDBO.
Classify as careless because this error was caused when he was trying to
install ZeosDBO who was in a path different from that referenced in the System
Path and Library Path (in the Delphi IDE).
So, be sure to indicate exactly all the path to the directory where the ZeosDB
is located.
If all goes well Delphi will present a dialog informing the list of components
that were installed.
5. Validating the installation package
Optionally, you can actually confirm that the installation is consistent by
checking the installed component packages in Delphi.
To access this menu Component -> Install Packages
... and find the entry "Zeos Database Components".
Connection to PostgreSQL 9.0
The first question to be seen is whether this version of ZeosDBO can at least
connect to PostgreSQL.
At this point it is assumed that you have already installed PostgreSQL 9.0.
For this basic test, a
new project was created and a componentTZConnection was dropped on
the form.
Note on the image that
the connection was made successfully on the database itself postgres
(metadata).
A point to note is that
the list of protocols (protocol property) there is an item "postgresql-9" as
expected. Thus, the most likely option was to use "postgresql-8."
I think the time is
added with an exclusive option for postgresql version 9, since this introduces
significant changes.
The component configuration TZConnection the DFM is presented as:
ZConnection1 object: TZConnection
Properties.Strings = (
'Codepage = UTF8'
'Client_encoding = UTF8')
AutoCommit = False
Connected = True
Protocol = 'postgresql-8'
HostName = '127 .0.0.1 '
Port = 5432
Database = 'postgres'
User = 'postgres'
Password = 'mypassword'
Left = 126
Top = 16
end
After changing the component and set the Connected property to True for
the first time, a notification error like the image below was presented.
This is a classic
problem that is solved or by copying the necessary files to the project folder
or by adding the directory where those files are located in the PATH system.
All DLLs are located in
the subdirectory "bin" of the PostgreSQL
installation directory (probably C: \ Program Files \ PostgreSQL \ 9.0
\ bin).
As shown in the picture above, the chosen solution was to add the PostgreSQL
installation directory to the PATH system that is not necessary to have to
recopy the DLLs for new projects that use the ZeosDBO.
After this was only necessary to close and reopen the Delphi and the connection
was as expected.
Performing queries
After a successful connection, I performed some tests with the basic components
to display the records of the tables.
In the picture below you can notice the DBGrid component displaying information
in the table "INFORMATION_SCHEMA.TABLES."
Despite a few basic tests done in design mode, the components apparently are
working well. I did not notice any kind of failure.
To validate likely to support issues that are often observed in specific
circumstances or after a long time of use, I decided to migrate an entire
system developed in Delphi 2010 to Delphi XE.
This system has a database framework based on ZeosDBO and, in theory, build and
run this system through the Delphi XE would expose any lack of support for the
PostgreSQL 9.0, since this framework makes moderate use of resources /
components ZeosDBO and the system has a relatively large database.
Migrating the system to Delphi XE
I figured it would be more work, but hardly had to do much.
When you open the project group in this system that was created in Delphi 2010,
Delphi XE not even make any kind of format conversion.
The only job I had was replacing, in clause of the projects require the
reporting of some third party component packages (eg by replacing tms2010
tms2011). This does not cost more than 30 minutes.
I only found problems with some third party packages that were being
used.However, for all had a newer version that supported the Delphi XE. Thus,
the real work was to install new versions of these packages, except for one
that required some manual intervention.
Well, here's what interests us is the support for PostgreSQL 9.0 and ZeosDBO
about it surprisingly was not necessary to modify a line if you want the
database framework (the framework was created in 2008 with the still-new
version 6.6.4 the ZeosDBO!). The build system was 100% without any problem
(only a few hints).
The focus of this post is not migrating to Delphi XE systems, but the
experience was very positive. And I encourage anyone using Delphi 2010 to
make this upgrade.
Initially I thought that was too good to be true and everyone would simply turn
the system upside for the colors appear. To my delight, the software
usually performed successfully passing all tests automated.
Conclusion
I am fully aware that it is a broader use of components and features of
this framework ZeosDBO database, it is rash to conclude that the alpha release
of version 7.0 is fully compatible with PostgreSQL 9.0, but I feel tranquil
encourage anyone who is thinking about doing some kind of migration / upgrade
seemed to do so.