dbsetindex("IV20121231.NT1")

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

Moderator: Moderatoren

Antworten
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

dbsetindex("IV20121231.NT1")

Beitrag von BJelinek »

Hallo

ich hab angefangen mein WAWI programm nach xBase zu migrieren.

Sieht gar nicht so schlecht aus.

Aber der Teufel steckt im Detail:

Ich will/muss 1 zu 1 migrieren, also im CMD Fenster ohne GUI Schalter.

1. Problem
Ich erstelle Indexdateien mit "IV20121231.NT1" . Funktioniert
aber dbsetindex("IV20121231.NT1") findet den index nicht wie in Clipper.
Was kann man tun ?

2. Problem
Dastellung der ASC(1) - ASC(31) zeichen am Bildschirm bring nur das Rechteck.
Gibts da einen Schalter oder so ?

Danke im Voraus.

Gruß Bernd
Grüße
Bernd

Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21150
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 206 Mal
Danksagung erhalten: 67 Mal

Re: dbsetindex("IV20121231.NT1")

Beitrag von Manfred »

Hi,

nur mal so in den Raum geworfen: hast Du es mal mit Ordlistadd() versucht?
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
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: dbsetindex("IV20121231.NT1")

Beitrag von BJelinek »

ordlistadd verhält sich genauso wie dbsetindex

oError:args :
-> VALTYPE: C VALUE: E:\wawi8\INDEX\IV120612.NT2
oError:canDefault : J
oError:canRetry : J
oError:canSubstitute: N
oError:cargo : NIL
oError:description : Name ist bereits vergeben
oError:filename :
oError:genCode : 67
oError:operation : DbSetIndex
oError:osCode : 0
oError:severity : 2
oError:subCode : 8071
oError:subSystem : BASE
oError:thread : 1
oError:tries : 1

Gruß Bernd
Grüße
Bernd

Mitglied des Deutschsprachige Xbase-Entwickler e. V.
UliTs
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2828
Registriert: Fr, 10. Feb 2006 9:51
Wohnort: Aachen
Hat sich bedankt: 259 Mal
Danksagung erhalten: 12 Mal
Kontaktdaten:

Re: dbsetindex("IV20121231.NT1")

Beitrag von UliTs »

BJelinek hat geschrieben:..
-> VALTYPE: C VALUE: E:\wawi8\INDEX\IV120612.NT2
..
oError:description : Name ist bereits vergeben
..
Hast Du vielleicht 2 Indexdateien, die z.B. IV120612.NT2 und IV120612.NT1 heißen?

Uli
-------
Mitglied XuG Cologne
Mitglied XuG Osnabrück
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: dbsetindex("IV20121231.NT1")

Beitrag von AUGE_OHR »

BJelinek hat geschrieben:oError:args :
-> VALTYPE: C VALUE: E:\wawi8\INDEX\IV120612.NT2
oError:canDefault : J
oError:canRetry : J
oError:canSubstitute: N
oError:cargo : NIL
oError:description : Name ist bereits vergeben
oError:filename :
oError:genCode : 67
oError:operation : DbSetIndex
oError:osCode : 0
oError:severity : 2
oError:subCode : 8071
oError:subSystem : BASE
oError:thread : 1
oError:tries : 1
Hilfe : NTXDBE (ORDER-Komponente)
Zum Beispiel ist dieser Code nicht erlaubt:

Code: Alles auswählen

INDEX ON Nachname TO Name.nt1 
   INDEX ON Vorname  TO Name.nt2 
   SET INDEX TO Name.nt1, Name.nt2 
In diesem Fall wird "Name" implizit als TAG Bezeichner bei zwei Indexdateien verwendet, was zu einem Laufzeitfehler führt.
Diese Situation läßt sich vermeiden, wenn explizit verschiedene TAG Bezeichner verwendet werden:

Code: Alles auswählen

INDEX ON Nachname TAG Nachname TO Name.nt1 
   INDEX ON Vorname  TAG Vorname  TO Name.nt2 
   SET INDEX TO Name.nt1, Name.nt2 
