Icon View Thread

The following is the text of the current message along with any replies.
Messages 1 to 4 of 4 total
Thread 4.27 error with Delphi 2007
Fri, Oct 31 2008 7:17 AMPermanent Link

Tony Bryer
I've just installed 4.27 and trying to rebuild of one of my apps gives
this error

[DCC Error] Orderform.pas(53): F2051 Unit dbisamlb was compiled with a
different version of dbisamst.DBISAM_TYPESTR_ZSTRING_FIXED

I have deleted all *425 bpls and manually removed DBISAM and reinstalled
it on the component palette

The dcu directory shows the following DBISAM DCUs after the failed build

Directory of J:\DCU\DBISAM

31/10/2008  21:55            72,905 dbisamcn.dcu
31/10/2008  21:55            22,504 dbisamcr.dcu
31/10/2008  21:55           911,817 dbisamen.dcu
31/10/2008  21:55           348,129 dbisamlb.dcu
31/10/2008  21:55           304,376 dbisamsq.dcu
31/10/2008  21:55            17,791 dbisamst.dcu
31/10/2008  21:55           464,237 dbisamtb.dcu

Ideas gratefully received

--
Tony Bryer, Greentram Software Pty Ltd, Melbourne, Australia
'Software to build on'  http://www.greentram.com




Fri, Oct 31 2008 12:35 PMPermanent Link

Tim Young [Elevate Software]

Elevate Software, Inc.

Avatar

Email timyoung@elevatesoft.com

Tony,

<< I've just installed 4.27 and trying to rebuild of one of my apps gives
this error

[DCC Error] Orderform.pas(53): F2051 Unit dbisamlb was compiled with a
different version of dbisamst.DBISAM_TYPESTR_ZSTRING_FIXED

I have deleted all *425 bpls and manually removed DBISAM and reinstalled it
on the component palette

The dcu directory shows the following DBISAM DCUs after the failed build >>

Are you compiling from the DBISAM source code itself ?  If so, then you want
to make sure that you're not mixing those DCUs with other DCUs that may be
in different paths in the compiler search path.  Also, we normally recommend
that you just compile using the DCUs that we distribute, and do not compile
the source code that we provide, unless you absolutely need to.

--
Tim Young
Elevate Software
www.elevatesoft.com

Mon, Nov 3 2008 7:13 AMPermanent Link

Tony Bryer
In article <964D8A6B-5C4F-4623-8C4D-11448C804677@news.elevatesoft.com>, Tim
Young [Elevate Software] wrote:
> Are you compiling from the DBISAM source code itself ?  If so, then you want
> to make sure that you're not mixing those DCUs with other DCUs that may be
> in different paths in the compiler search path.  Also, we normally recommend
> that you just compile using the DCUs that we distribute, and do not compile
> the source code that we provide, unless you absolutely need to.

Thanks now sorted. The fix was to remove the DBISAM\Code from the search path,
so (I presume) it gets everything from the BPLs installed into Delphi. I will
confess that although I have used Delphi from D1 I still have a somewhat shaky
understanding of the mechanics of components and how everything interacts!

--
Tony Bryer, Greentram Software Pty Ltd, Melbourne, Australia
'Software to build on'  http://www.greentram.com



Mon, Nov 3 2008 12:57 PMPermanent Link

Tim Young [Elevate Software]

Elevate Software, Inc.

Avatar

Email timyoung@elevatesoft.com

Tony,

<< Thanks now sorted. The fix was to remove the DBISAM\Code from the search
path, so (I presume) it gets everything from the BPLs installed into Delphi.
I will confess that although I have used Delphi from D1 I still have a
somewhat shaky understanding of the mechanics of components and how
everything interacts!  >>

No, you need the \Code subdirectory in the search path.  What you don't need
is the \Code\Source subdirectory.  Also, if you have a dbisamst.dcu file in
the \Code directory, just delete it so that the compiler will rebuild it.
We had a report like yours from another user, and it was this dbisamst.dcu
file that was causing the issue.  We shipped DBISAM with the dbisamst.pas
unit in the \Code subdirectory for a couple of builds, and that was in
error.  It should be in the \Code\Source subdirectory only.  The problem is
that the uninstall won't remove any dbisamst.dcu file that was built using
the dbisamst.pas unit that was shipped in the \Code subdirectory, so you end
up with a dbisamst.dcu file that matches the older version of DBISAM instead
of the newer version.  So, ultimately, the permanent fix for your situation
is to:

1) Delete the existing dbisamst.dcu file
2) Recompile your application
3) Delete the dbisamst.pas file from the \Code subdirectory

As for the architecture of Delphi, it's very simple:

1) The IDE uses the design-time package *only* for dealing with the
design-time aspects of the components (registration, component palette,
object inspector editors, etc.).  The design-time package uses the run-time
package for the actual work, such as opening tables and displaying the data
at design-time.

2) Your application will only use the runtime package if you set up the
project to compile using runtime package(s).  If you don't (the default
situation), then the compiler *always* compiles your project using the
compiler search paths (project and library search paths, combined), checking
every .DCU to make sure that it is current against any .PAS that may be
present, and making sure that all .DCUs have matching interfaces.

--
Tim Young
Elevate Software
www.elevatesoft.com

Image