Icon View Thread

The following is the text of the current message along with any replies.
Messages 1 to 8 of 8 total
Thread dbisamen.pas(3565): Unit dbisamsv was compiled with a different version of dbisamlb.TDBISAMBaseObjec
Fri, Apr 14 2023 7:39 AMPermanent Link

Edvar Klakken

I have inherited a Delphi project that was started in the previous millenium.
The previous developer used Delphi 10.1, and DBISAM 4.43 (with source).
I'm now using the latest Delphi, 11.3 Patch 1.

I tried to compile the 4.43 source with Delphi 11.3 but had to give up and then bought 4.50 B5.
When compiling my source I get Delphi error
[dcc32 Fatal Error] dbisamen.pas(3565): Unit dbisamsv was compiled with a different version of dbisamlb.TDBISAMBaseObject

Embarcadero help says:
"This fatal error occurs when the declaration of symbol declared in the interface part of a unit has changed, and the compiler cannot recompile a unit that relies on this declaration because the source is not available to it.

There are several possible solutions - recompile Unit1 (assuming you have the source code available), use an older version of Unit2 or change Unit2, or get a new version of Unit1 from whoever has the source code."

a) The only file version I can check is the freshly installed 4.50 directories, where all files have same date 2022-09-09  they vary with timestamp either 15:51 or 15:52.  
b) As I experimented with 4.43. there could be some path trouble, but I have uninstalled 4.43 and also renamed directories with old code (around due to version control).  
c) As there is no dbisamsv.pas I'm stuck; seems like Delphi thinks it's necessary to recompile it?
What is the purpose of selling "with source" if that source can't be used to build with a newer Delphi?
d) The place in disamen.pas where compilation stops looks like this:
   {$IFNDEF DBISAM_NOSERVER}
   dbisamsv,
   {$ENDIF}
Reading double negations is tricky, but I understand this to be active in DBISAM SERVER mode.
As I mentioned I have inherited the code but my impression is that DBISAM is used with a single instance of the application program and the database files is on the same PC.  So no "server".  
DBISAM_NOSERVER is only found in the file dbisamen.pas, never in my code, and it's not mentioned in the DBISAM manual either.  So it's a mystery why dbisamsv is in use ???

I'm stuck here - maybe I have to roll back to Delphi 10.1 as that must have worked ...
Fri, Apr 14 2023 11:03 AMPermanent Link

Edvar Klakken

Edvar Klakken wrote:

Uninstalled 4.50, re-installed it outside c:\ProgramFiles so that Windows allows write to the directory.
Re-built the two .dpk projects, now I get by the DBISAM (... and into other problems with other components).
Tue, Apr 18 2023 7:39 AMPermanent Link

Edvar Klakken

Edvar Klakken wrote:

Still getting Fatal Errors with 4.50.
I can get around some problems, but then it just pops up a different place.

Wha precicely does tghe fault message mean?
[dcc32 Fatal Error] dbisamen.pas(3565): Unit dbisamsv was compiled with a different version of dbisamlb.TDBISAMBaseObject

Sounds like this is on Pascal level; are the object declarations different ???
TDBISAMBaseObject  depends on DBISAM_MEMORY_DEBUG ???
Tue, Apr 18 2023 8:02 AMPermanent Link

Roy Lambert

NLH Associates

Team Elevate Team Elevate

Edvar


It sounds as though you have some old dcu or possibly bpl files on the search path somewhere. Do a search for *.dcu & *.bpl and see what you have hanging around.

Roy Lambert
Thu, Apr 20 2023 8:44 AMPermanent Link

Raul

Team Elevate Team Elevate

<<
Edvar Klakken wrote:

Still getting Fatal Errors with 4.50.
I can get around some problems, but then it just pops up a different place.

Wha precicely does tghe fault message mean?
[dcc32 Fatal Error] dbisamen.pas(3565): Unit dbisamsv was compiled with a different version of dbisamlb.TDBISAMBaseObject

Sounds like this is on Pascal level; are the object declarations different ???
TDBISAMBaseObject  depends on DBISAM_MEMORY_DEBUG ???
>>

Edvar,

As Roy said look for any old precompiled files since those are compiled with either different compiler and/or different compiler settings than current 11.3.

I'm not clear from previous posts if you need to use DBISAM source code files at all - are you modifying any DBISAM files ?

if you are not then make sure source files are not on search paths (just precompiled ones - dcu's etc) and that your project has no dbisam source fies in its folders - since it would use and compile a local file instead of dbisam component one.

Raul
Thu, Apr 20 2023 10:49 AMPermanent Link

Edvar Klakken

Just a termination of this thread in case I can help someone with the same problem.

I got a suggestion from Tim Young:
   {$DEFINE DBISAM_NOSERVER}
to get rid of Delphi's attempt to recompile dbisamsv as dbisamsv.pas is not supplied.

This did not work, and after some Googling is seems that Delphi sometimes thinks that it must recompile in  complex file "include" in "include" situations.  In my case many projects would compile DBISAM, but a single one failed.  Re-structuring the "uses" clauses in the .pas files may have resolved it?

I decided to try to re-build DBISAM based on the source I had purchased.
It stopped in dbisamr.dpk as it "contain dbisamsv.pas" (which I did not get with the source).
But as I put DBISAM_NOSERVER into dbisamvr.inc it's not needed so I removed the reference to dbisamsv.pas, then everything worked fine.  
Fri, Apr 21 2023 9:22 AMPermanent Link

Edvar Klakken

Answer to Raol:
Why did I purchase with source?
The Delphi software I'm now working with was started in the late 1990s, and I guess it will be maintained stil for 5-10 years.  Then we must have a working DBISAM for that period of time.
As the simplest DBISAM is binary only, we must rely on Elevate to continue upgrades as Delphi versions step up.
I hoped that buying source made us independent of Elevate's life or death.

PS.
In the project that I inherited there is a 4.43 (for Delphi 10.1) with source.  I could not re-build that with Delphi 11.3.
But now I have tried so many things that I can't remember what I did with 4.43 ...
Fri, Apr 21 2023 11:03 AMPermanent Link

Raul

Team Elevate Team Elevate

<<
Edvar Klakken wrote:

Answer to Raol:
Why did I purchase with source?
The Delphi software I'm now working with was started in the late 1990s, and I guess it will be maintained stil for 5-10 years.  Then we must have a working DBISAM for that period of time.
As the simplest DBISAM is binary only, we must rely on Elevate to continue upgrades as Delphi versions step up.
I hoped that buying source made us independent of Elevate's life or death.
>>

Hi Edvar,

Thanks. Actually my question was not about "why source" but rather "why is your project recompiling DBISAM source files" .

We have a source code license as well for same reasons.

Other than 1 project we have we use DCUs and never actually recompile DBISAM source. The only project we do that with is one where we have made some small modifiactions (an even then we just include that one DBISAM source code file in the project source folder and not actually modify DBISAM installed source files)

Raul
Image