Seite 1 von 1

dbsetindex("IV20121231.NT1")

Verfasst: Mi, 13. Jun 2012 20:01
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

Re: dbsetindex("IV20121231.NT1")

Verfasst: Mi, 13. Jun 2012 20:20
von Manfred
Hi,

nur mal so in den Raum geworfen: hast Du es mal mit Ordlistadd() versucht?

Re: dbsetindex("IV20121231.NT1")

Verfasst: Mi, 13. Jun 2012 21:20
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

Re: dbsetindex("IV20121231.NT1")

Verfasst: Do, 14. Jun 2012 0:01
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

Re: dbsetindex("IV20121231.NT1")

Verfasst: Do, 14. Jun 2012 1:32
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 

Re: dbsetindex("IV20121231.NT1")

Verfasst: Do, 14. Jun 2012 1:35
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 ?

Re: dbsetindex("IV20121231.NT1")

Verfasst: Do, 14. Jun 2012 11:49
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

Re: dbsetindex("IV20121231.NT1")

Verfasst: Do, 14. Jun 2012 11:53
von BJelinek
Hallo Jimmy

Hab noch was vergessen.

ich verwende in meinem Start-Batch
chcp 437


Gruß Bernd

Re: dbsetindex("IV20121231.NT1")

Verfasst: Do, 14. Jun 2012 12:21
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

Re: dbsetindex("IV20121231.NT1")

Verfasst: Do, 14. Jun 2012 12:43
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

Re: dbsetindex("IV20121231.NT1")

Verfasst: Do, 14. Jun 2012 13:44
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.

Re: dbsetindex("IV20121231.NT1")

Verfasst: Fr, 15. Jun 2012 1:17
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

Re: dbsetindex("IV20121231.NT1")

Verfasst: Sa, 16. Jun 2012 20:15
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.

Re: dbsetindex("IV20121231.NT1")

Verfasst: Sa, 16. Jun 2012 22:57
von UliTs
MultiEdit kann das auch :-)

Re: dbsetindex("IV20121231.NT1")

Verfasst: So, 17. Jun 2012 0:23
von Hans Zethofer
Ed for Windows kann das auch =D>

Re: dbsetindex("IV20121231.NT1")

Verfasst: So, 17. Jun 2012 7:59
von Jan
Ich mach das seit Jahren mit VX.

Jan

Re: dbsetindex("IV20121231.NT1")

Verfasst: So, 17. Jun 2012 13:55
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.

Re: dbsetindex("IV20121231.NT1")

Verfasst: Mi, 20. Jun 2012 22:33
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.

Re: dbsetindex("IV20121231.NT1")

Verfasst: Mi, 20. Jun 2012 23:16
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

Re: dbsetindex("IV20121231.NT1")

Verfasst: Do, 21. Jun 2012 16:11
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.

Re: dbsetindex("IV20121231.NT1")

Verfasst: Mi, 27. Jun 2012 21:47
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.

Re: dbsetindex("IV20121231.NT1")

Verfasst: Mi, 27. Jun 2012 21:58
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 ?

Re: dbsetindex("IV20121231.NT1")

Verfasst: Do, 28. Jun 2012 9:07
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 ...