Gemeinsamer Betrieb Clipper und Xbase ntx

Auf dem Weg von Clipper, FoxPro u.ä. nach Xbase++

Moderator: Moderatoren

Antworten
Peter Schweizer
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 153
Registriert: Do, 06. Apr 2006 10:51
Danksagung erhalten: 3 Mal

Gemeinsamer Betrieb Clipper und Xbase ntx

Beitrag von Peter Schweizer »

Hallo Gemeinde,

eine alte Clipperanwendung wurde nach Xbase migriert, es soll jedoch für eine gewiese Zeit beide Anwendungen parallel eingesetzt werden.
Nun habe ich die Xbase-Exe gestartet und zuerst alle Indexdateien (NTX) neu erstellt.

Wenn ich nun mit der Clipper-Exe starte bekomme ich an Programmstellen mit z.B. DbGoto( xy ) einen

Error DBFNTX/1210 Dateifehler festgestellt

Was mache ich falsch ?
bzw. muß ich bei der Erstellung des Index-Dateien im Xbase Programm etwas beachten ?

Gruß Peter
Gruss Peter
Benutzeravatar
BJelinek
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 218
Registriert: Sa, 02. Jun 2012 20:57
Wohnort: 73257 Köngen
Hat sich bedankt: 9 Mal
Danksagung erhalten: 3 Mal

Re: Gemeinsamer Betrieb Clipper und Xbase ntx

Beitrag von BJelinek »

Hallo Peter,
bei gemischtem Betrieb lasse ich die NTX-Dateien
vom Clipper-Programm erstellen.
Die NTX-Dateien unterscheiden sich voneinander, auch in der Größe.
Xbase kommt damit zurecht. umgekehrt Clipper nicht.
Wenn dann nur noch Xbase, NTX-Dateien löschen und vom Xbase-Programm erstellen
lassen.
Grüße
Bernd

Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
mini990
1000 working lines a day
1000 working lines a day
Beiträge: 592
Registriert: Sa, 28. Jan 2006 9:44
Wohnort: Berg-Richtheim bei Neumarkt i.d.Opf.
Danksagung erhalten: 1 Mal

Re: Gemeinsamer Betrieb Clipper und Xbase ntx

Beitrag von mini990 »

Hallo Peter,
bei mir läuft ein Programm im Hybridmosua.
Teile noch in Clipper, Teile in Xbase.
Indizierung erfolgt über XBase, ein Zugriff von Clipper aus ist problemlos möglich
und läuft fehlerfrei.
Folgende Einstellungen vornehmen:

SET Optimize OFF
SET Smartfilter OFF
SET Rushmore OFF

Gruß Stefan
Peter Schweizer
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 153
Registriert: Do, 06. Apr 2006 10:51
Danksagung erhalten: 3 Mal

Re: Gemeinsamer Betrieb Clipper und Xbase ntx

Beitrag von Peter Schweizer »

Hallo Bernd und Stefan,
viellen Dank für eure Hilfe.

habe zuerst Stefans Vorschlag in das xBase Programm eingebaut und alles von xBase aus neu indizieren lassen.
Ergebniss: nach wie vor stürzt das Clipper Programm bei DbGoTo( xy) ab.

dann habe ich wie von Bernd vorgeschlagen alle Indexe im Clipper Prg aufbauen lassen.
Ergebniss: es geht !

Unsicherheit: ich weiß noch nicht ob das xBase Programm sauber mit den Clipper Indexen umgeht.
Testbetrieb läuft !

Falls also noch jemand über den Problembereich etwas weiß, bitte Info !

Gruß Peter
Zuletzt geändert von Peter Schweizer am Mo, 03. Apr 2017 18:07, insgesamt 1-mal geändert.
Gruss Peter
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

Re: Gemeinsamer Betrieb Clipper und Xbase ntx

Beitrag von AUGE_OHR »

Peter Schweizer hat geschrieben:dann habe ich wie von Bernd vorgeschlagen alle Indexe im Clipper Prg aufbauen lassen.
Ergebniss: es geht !
ich empfehle ebenfalls das Indiezieren mit einer Cl*pper App zu machen. (auch wenn Alaska was anderes sagt)