gruss by OHR
Jimmy
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: dbsetindex("IV20121231.NT1")

Beitrag von AUGE_OHR »

BJelinek hat geschrieben:2. Problem
Dastellung der ASC(1) - ASC(31) zeichen am Bildschirm bring nur das Rechteck.
Gibts da einen Schalter oder so ?
hm ... Zeichen unter CHR(32) gehen doch auch unter Cl*pper nicht, oder ?
was für eine Font benutzt du ?
gruss by OHR
Jimmy
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: dbsetindex("IV20121231.NT1")

Beitrag von BJelinek »

Hallo Uli

ich habe IV20121231.NT1 bis IV20121231.NT9

Unter Clipper war das kein Problem ?

Dann gehen wohl temporäre Indexdateien
vom Typ "db00001.tmp" auch nicht mehr.

Hallo Jimmy

unter Clipper wurden die ASC(1) bis ASC(31) angezeigt.
Kartensymbole Pfeile ... Gut ASC(7) und ASC(9) natürlich nicht.

Wenn ich mit GUI = yes arbeite, zeigt er sie ja an.
nur nicht bei GUI = no

Gruß Bernd
Grüße
Bernd

Mitglied des Deutschsprachige Xbase-Entwickler e. V.
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: dbsetindex("IV20121231.NT1")

Beitrag von BJelinek »

Hallo Jimmy

Hab noch was vergessen.

ich verwende in meinem Start-Batch
chcp 437


Gruß Bernd
Grüße
Bernd

Mitglied des Deutschsprachige Xbase-Entwickler e. V.
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: dbsetindex("IV20121231.NT1")

Beitrag von brandelh »

wir sollten eigentlich die eingestellte CP 850 nutzen ...

Dieses Programm gibt bei mir mit GUI und OHNE GUI die Zeichen aus:

Code: Alles auswählen

proc main
   LOCAL x
   FOR x := 0 TO 32
       ? x, CHR(x)
       IF x = 15
          WAIT
       ENDIF
   NEXT
   wait
return
Dateianhänge
PROJECT.XPJ
(618 Bytes) 434-mal heruntergeladen
TEST.PRG
(138 Bytes) 444-mal heruntergeladen
Gruß
Hubert
UliTs
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2828
Registriert: Fr, 10. Feb 2006 9:51
Wohnort: Aachen
Hat sich bedankt: 259 Mal
Danksagung erhalten: 12 Mal
Kontaktdaten:

Re: dbsetindex("IV20121231.NT1")

Beitrag von UliTs »

BJelinek hat geschrieben:ich habe IV20121231.NT1 bis IV20121231.NT9
Unter Clipper war das kein Problem ?
Dann gehen wohl temporäre Indexdateien vom Typ "db00001.tmp" auch nicht mehr.
...
Hallo Bernd,
temporäre Indexdateien mit anderer Kennung als ".ntx" sind kein Problem!
Wenn Du nicht so ohne weiteres die Namen der Indexdateien ändern kannst (z.B. wegen konkurierendem Zugriff mit alten Anwendungen), würde ich bei Alaska nachfragen. Vielleicht gibt es ja eine einfache Lösung.
-
Ansonsten würde ich direkt auf DBF/CDX umsteigen :-) und nicht nur einfach neue Namen für die Indexdateien vergeben.

Uli
-------
Mitglied XuG Cologne
Mitglied XuG Osnabrück
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: dbsetindex("IV20121231.NT1")

Beitrag von brandelh »

Hi,

ich habe zwar keine Erfahrungen mit Indexdateien, deren Endung nicht NTX oder CDX sind, aber wenn es nur ab TAG liegt,
den kann man beim Öffnen doch angeben ...

Code: Alles auswählen

OrdListAdd( "Index.NT1", "Vorname" ) 
OrdListAdd( "Index.NT2", "Nachname" ) 
...
Bei NTX ist - meines Wissens - kein TAG Name beim Erstellen möglich bzw. dieser wird einfach ignoriert.
NTX haben keine gespeicherten TAG Namen, da sie ja nur einen Index unterstützten. Bei CDX sieht das anders aus.
Gruß
Hubert
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: dbsetindex("IV20121231.NT1")

