> CL52 DBFCDX/SIX3 SIXCDX drivers are broken and can corrupt 
> index files.
> so I cannot give you any guaranties that it will work. Anyhow if
> you want to use it and access the same index files by Harbour then
> you should use in Harbour SIXCDX RDD which tries to replicate some
> low level SIXCDX behavior. It creates less efficient indexes in some
> cases but it's a workaround for some CL52/SIXCDX bugs.
> CL53 DBFCDX/COMIX seems to be much better choice for Clipper.

Ok. I realize. No chance to recompile in Cl53, however, as i don't own it.

> Additionally you have to chose _EXACTLY_ the same locking schemes in
> both compilers.
> CL52 DBFCDX/SIXCDX uses FP locking. CL53 DBFCDX/COMIX use CL53 locking
> but it can be changed to FP locking if you link with your application
> cdxlock.obj
> 
> >    REQUEST DBFCDX
> >    RDDSetDefault("DBFCDX")
> >    RddInfo( RDDI_LOCKSCHEME, DB_DBFLOCK_CLIP )
> 
> None of Clipper CDX drivers uses such locking scheme so it's wrong.

Ok. My mistake. I based my choice on xHarbour manual saying:
"Setting the locking scheme to 1 will lock the database files like
CA-Clipper 5.2 does. To use CA-Clipper 5.3's locking scheme, set
DBFLOCKSCHEME to 2. This will emulate shared locks using exclusive locks.
Visual FoxPro's locking scheme is selected with DBFLOCKSCHEME set to 3." 

> If you are using HB_CODEPAGE_IT850 in Harbour then you have 
> to link your
> Clipper application with ntxita.obj. Otherwise index files 
> will be corrupted
> because Clipper and Harbour will use different collation orders.

I ever link ntxita.obj, also in DBFNTX build.

> Harbour and CL53 DBFCDX/COMIX do not support none compound IDX indexes
> so I guess you are using CL52 DBFCDX or SIXCDX driver.

Sorry, i was meaning production ".CDX" multitag indexes...

> In Clipper and Harbour 1022 "Lock required" RT error is logical error.
> It means that programmer didn't successfully locked the record. The
> physical record lock is not checked when this error is generated.
> It means that it's a problem with application code. Check why it's
> exploited when you compile it using Harbour. It's possible 
> that setting
> valid locks scheme will hide the problem but for sure it will not fix
> the code. Such error should not appear in code which always checks
> results of RLOCK/FLOCK operations and never tries to write to 
> not locked
> record so it's something what you should try to locate and 
> fix in your code.

The problem is ONLY in Cl52+DBFCDX. With app built with Harbour or 
Cl52+DBFNTX all works fine.
The Rlock() returns .t. in all the builded app, BUT ONLY in
Cl52+DBFCDX exits a "Lock required" error at subsequent field replace.
This happens also if the Cl52+DBFCDX is the ONLY program running on
the network...
So, i think that the problem is not deriving from my code... Same code
 works fine in all other points of app updating a record.

> See above. You have to use exactly the same locking scheme 
> and national
> sorting order inb both applications. If you are using CL52 
> DBFCDX or SIXCDX
> then use in Harbour SIXCDX too. If you are using CL53 DBFCDX 
> or COMIX them
> use in Harbour DBFCDX.
> CL52 DBFCDX and SIXCDX have serious bugs and for me should 
> never be used
> in production environment. Anyhow it's possible that your 
> code does not
> exploit them very often so you can live with it.

The feel i receive from your message is that i'm going in a puzzled
 challenge, so i think i'll have two options:
A) To leave the Cl52+DBFNTX app, working well from twenty year ago, and
   to change the driver of Harbour to DBFNTX
B) To take the courage of replace with Harbour+DBFCDX all the install

I don't know the effectiveness of the DBFNTX in Harbour, so i ask you
 if also the A) choice is dangerous and the pure Harbour path is the only
affordable.
My great thanks for your support and precious feedback.
Best regards.
Maurizio

_______________________________________________
Harbour mailing list (attachment size limit: 40KB)
Harbour@harbour-project.org
http://lists.harbour-project.org/mailman/listinfo/harbour

Reply via email to