von Stephan solltest du bei gemeinsamen Betrieb

Code: Alles auswählen

SET Optimize OFF
SET Smartfilter OFF
SET Rushmore OFF
setzten, also alles was Cl*pper nicht kann.

Frage : VIO (ohne /PM:PM) oder Hybrid Modus ?

bei Cl*pper wurde ja mit "Wait-State" gearbeitet d.h. du hast evtl INKEY() ohne einen Wert.
solche Stellen können dafür sorgen das deine CPU 0 ( das ist die 1st CPU) bei 100% klebt ... INKEY(0.1) hilft meistens.
gruss by OHR
Jimmy
Benutzeravatar
Klaus Schuster
Foren-Administrator
Foren-Administrator
Beiträge: 366
Registriert: Do, 24. Jan 2008 10:01
Wohnort: 90762 Fürth
Hat sich bedankt: 9 Mal
Danksagung erhalten: 9 Mal

Re: Gemeinsamer Betrieb Clipper und Xbase ntx

Beitrag von Klaus Schuster »

Hallo Peter,

ich setze verschiedene Xbase- und Clipper-Programme auf den selben Tabellen ohne Probleme parallel ein. Dies gelang erst nach langem Ringen mit folgender dbeSys:

Code: Alles auswählen

#include "Collat.CH"
#include "DbfDbe.CH"
#include "DMLB.CH"
#include "NtxDbe.CH"
#include "Set.ch"

PROCEDURE DbeSys

   SET( _SET_COLLATION,  COLLAT_GERMAN )
   Set( _SET_DATEFORMAT, 'DD.MM.YYYY'  )

   // Engine für DBF-Dateien laden

   IF ! DbeLoad( "DBFDBE", .T.)
      MsgBox( "Database Engine DBFDBE nicht geladen", "DB-Fehler" )

   ENDIF

   // Engine für CDX-Dateien laden

   IF ! DbeLoad( "CDXDBE" , .T.)
      MsgBox( "Database Engine CDXDBE nicht geladen", "DB-Fehler" )

   ENDIF

   // Engines für Datensatz- und Index-Management zusammenfügen

   IF ! DbeBuild( "DBFCDX", "DBFDBE", "CDXDBE" )
      MsgBox( "Database Engine DBFCDX nicht erzeugt", "DB-Fehler" )

   ENDIF

   // Aenderungen an der Data-Komponente GELTEN FUER ALLE abgeleiteten DBEs

   DbeInfo( COMPONENT_DATA, DBFDBE_LIFETIME, 0 )
   DbeInfo( COMPONENT_DATA, DBFDBE_LOCKOFFSET, 10^9 )

   // Aenderungen an der CDX-Order-Komponente

   DbeInfo( COMPONENT_ORDER, DBE_LOCKMODE, LOCKING_EXTENDED )
   DbeInfo( COMPONENT_ORDER, NTXDBE_LOCKOFFSET, 10^9 )

   // Engine für NTX-Dateien laden

   IF ! DbeLoad( "NTXDBE" , .T.)
      MsgBox( "Database Engine NTXDBE nicht geladen", "DB-Fehler" )

   ENDIF

   // Engines für Datensatz- und Index-Management zusammenfügen

   IF ! DbeBuild( "DBFNTX", "DBFDBE", "NTXDBE" )
      MsgBox( "Database Engine DBFCDX nicht erzeugt", "DB-Fehler" )

   ENDIF

   // Aenderungen an der NTX-Order-Komponente

   DbeSetDefault( 'DBFNTX' )
   DbeInfo( COMPONENT_ORDER, NTXDBE_LOCKOFFSET, 10^9 )

   // DBF-Data-Komponente + CDX-Order-Komponenten als aktive DBE festlegen
   DbeSetDefault( 'DBFCDX' )

RETURN
Die NTX-Dateien werden ausschließlich durch eine Xbase-Applikation erstellt. Die Geschwindigkeitsteigerung ist enorm, ohne dass seit Jahren ein Problem auftrat.
Gruß Klaus
Peter Schweizer
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 153
Registriert: Do, 06. Apr 2006 10:51
Danksagung erhalten: 3 Mal