Beitrag von AUGE_OHR »

BJelinek hat geschrieben:ich habe IV20121231.NT1 bis IV20121231.NT9

Dann gehen wohl temporäre Indexdateien
vom Typ "db00001.tmp" auch nicht mehr.
sieh dir doch bitte noch mal genau den Unterschied an.

im ersten Fall ist VOR dem Punkt alles "gleich" -> Problem TAG
im zweiten wirst du vermutlich den "Zähler" in "db00002" ändern und das "tmp" kommt NACH dem Punkt
BJelinek hat geschrieben:Kartensymbole Pfeile
welchen Font verwendest du ?
ist dein Source OEM oder ANSI ?

was sagt das Browse hier bei dir ?

Code: Alles auswählen

PROC MAIN
      CLS
      dbCreate( "__COLL", {{ "CHAR", "C", 3, 0}})
      USE __COLL EXCLUSIVE NEW

      // throw in all possible chars
      FOR x := 1 TO 255
         dbAppend()
         __Coll->Char := CHR( x)
         dbCommit()
      NEXT

      // index it ...
      INDEX ON __Coll->Char TO __COLL

      browse()
RETURN
gruss by OHR
Jimmy
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: dbsetindex("IV20121231.NT1")

Beitrag von BJelinek »

Hallo

Danke für eure Demos.
Bei mir kommen nur leere Kästchen.
Was mache ich nur falsch ?

Habs auch auf einem neuen Rechner mit win7 64 Home Premium
versucht. Gleiches Ergebins.

Werde nächste Woche mal Alaska Hotline fragen.

setlocale(NLS_IOEMCP) --> 850

Auch chcp 437 oder chcp 850 haben keine auswirkung.

Frage zum Editor:

Ich verwende eine dos Editor ted5, der hat kein ansi.

Aber eine schöne Funktion die ich so nocht nicht gefunden habe.
Suche fortlaufend einen Text. Es werden nur die Zeilen mit dem Text angezeigt.
Und kann diese Zeilen bearbeiten/ändern. Hilft mir sehr beim Migrieren.
Grüße
Bernd

Mitglied des Deutschsprachige Xbase-Entwickler e. V.
UliTs
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2828
Registriert: Fr, 10. Feb 2006 9:51
Wohnort: Aachen
Hat sich bedankt: 259 Mal
Danksagung erhalten: 12 Mal
Kontaktdaten:

Re: dbsetindex("IV20121231.NT1")

Beitrag von UliTs »

MultiEdit kann das auch :-)
-------
Mitglied XuG Cologne
Mitglied XuG Osnabrück
Benutzeravatar
Hans Zethofer
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 278
Registriert: Fr, 27. Jan 2006 8:29
Wohnort: 2700 Wiener Neustadt
Hat sich bedankt: 1 Mal
Kontaktdaten:

Re: dbsetindex("IV20121231.NT1")

Beitrag von Hans Zethofer »

Ed for Windows kann das auch =D>
_____________
lg
Hans
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14641
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 87 Mal
Kontaktdaten:

Re: dbsetindex("IV20121231.NT1")

Beitrag von Jan »

Ich mach das seit Jahren mit VX.

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
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: dbsetindex("IV20121231.NT1")

Beitrag von brandelh »

BJelinek hat geschrieben:Hallo

Danke für eure Demos.
Bei mir kommen nur leere Kästchen.
Was mache ich nur falsch ?
kann es sein, dass du in den Eigenschaften der CMD Box eine andere Schrift ausgewählt hast ?

Consolas, Lucida Console oder Rasterschriftart sind normal, wobei ja Xbase++ normalerweise den Alaska-CRT Schriftsatz verwenden (bei GUI Modus mit XbpCrt),
Bei GUI=NO sollte der Zeichensatz von Windows verwendet werden.
Gruß
Hubert
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: dbsetindex("IV20121231.NT1")

Beitrag von BJelinek »

