Umlaute [erledigt]

Xbase++-IDE - Workbench, Visual Xbase

Moderator: Moderatoren

Antworten
Benutzeravatar
Werner_Bayern
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2120
Registriert: Sa, 30. Jan 2010 22:58
Wohnort: Niederbayern
Hat sich bedankt: 29 Mal
Danksagung erhalten: 70 Mal

Umlaute [erledigt]

Beitrag 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.
Zuletzt geändert von Werner_Bayern am Mi, 30. Mär 2011 23:44, insgesamt 1-mal geändert.
es grüßt

Werner

<when the music is over, turn off the lights!>
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: Umlaute

Beitrag 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))
Gruß
Hubert
Benutzeravatar
Werner_Bayern
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2120
Registriert: Sa, 30. Jan 2010 22:58
Wohnort: Niederbayern
Hat sich bedankt: 29 Mal
Danksagung erhalten: 70 Mal

Re: Umlaute

Beitrag 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.
es grüßt

Werner

<when the music is over, turn off the lights!>
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: Umlaute

Beitrag 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.
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: Umlaute

Beitrag 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.
gruss by OHR
Jimmy
Benutzeravatar
Werner_Bayern
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2120
Registriert: Sa, 30. Jan 2010 22:58
Wohnort: Niederbayern
Hat sich bedankt: 29 Mal
Danksagung erhalten: 70 Mal

Re: Umlaute

Beitrag 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.
es grüßt

Werner

<when the music is over, turn off the lights!>
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: Umlaute

Beitrag 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
gruss by OHR
Jimmy
Benutzeravatar
Werner_Bayern
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2120
Registriert: Sa, 30. Jan 2010 22:58
Wohnort: Niederbayern
Hat sich bedankt: 29 Mal
Danksagung erhalten: 70 Mal

Re: Umlaute

Beitrag 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

es grüßt

Werner

<when the music is over, turn off the lights!>
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: Umlaute

Beitrag 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 !
gruss by OHR
Jimmy
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: Umlaute

Beitrag 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
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Rolf Ramacher
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 1930
Registriert: Do, 09. Nov 2006 10:33
Wohnort: Bergheim
Danksagung erhalten: 3 Mal
Kontaktdaten:

Re: Umlaute

Beitrag von Rolf Ramacher »

warum sind denn obj-Dateien mit in der prg beim link. ??
Gruß Rolf

Mitglied der Gruppe XUG-Cologne
www.xug-cologne.de
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: Umlaute

Beitrag 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.
Gruß
Hubert
Benutzeravatar
Rolf Ramacher
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 1930
Registriert: Do, 09. Nov 2006 10:33
Wohnort: Bergheim
Danksagung erhalten: 3 Mal
Kontaktdaten:

Re: Umlaute

Beitrag von Rolf Ramacher »

Hi Hubert,

ich habe nur deshalb angemerkt, da ich keine obj-Datei mit compiliere
Gruß Rolf

Mitglied der Gruppe XUG-Cologne
www.xug-cologne.de
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: Umlaute

Beitrag 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.
Gruß
Hubert
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: Umlaute

Beitrag von Jan »

Doch, in VX sieht man das natürlich auch.

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Werner_Bayern
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2120
Registriert: Sa, 30. Jan 2010 22:58
Wohnort: Niederbayern
Hat sich bedankt: 29 Mal
Danksagung erhalten: 70 Mal

Re: Umlaute

Beitrag 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.
es grüßt

Werner

<when the music is over, turn off the lights!>
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: Umlaute

Beitrag 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
gruss by OHR
Jimmy
Benutzeravatar
Werner_Bayern
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2120
Registriert: Sa, 30. Jan 2010 22:58
Wohnort: Niederbayern
Hat sich bedankt: 29 Mal
Danksagung erhalten: 70 Mal

Re: Umlaute

Beitrag von Werner_Bayern »

Morgen Jimmy,

danke für Deine Ausführungen.
Wo definierst Du dann die GUIFULL? In der *.arc?
es grüßt

Werner

<when the music is over, turn off the lights!>
Benutzeravatar
Martin Altmann
Foren-Administrator
Foren-Administrator
Beiträge: 16501
Registriert: Fr, 23. Sep 2005 4:58
Wohnort: Berlin
Hat sich bedankt: 111 Mal
Danksagung erhalten: 48 Mal
Kontaktdaten:

Re: Umlaute

Beitrag 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
:grommit:
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/

Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Werner_Bayern
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2120
Registriert: Sa, 30. Jan 2010 22:58
Wohnort: Niederbayern
Hat sich bedankt: 29 Mal
Danksagung erhalten: 70 Mal

Re: Umlaute

Beitrag von Werner_Bayern »

Oh Danke Martin. Werde es testen.
es grüßt

Werner

<when the music is over, turn off the lights!>
Antworten

Zurück zu „Workbench (ab 2.0), VX (bis 1.9 SL1)“