Seite 1 von 1
Umlaute [erledigt]
Verfasst: So, 07. Mär 2010 21:58
von Werner_Bayern
Servus,
ist sicherlich nur eine Kleinigkeit. Habe heute meine Clipper5-Fibu auf Xbase++ umgestellt (Target Type GUI-Application), läuft soweit alles ganz gut. Hab mir auch schon eine DLL erstellt mit GUI-Funktionen. Das Ganze mit VX, aktuelle Version. Einstellung Editor "Use ANSI". Die PRGs sind aber noch OEM, trotzdem passt es, hab in der main ein "set charset to oem", damit auch die dbfs korrekt dargestellt werden.
Aber: Die GUI-Funktionen in meiner DLL werden falsch dargestellt, sind ja alle neu geschrieben im VX, also mit ANSI-Zeichensatz, jetzt werden im kompilierten Programm in diesen Funktionen keine Umlaute angezeigt. Alles was zeichenmäßig ist, wird korrekt dargestellt.
Hab eigentlich schon alles probiert: OEM-Prgs auf ANSI konvertiert, dann falsche Darstellung in der EXE, compiler Character conversion bringt nicht wirklich was, set charset to ansi ==> falsche dbf-Darstellung, etc.
Was ist zu tun?
Danke.
Re: Umlaute
Verfasst: So, 07. Mär 2010 22:19
von brandelh
Hallo,
mit VX mache ich eigentlich nichts, aber ich habe die Erfahrung gemacht, dass ANSI Quellcode und
set charset to ansi die besten Ergebnisse bringt. Eine DBFNTX Datei wird immer in OEM bleiben, aber bei
mir hat das noch nie Probleme bereitet, da dies automatisch umgesetzt wird.
Ich kenne nur das spezielle (c) Zeichen, das falsch konvertiert wird, aber das braucht man ja nicht
Dies gilt aber nur für richtige GUI Anwendungen (XbpDialog, XbParts etc.) eine @ SAY GET XbpCRT() Hybrid Anwendung braucht OEM ...
ich meine mich zu entsinnen, dass im VX der verwendete Zeichensatz eingestellt werden kann und dort auf ANSI lauten muss.
Den alten OEM Quellcode keinesfalls über Compilerschalter behandeln, das gibt nix, sondern tatsächlich umsetzen, einige Editoren können das, notfalls...
memowrit(cPRG,ConvToAnsiCP(memoread(cPRG))
Re: Umlaute
Verfasst: So, 07. Mär 2010 23:48
von Werner_Bayern
Servus Hubert,
das hatte ich bereits testweise gemacht: Prg auf ANSI konvertiert und set charset to ansi. Dann werden aber die Umlaute aus der dbf (Clipper-Format, sollte aber doch egal sein, da doch immer OEM) bei @ say, tbrowse(), etc. nicht mehr richtig dargestellt.
Re: Umlaute
Verfasst: Mo, 08. Mär 2010 8:15
von brandelh
Hallo Werner,
das sag ich doch, wenn du XbpCrt() nutzt, also @ say und tbrowse etc. dann hast du KEIN GUI Programm, sondern
ein Hybridprogramm (Schalter GUI=YES, sonst ein Consolenfenster), das auf jeden Fall einen OEM Charset benötigt. In diesem Fall muss man dem VX Editor (soweit ich mich erinnern kann) beibringen OEM zu verwenden.
Ich persönlich nutze MED, nicht VX und weiß es nicht genauer.
PS: ANSI ist eine Datei, wenn Notepad die Umlaute richtig anzeigt.
Bei anderen Editoren kann man sich nicht sicher sein ohne die Einstellungen zu prüfen.
Re: Umlaute
Verfasst: Mo, 08. Mär 2010 22:45
von AUGE_OHR
Werner_Bayern hat geschrieben:Prg auf ANSI konvertiert und set charset to ansi.
Dann werden aber die Umlaute aus der dbf (Clipper-Format, sollte aber doch egal sein, da doch immer OEM) bei @ say, tbrowse(), etc. nicht mehr richtig dargestellt.
welchen FONT verwendest du ?
siehe dir mal C:\ALASKA\XPPW32\SOURCE\samples\basics\FONT\fontdb.prg an.
Re: Umlaute
Verfasst: Mo, 08. Mär 2010 23:23
von Werner_Bayern
Servus Jimmy,
ich mache nichts mit Font, hab das Prog einfach im Hypridmodus laufen. Da sollte es doch keine Probleme mit der Darstellung geben. Tut es auch nicht, nur die Xbparts, die ich aufrufe, machen die Darstellungsprobleme: Confirmbox z. B.
Ich denke nicht, dass der Tipp von Hubert nützt, die Einstellung von VX auf OEM zu ändern. Die GUI-Elemente liegen ja bereits in meiner DLL, fertig kompiliert unter reinem GUI im ANSI-Quelltext. Sie sollen ja aus beiden Welten aufgerufen werden, aus der Hypridwelt und aus der GUI-Welt.
Muss ich 2 Versionen pflegen? Eine GUIDLL und eine HYBRIDDLL mit identischem Quellcode, jedoch jedesmal vor der Erzeugung der jew. DLL die Quellen auf ansi - oem konvertieren?
Danke an Euch beide.
Re: Umlaute
Verfasst: Di, 09. Mär 2010 0:02
von AUGE_OHR
Ich denke du "würfelst" einige Begriffe durcheinander :
Eine Cl*pper kompatible DBF mit DBFNTX ist OEM
Der Crt Text-Mode ist OEM und als Font gibt es "Alaska CRT"
Eine GUI Anzeige ist ANSI.
"Ergebnisse" von Windows basierenden GUI XbParts liefen ANSI zurück
Durch SET CHARSET wird lediglich bestimmt ob die Daten im Hauptspeicher in OEM oder ANSI vorliegen !
mit SET COLLATION wird nun die Länderspezifische Sortierung eingestellt
der Compiler Schalter /ga : Literale Zeichen von ANSI nach OEM konvertieren
der Compiler Schalter /go : Literale Zeichen von OEM nach ANSI konvertieren.
zeig uns mal deine Project.XPJ
Re: Umlaute
Verfasst: Mi, 10. Mär 2010 0:42
von Werner_Bayern
Servus Jimmy,
hier meine project.xpj:
Code: Alles auswählen
[PROJECT]
DEBUG = no
VERSION = 2.0
OPENFILES = UTILL.PRG;FTEXTE.PRG;FKONTEN.PRG;FINIT.PRG;FHELP.PRG;FFIBU.PRG;calc.prg;BUCH.PRG
PROJECT.XPJ
[PROJECT.XPJ]
BUCHWIN.exe
[BUCHWIN.exe]
COMPILE = xpp
COMPILE_FLAGS = /wi /wl /wu /m /q /rMEINEDLL /w /dnetz
DEBUG_SAVE = no
GUI = yes
LINKER = alink
LINK_FLAGS =
RC_COMPILE = arc
RC_FLAGS = /v
// $START-AUTODEPEND
STD.CH
SET.CH
NATMSG.CH
GET.CH
PROMPT.CH
MEMVAR.CH
COLLAT.CH
BUCH.CH
\PRG\VERW\PRG\WW.CH
BOX.CH
BUCH.obj
calc.obj
FABRECH.obj
FABRECH2.obj
FARBEN.obj
FDEL.obj
FERTRAG.obj
FESC.obj
FFIBU.obj
FHELP.obj
FINIT.obj
FJOURNAL.obj
FKONTEN.obj
FKONTK.obj
FKONTL.obj
FSALDEN.obj
FSTEUER.obj
FSTEUERL.obj
FSYSTEM.obj
FTEXTE.obj
FUMSATZ.obj
FUTILL.obj
FVERZ.obj
FVERZL.obj
LIZENZ.obj
TASTEN.obj
UNSTIMM.obj
UTILL.obj
// $STOP-AUTODEPEND
BUCH.PRG
calc.prg
FABRECH.PRG
FABRECH2.PRG
FARBEN.PRG
FDEL.PRG
FERTRAG.PRG
FESC.PRG
FFIBU.PRG
FHELP.PRG
FINIT.PRG
FJOURNAL.PRG
FKONTEN.PRG
FKONTK.PRG
FKONTL.PRG
FSALDEN.PRG
FSTEUER.PRG
FSTEUERL.PRG
FSYSTEM.PRG
FTEXTE.PRG
FUMSATZ.PRG
FUTILL.PRG
FVERZ.PRG
FVERZL.PRG
LIZENZ.PRG
TASTEN.PRG
UNSTIMM.PRG
UTILL.PRG
Re: Umlaute
Verfasst: Mi, 10. Mär 2010 3:12
von AUGE_OHR
Werner_Bayern hat geschrieben:
Code: Alles auswählen
[PROJECT]
COMPILE_FLAGS = /wi /wl /wu /m /q /rMEINEDLL /w /dnetz
der Schalter
/rMEINEDLL "erzeugt" keine
DLL !
Re: Umlaute
Verfasst: Mi, 10. Mär 2010 6:30
von Jan
AUGE_OHR hat geschrieben:Werner_Bayern hat geschrieben:
Code: Alles auswählen
[PROJECT]
COMPILE_FLAGS = /wi /wl /wu /m /q /rMEINEDLL /w /dnetz
der Schalter
/rMEINEDLL "erzeugt" keine
DLL !
... und dürfte ohnehin eine Fehlermeldung auswerfen, denn mit dem Compilerschalter /r kann man eine lib hinzufügen in den Compilerlauf, keine dll.
Jan
Re: Umlaute
Verfasst: Mi, 10. Mär 2010 9:13
von Rolf Ramacher
warum sind denn obj-Dateien mit in der prg beim link. ??
Re: Umlaute
Verfasst: Mi, 10. Mär 2010 9:36
von brandelh
Hi,
wenn du das meinst, ...
// $START-AUTODEPEND
STD.CH
SET.CH
NATMSG.CH
GET.CH
PROMPT.CH
MEMVAR.CH
COLLAT.CH
BUCH.CH
\PRG\VERW\PRG\WW.CH
BOX.CH
BUCH.obj
calc.obj
FABRECH.obj
FABRECH2.obj
FARBEN.obj
FDEL.obj
FERTRAG.obj
FESC.obj
FFIBU.obj
FHELP.obj
FINIT.obj
FJOURNAL.obj
FKONTEN.obj
FKONTK.obj
FKONTL.obj
FSALDEN.obj
FSTEUER.obj
FSTEUERL.obj
FSYSTEM.obj
FTEXTE.obj
FUMSATZ.obj
FUTILL.obj
FVERZ.obj
FVERZL.obj
LIZENZ.obj
TASTEN.obj
UNSTIMM.obj
UTILL.obj
// $STOP-AUTODEPEND
das ist normal für eine Projekt Datei, damit werden die internen Abhängigkeiten dargestellt.
Re: Umlaute
Verfasst: Mi, 10. Mär 2010 12:03
von Rolf Ramacher
Hi Hubert,
ich habe nur deshalb angemerkt, da ich keine obj-Datei mit compiliere
Re: Umlaute
Verfasst: Mi, 10. Mär 2010 12:14
von brandelh
Hi,
das macht er auch nicht, denn der compiler erstellt ja OBJ.
Der ALINK linked diese dann ein
Aber in der Projektdatei wird dieser Teil zwischen den beiden Anweisungen ...
// $START-AUTODEPEND
... Abhängigkeiten
// $STOP-AUTODEPEND
von Xbase++ intern benutzt, um die Abhängigkeiten der weiteren Dateien CH, OBJ etc. zu den PRG und EXE
für Xbase++ selbst zu dokumentieren. Sonst könnte PBUILD nicht bedingt compilieren sondern müsste alles immer neu
compilieren. LINKEN muss man immer alles, da eine EXE auf einmal erzeugt werden muss.
Arbeitest du nicht mit Projektdateien ?
VX: eventuell werden diese Teile in der VX-IDE gar nicht angezeigt, aber die XPJ Datei sieht so aus.
Re: Umlaute
Verfasst: Mi, 10. Mär 2010 12:16
von Jan
Doch, in VX sieht man das natürlich auch.
Jan
Re: Umlaute
Verfasst: Mi, 10. Mär 2010 23:48
von Werner_Bayern
AUGE_OHR hat geschrieben: COMPILE_FLAGS = /wi /wl /wu /m /q /rMEINEDLL /w /dnetz
der Schalter /rMEINEDLL "erzeugt" keine DLL !
Nein, soll er auch nicht, ist von mir geändert worden, nur ein Hinweis, dass hier die Standard-DLL von mir mit eingebunden wird. Selbstverständlich steht hier nur der Name der DLL ohne Erweiterung, also wird die LIB mit den Symbolnamen eingebunden, damit dann in der EXE die DLL korrekt angesprochen wird.
Re: Umlaute
Verfasst: Do, 11. Mär 2010 0:57
von AUGE_OHR
hi,
wenn man seine Anwendung in DLL nach GUI und Hybrid "zerlegen" will kann man folgendes Project.XPJ benutzen
Code: Alles auswählen
[PROJECT]
COMPILE = xpp
DEBUG = yes
GUI = yes
LINKER = alink
LINK_FLAGS = /ST:8196
RC_COMPILE = arc
RC_FLAGS = /v
OBJ_DIR = .\OBJ
PROJECT.XPJ
[PROJECT.XPJ]
EXEGUI.DLL
EXECRT.DLL
XPPEXE.EXE
[EXEGUI.DLL]
COMPILE_FLAGS = /dll /n /q /w /o\OBJ\ /DGUIFULL
// $START-AUTODEPEND
EXEGUI.RES
EXEGUI.DEF
*.OBJ
// $STOP-AUTODEPEND
EXEGUI.ARC
// damit er auch deren Functionen erkennt
EXECRT.LIB
*.PRG
[EXECRT.DLL]
COMPILE_FLAGS = /dll /n /q /w /o\OBJ\
// $START-AUTODEPEND
EXECRT.RES
EXEGUI.DEF
*.OBJ
// $STOP-AUTODEPEND
EXECRT.ARC
// damit er auch deren Functionen erkennt
EXEGUI.LIB
*.PRG
[XPPEXE.EXE]
// $START-AUTODEPEND
XPPEXE.RES
*.OBJ
// $STOP-AUTODEPEND
XPPEXE.ARC
// für die *.DLL
EXEGUI.LIB
EXECRT.LIB
*.PRG
mittels des Schalter
/DGUIFULL habe ich dann im Sourcecode
Code: Alles auswählen
#IFDEF GUIFULL
// verwende GUI Code
#ELSE
// verwende Cl*pper Hybrid-Code
#ENDIF
Re: Umlaute
Verfasst: Fr, 12. Mär 2010 7:37
von Werner_Bayern
Morgen Jimmy,
danke für Deine Ausführungen.
Wo definierst Du dann die GUIFULL? In der *.arc?
Re: Umlaute
Verfasst: Fr, 12. Mär 2010 7:41
von Martin Altmann
Hallo Werner,
das ist ein COMPILE_FLAGS-Eintrag!
In seinem Beispiel im Abschnitt [EXEGUI.DLL] siehst Du den letzten Schalter /D gefolgt von dem zu Definierendem Schalter GUIFULL
Viele Grüße,
Martin
Re: Umlaute
Verfasst: Fr, 12. Mär 2010 22:26
von Werner_Bayern
Oh Danke Martin. Werde es testen.