Hallo Hubert,
Nur Windows Standard Schriften.
Ich wüste nicht mal wie ich eine andere Schriftart
In der cmd Box verwenden könnte.
Grüße
Bernd

Mitglied des Deutschsprachige Xbase-Entwickler e. V.
UliTs
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2828
Registriert: Fr, 10. Feb 2006 9:51
Wohnort: Aachen
Hat sich bedankt: 259 Mal
Danksagung erhalten: 12 Mal
Kontaktdaten:

Re: dbsetindex("IV20121231.NT1")

Beitrag von UliTs »

BJelinek hat geschrieben:... Ich wüste nicht mal wie ich eine andere Schriftart in der cmd Box verwenden könnte.
Einfach nach <Alt-Shift-Leertaste> den Menüpunkt "Eigenschaften" auswählen, anschließend den Reiter "Schriftart" und dort die gewünschte Schriftart und Größe auswählen :D .
Mausliebhaber können auch statt <Alt-Shift-Leertaste> die Ecke Oben-Links anklicken :razz:

Uli
-------
Mitglied XuG Cologne
Mitglied XuG Osnabrück
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: dbsetindex("IV20121231.NT1")

Beitrag von BJelinek »

Hallo Uli,
habe mich wohl falsch ausgedrückt.
Einfach nach <Alt-Shift-Leertaste> den Menüpunkt "Eigenschaften" auswählen, anschließend den Reiter "Schriftart" und dort die gewünschte Schriftart und Größe auswählen :D .
Mausliebhaber können auch statt <Alt-Shift-Leertaste> die Ecke Oben-Links anklicken :razz:
Klar geht dann das Fenster auf um eine andere Schrift zu wählen.
2 oder 3 je nach Windows.
Aber eine neue nicht aufgeführte Schriftart hinzufügen habe ich gemeint.
Grüße
Bernd

Mitglied des Deutschsprachige Xbase-Entwickler e. V.
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: dbsetindex("IV20121231.NT1")

Beitrag von BJelinek »

Hallo

bin mit meinem Codepage/Schriftart etwas weiter.

Wenn ich die Rasterschriften nehme gehts, bei Consolas und
Lucida Console gehts nicht. Bei Clipper tuts mit allen drei.

Auch kann man in der Registry weitere Truetype Schriften eintragen
wie Courier New, aber das fehlen auch asc 1 -31 Zeichen.
Ich hab eine ASCII.TTL gefunden, die Funktioniert mit Word, aber nicht
in der CMD-Box. Man bräuchte eine AlaskaCrt.ttl oder so.

Das Index-Problem ist eigentlich keines mehr. Ich bin ja nicht mehr auf 8.3
angewiesen. Gibts halt IV20121231_1.ntx _2.ntx ...
Man denkt halt noch in Clipper 8.3 Dateikonvention.

Einen Mischbetrieb xBase/Clipper will ich eh nicht zulassen.
Clipper/xBase gibts für bestimmte externe Probleme jetzt schon.
Daten aus SQL und Access Datenbanken auslesen und für Clipper
aufbereiten.
Grüße
Bernd

Mitglied des Deutschsprachige Xbase-Entwickler e. V.
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: dbsetindex("IV20121231.NT1")

Beitrag von AUGE_OHR »

BJelinek hat geschrieben:Aber eine neue nicht aufgeführte Schriftart hinzufügen habe ich gemeint.
wenndu Win7/8 meinst : "START" -> gibt doch mal "font" ein.
Systemsteuerung\Alle Systemsteuerungselemente\Schriftarten

p.s. schon mal mit "Zeichentabelle" versucht die ''↑↓" einzufügen ?
gruss by OHR
Jimmy
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: dbsetindex("IV20121231.NT1")

Beitrag von brandelh »

In der Wissensbasis habe ich meinen Vortrag zur Devcon 2007 MIG_01 veröffentlicht.
In dem letzten Beispiel zeige ich, wie man mit XbpCrt() und GUI=YES die Schriftart setzen kann.
Es gehen nicht alle Fonts (besser es sieht bei vielen scheußlich aus), aber einige schon ...
Gruß
Hubert
Antworten