Re: Gemeinsamer Betrieb Clipper und Xbase ntx

Beitrag von Peter Schweizer »

Hallo Klaus
habe Deine dbesys Einträge eingebaut.
Jedoch ohne Erfolg.

Hallo Jimmy
ja der Schalter /PM:PM ist gesetzt.

Vielen dank für eure Ratschläge.
Gruß Peter
Gruss Peter
Benutzeravatar
mini990
1000 working lines a day
1000 working lines a day
Beiträge: 592
Registriert: Sa, 28. Jan 2006 9:44
Wohnort: Berg-Richtheim bei Neumarkt i.d.Opf.
Danksagung erhalten: 1 Mal

Re: Gemeinsamer Betrieb Clipper und Xbase ntx

Beitrag von mini990 »

Welche Clipper Version ist da eingesetzt?

Gruß Stefan
Benutzeravatar
Klaus Schuster
Foren-Administrator
Foren-Administrator
Beiträge: 366
Registriert: Do, 24. Jan 2008 10:01
Wohnort: 90762 Fürth
Hat sich bedankt: 9 Mal
Danksagung erhalten: 9 Mal

Re: Gemeinsamer Betrieb Clipper und Xbase ntx

Beitrag von Klaus Schuster »

Hast Du anschliessend die alten Indexdateien gelöscht und neue erstellt?
Gruß Klaus
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

Re: Gemeinsamer Betrieb Clipper und Xbase ntx

Beitrag von AUGE_OHR »

Klaus Schuster hat geschrieben:Dies gelang erst nach langem Ringen mit folgender dbeSys:

Code: Alles auswählen

...
   // Engine für CDX-Dateien laden
   IF ! DbeLoad( "CDXDBE" , .T.)
      MsgBox( "Database Engine CDXDBE nicht geladen", "DB-Fehler" )
   ENDIF
   // Engines für Datensatz- und Index-Management zusammenfügen
   IF ! DbeBuild( "DBFCDX", "DBFDBE", "CDXDBE" )
      MsgBox( "Database Engine DBFCDX nicht erzeugt", "DB-Fehler" )
   ENDIF

-> hier bist du noch auf DBFCDX

   // Aenderungen an der Data-Komponente GELTEN FUER ALLE abgeleiteten DBEs
   DbeInfo( COMPONENT_DATA, DBFDBE_LIFETIME, 0 )
   DbeInfo( COMPONENT_DATA, DBFDBE_LOCKOFFSET, 10^9 )

   // Aenderungen an der CDX-Order-Komponente
   DbeInfo( COMPONENT_ORDER, DBE_LOCKMODE, LOCKING_EXTENDED )
   DbeInfo( COMPONENT_ORDER, NTXDBE_LOCKOFFSET, 10^9 )

-> das ist aber NICHT Cl*pper

   // DBF-Data-Komponente + CDX-Order-Komponenten als aktive DBE festlegen
   DbeSetDefault( 'DBFCDX' )
