Discussion:
Error: "Directory in use by earlier version of Paradox"
(too old to reply)
Tony McGuire
2005-02-17 22:01:59 UTC
Permalink
: worked fine until yesterday 10:00pm, displayed a "Directory in use by
: earlier version of Paradox" error when they started it around 8:00am.


Isn't that indicating that pdoxusrs.lck (OLD DOS version) is 'active', and
locking out newer versions?

You might have them delete all .lck files and restart your BDE app. You may
also need to delete your .net file.

It COULD even be a case where the .lck file is on one or more local systems
that couldn't get to the netdir, and the user said to go ahead and start/run
anyway. And their local .net file is controlling the shared directory.
This could even have come from some old program a user tried, and now the
.lck/.net file(s) is locking them out.


--
--
Tony
_____________
Ronaldo Souza
2005-02-17 23:06:43 UTC
Permalink
Post by Tony McGuire
Isn't that indicating that pdoxusrs.lck (OLD DOS version) is 'active', and
locking out newer versions?
From where this OLD DOS version .lck could have come from? I thought
that XP didn't support DOS apps anymore... :-)

Puzzled,
Ronaldo
Ronaldo Souza
2005-02-17 23:09:33 UTC
Permalink
Forgot to mention that the system is single-user and the machine has no
network or internet connections.
TIA,
Ronaldo
Ronaldo Souza
2005-02-17 23:53:54 UTC
Permalink
I found a thread on Tamarack that probably clears the issue: as Tony
pointed out, there must be a lck file lost somewhere. The customer had
said that he searched all his C: drive and found nothing but, in the
thread I mentioned, the file was found only when "I searched system
folders and hidden files and folders and I found it in the
C:\Documents and Settings\User\Local Settings\Temp" ! I bet that this is
the case! I'll give it a shot and post the results tomorrow.

Thanks to Tony and, via Tamarack, to Bill Todd and Steven Green who, by
the way, has a great little utility on his site called "Remlok32" which
searches for lck and net files on any given drive. It can be downloaded
from: http://www.diamondsg.com/Downloads/REMLOK32.ZIP

To read the thread search Tamarack for: "Directory in use by earlier
version of Paradox" and "Delphi 7 Enterprise"

Thanks,
Ronaldo
Bill Todd
2005-02-17 23:10:02 UTC
Permalink
Tony is close. :) Prior to Paradox 4.0 for DOS there was only one lock
file named Paradox.lck. In 4.0 for DOS the locking mechanism was changed
to improve performace and the new lock mechanism uses the PdoxUsrs.lck
file. However, because the two locking systems are incompatable Pdox DOS
4.0 and later also creates a Paradox.lck file with a directory lock in it
to prevent an earlier version from accessing a database that is being used
by 4.0 or later.

Pdox DOS 4.0 and later also checks on startup to see if there is an
existing Paradox.lck file that indicates the directory is being used by
Paradox 3.5 for DOS or earlier. If a later version finds a lock file
indicating that the directory is being used by an older version it
displays the error message your client got. Apparently you have a corrupt
Paradox.lck file that looks to the BDE like it was created by Pdox DOS 3.5
or earlier.

Tony's solution is exactly right. Delete all of the .LCK files in the data
directory and the problem should go away.
--
Bill Todd (TeamB)
TeamB cannot answer questions received via email
Ronaldo Souza
2005-02-18 01:23:27 UTC
Permalink
Thanks Bill, as usual your reply nailed the problem and is also very
instructive.

Ronaldo

PS: *P*l*e*a*s*e* write a book or something... :-) I'd suggest the title
"BDE for dummies" :-)
Rick Carter
2005-02-18 17:57:30 UTC
Permalink
Post by Ronaldo Souza
PS: *P*l*e*a*s*e* write a book or something... :-) I'd suggest the title
"BDE for dummies" :-)
Actually, Bill was co-author of a Delphi book that's long out
of print, but may still be available somewhere:
"Delphi 2: A Developer's Guide"
http://www.amazon.com/exec/obidos/tg/detail/-/1558514767/qid=1108749090/sr=8-1/ref=sr_8_xs_ap_i1_xgl14/104-7219737-6608768?v=glance&s=books&n=507846

Considering the shaky future of Paradox tables and the BDE,
don't hold your breath for any new books on the topic. :)

Rick Carter
***@despammed.com
Chair, Delphi/Paradox SIG, Cincinnati PC Users Group
Ronaldo Souza
2005-02-18 19:34:49 UTC
Permalink
Post by Rick Carter
Considering the shaky future of Paradox tables and the BDE,
don't hold your breath for any new books on the topic. :)
My relationship with Paradox has been a love-hate one, but I'll surely
miss it since my apps never have more than 5 concurrent users... :-(

Thanks for the reference,
Ronaldo
Rick Carter
2005-02-18 19:35:30 UTC
Permalink
Post by Ronaldo Souza
Post by Rick Carter
Considering the shaky future of Paradox tables and the BDE,
don't hold your breath for any new books on the topic. :)
My relationship with Paradox has been a love-hate one, but I'll surely
miss it since my apps never have more than 5 concurrent users... :-(
You may want to take a look at Advantage Database Server.
The local server is free, and would work fine with a small group
of concurrent users. It's fairly easy to deploy, and you can
convert BDE apps without a lot of recoding. There is a good
book out to get you started, written by Cary Jensen.

Rick Carter
***@despammed.com
Chair, Delphi/Paradox SIG, Cincinnati PC Users Group
Ronaldo Souza
2005-02-18 20:52:11 UTC
Permalink
Post by Rick Carter
You may want to take a look at Advantage Database Server.
Bill Todd already suggested it and we are beginning our tests. Our major
concern is that the local server does not support transactions. Everyone
says that ADS is SO MUCH more stable than BDE that rollbacks are almost
unnecessary. Personally, I'm leaning towards ADS, but some people want
FireBird... :-(
Post by Rick Carter
There is a good book out to get you started, written by Cary Jensen.
Found on Amazon: "Advantage Database Server: The Official Guide"
Thanks for the ref. Seems VERY complete.

Ronaldo
Bill Todd
2005-02-18 20:11:48 UTC
Permalink
One thing you might point out to those suggesting a conversion to Firebird
or any other SQL database server is Wayne Niddery's excellent article on
C/S design at http://community.borland.com/article/0,1410,28160,00.html .

The advantage of Advantage is that it supports both SQL access and the
same navigational access model that Paradox tables used. Therefore, you do
not have to change the architecture of your application as described in
Wayne's paper. This can reduce the conversion effor dramatically.
--
Bill Todd (TeamB)
TeamB cannot answer questions received via email
Ronaldo Souza
2005-02-18 21:22:40 UTC
Permalink
Post by Bill Todd
One thing you might point out to those suggesting a conversion to
Firebird or any other SQL database server is Wayne Niddery's excellent
article on C/S design at
http://community.borland.com/article/0,1410,28160,00.html .
Thans Bill.... AGAIN...
Ronaldo
Ronaldo Souza
2005-02-18 22:29:48 UTC
Permalink
Bill,

In his article, Wayne says: "Using a TTable against such a system
[set-oriented database] is slower because the BDE must convert the table
functions into SQL instructions to be sent off to the database."
Wouldn't this also be true if I replaced "BDE" with "ADS"?

The big selling point for me is "easy migration", i.e. I won't need to
change the structure of our program (TTable x TQuery). Is there a trade
off between performance x simplicity of conversion?

A bit confused...
Ronaldo
Bill Todd
2005-02-18 22:43:58 UTC
Permalink
No, and that is the point I was trying to make. SQL databases have one
data access method and that method uses SQL and is, therefore, set
oriented. ADS has two data access methods. One uses SQL and is set
oriented but the other is ISAM (the same method used by Paradox). Ads was
designed from the ground up to be a drop-in BDE replacement so you do not
have to invest the time to redesign your application for set oriented data
access as described in Wayne's article.

Basically, all you have to do is use GReplace to change all TTables to
TAdsTables and TQuerys to TAdsQueries. Then replace your TDatabase with a
TAdsConnection. The other global change is to search for IndexName := ''
and change it to IndexName := 'Primary' because the primary index of an
ADT table does have a name.

You will probably run into a few other minor things that have to be
changed but it is about as simple as possible. I have a client where one
programmer converted a large accounting application (several hundred
units) in two months including testing, tuning and some minor feature
additions.

I hope this provides a more lucid explanation. If you have any other
questions just ask.
--
Bill Todd (TeamB)
TeamB cannot answer questions received via email
Post by Ronaldo Souza
Wouldn't this also be true if I replaced "BDE" with "ADS"?
Ronaldo Souza
2005-02-19 00:00:19 UTC
Permalink
Post by Bill Todd
I hope this provides a more lucid explanation.
It surely does!

One last thing: do you see the lack of transactions in the local server
as a big problem? If I got it right, I can even leave the transaction
code in my source but it won't do anything (except for ADS-C/S).

Thanks,
Ronaldo
Bill Todd
2005-02-18 23:31:26 UTC
Permalink
This post might be inappropriate. Click to display it.
Ronaldo Souza
2005-02-19 01:14:53 UTC
Permalink
Post by Bill Todd
I think lack of transactions in any database is a problem. :) However,
if your application was designed to work without transactions it may not
be a serious problem for you.
It was not. :-(
Post by Bill Todd
IIRC one of the marketing people at Advantage told me that they do have
an ALS version that has transaction control, although they do not
advertise it and I assume it is not free. However, if you do need
transaction control in a single user application you might post a
message on the Advantage newsgroups and see if the product really exists.
The PDF un the "More Information" link on the Advantage TDataSet
Descendant page says:

"Advantage Database Server
(client/server)
Maximum number of transactions - limited by memory <<<<<<<<<<<<<<<<<<<<
Maximum number of connections - limited by memory
Maximum number of files opened simultaneously - limited by memory
Maximum number of tables - limited by memory

Advantage Local Server
(local and peer-to-peer)
Maximum number of transactions - unsupported <<<<<<<<<<<<<<<<<<<<
Maximum number of connections - limited by memory
Maximum number of files opened simultaneously - limited by memory
Maximum number of tables - limited by memory"

Thanks,
Ronaldo
C P
2005-02-19 01:47:17 UTC
Permalink
One thing you may want to keep in the back of your mind... SQL Server 2005
Express looks pretty appealing. This is the new free "MSDE" version of SQL
Server. It seems a lot better than the previous MSDE versions in that there
will no longer be a performance governer. The specs seem pretty full
featured, and free is always good. Of course, it's not past beta yet, but
by the name it seems MS has at least committed to getting it out this year.
It does have full transaction support, and should make for no-change
migrations to full SQL Server for customers that need it. Deployment is
also supposed to be a lot easier. Since this is SQL based, it may not make
for as easy a migration as Advantage, but if transactions and price are a
concern and you can wait a little, this may be something to look at.
Rick Carter
2005-02-18 22:57:12 UTC
Permalink
Post by Ronaldo Souza
In his article, Wayne says: "Using a TTable against such a system
[set-oriented database] is slower because the BDE must convert the table
functions into SQL instructions to be sent off to the database."
Wouldn't this also be true if I replaced "BDE" with "ADS"?
The big selling point for me is "easy migration", i.e. I won't need to
change the structure of our program (TTable x TQuery). Is there a trade
off between performance x simplicity of conversion?
A bit confused...
As I understand it (and in my experience so far), Advantage is
fairly unique in being a true client/server database, yet the
database engine will translate any operations against TadsTable
into instructions that are just about as efficient as code
written against a query.

Bill can probably elaborate more. Or, you could get more info
from the Advantage website.
http://resolution.extendedsystems.com/ads/default.htm

While it's true that the local server does not support transactions,
assuming you're using some version of Delphi that includes
TClientDataSet, perhaps you could use the Datasnap technology
for applying changes.

Rick Carter
***@despammed.com
Chair, Delphi/Paradox SIG, Cincinnati PC Users Group
Rick Carter
2005-02-18 23:00:11 UTC
Permalink
Post by Rick Carter
Bill can probably elaborate more.
Matter of fact, it looks like he was composing his own message
simultaneously. Had I known, I would have considered his own
more thorough explanation to be sufficient.

Rick Carter
***@despammed.com
Chair, Delphi/Paradox SIG, Cincinnati PC Users Group
Ronaldo Souza
2005-02-19 00:06:12 UTC
Permalink
Post by Rick Carter
Matter of fact, it looks like he was composing his own message
simultaneously. Had I known, I would have considered his own
more thorough explanation to be sufficient.
Lucky me! Got great advice from two knowledgeable guys! :-)

I *really* wish that the generosity often seen in these newsgroups could
spread to other areas of human endeavor!

Thanks,
Ronaldo
Loading...