was mich wundert bei "der" DBESYS [-X

DBFCDX kennt Cl*pper nicht. wenn du Comix oder Sixdrive meinst dann FOXCDX.

DbInfo() sollten IMHO immer nach der entsprechenden DBE eingesetzt werden wobei "default" Werte (10^9) überflüssig sind.

auch "LOCKING_EXTENDED" kennt Cl*pper nicht, deshalb würde ich es im Zweifel nicht verwenden.

DBFDBE_LIFETIME auf 0 zu setzten ist eine gute Idee wenn man Threads verwendet

Fazit : wer eine Cl*pper App auf Xbase++ umstellen will muss nicht die original DBESYS verändern sondern seinen Cl*pper Code ordentlich "anpassen"
gruss by OHR
Jimmy
Benutzeravatar
Klaus Schuster
Foren-Administrator
Foren-Administrator
Beiträge: 366
Registriert: Do, 24. Jan 2008 10:01
Wohnort: 90762 Fürth
Hat sich bedankt: 9 Mal
Danksagung erhalten: 9 Mal

Re: Gemeinsamer Betrieb Clipper und Xbase ntx

Beitrag von Klaus Schuster »

DBFCDX kennt Cl*pper nicht. wenn du Comix oder Sixdrive meinst dann FOXCDX.
Das stimmt. Es gibt jedoch Dbf-Dateien die ausschließlich unter Xbase zum Einsatz kommen; für diese kommt DBFCDX zum Einsatz.
Werden Dateien geöffnet, die auch mit Clipper verwandt werden, wird mit dbUseArea( .T., 'DBFNTX',..) die DBFNTX herangezogen.

Fazit : wer eine Cl*pper App auf Xbase++ umstellen will muss nicht die original DBESYS verändern sondern seinen Cl*pper Code ordentlich "anpassen"[/quote]
Was verstehst Du unter einer ordentlichen Anpassung von Clipper?
Gruß Klaus
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15688
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: Gemeinsamer Betrieb Clipper und Xbase ntx

Beitrag von brandelh »

Habt Ihr tatsächlich geprüft, dass die Sperren funktionieren ?

1. Wenn bei Clipper eine die OBJ für 2 GB eingelinkt wurde, muss der Lockoffset in Xbase auch angepasst werden. Hierzu gibt es unterschiedliche Angaben welche Zahl verwendet werden soll (HEX 7FFFFFFF oder 80000000 ?)
2. Unter Windows 7 müssen die Cache Werte für Metadaten gelöscht werden (also das cachen abgeschaltet), und zwar auf jeder Maschine die eine EXE ausführt (auch Terminalserver), ich meine das macht der SMB2 Patch (bin mir aber nicht sicher).
3. SMB Einstellungen (welche hab ich vergessen ;-) ) müssen stimmen, wurde häufig schon beschrieben hier.
Gruß
Hubert
Benutzeravatar
mini990
1000 working lines a day
1000 working lines a day
Beiträge: 592
Registriert: Sa, 28. Jan 2006 9:44
Wohnort: Berg-Richtheim bei Neumarkt i.d.Opf.
Danksagung erhalten: 1 Mal

Re: Gemeinsamer Betrieb Clipper und Xbase ntx

Beitrag von mini990 »

Kann nur sagen dass es bei meinen Anwendern mit den o.a. Einstellungen läuft.
Auf über 110 Installationen seit über 2 Jahren.
Verwendete Clipper Version 5.1

Gruß Stefan
Peter Schweizer
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 153
Registriert: Do, 06. Apr 2006 10:51
Danksagung erhalten: 3 Mal

Re: Gemeinsamer Betrieb Clipper und Xbase ntx

Beitrag von Peter Schweizer »

Hallo an alle,

zum Einsatz kommt ein Clipper 5.2
alle Index-Dateien wurden selbstverständlich neu erstell.

Inzwischen scheint es zu gehen( Erste tests sind gut).

Wie ich leidvoll erkennen mußte war aus irgendeinem Grund, der nicht nachvollziehbar ist, die prg Datei die lediglich die dbesys enthielt
aus der project.xpj verschwunden.
Ich habe zwar wie Stefan vorgeschlagen hatte die dbesys angepasst, jedoch keine positive Reaktion erfahren dürfen.
Erst ein nochmaliges debuggen hat dann die fehlende dbesys in der exe zutage gefördert.
Zu Deutsch: so ein sch........!

Nochmals vielen Dank an Alle die sich mit mir den Kopf zerbrochen haben.
Gruß Peter
Gruss Peter
Benutzeravatar
mini990
1000 working lines a day
1000 working lines a day
Beiträge: 592
Registriert: Sa, 28. Jan 2006 9:44
Wohnort: Berg-Richtheim bei Neumarkt i.d.Opf.
Danksagung erhalten: 1 Mal

Re: Gemeinsamer Betrieb Clipper und Xbase ntx

Beitrag von mini990 »

Ich verwende DBESYS nicht, da ich bei den von Clipper und Xbase genutzten Dateien nur mit NTX arbeite.
Es reicht also die Einstellung:

SET Optimize OFF
SET Smartfilter OFF
SET Rushmore OFF

Gruß Stefan
Antworten