Seite 1 von 1

CodePage 852

Verfasst: Di, 26. Jun 2018 14:10
von Paul
Hallo allerseits,

melde mich nach langer Zeit wieder zurück, da ich trotz Pense wieder werken muss.

Habe foldendes Problem.

Muss in ein Textprogramm als ersten Schritt List & Label einbauen.

Hat an und für sich funktioniert.

Mein Problem ist jedoch, dass im Textmodus ( LINK mist STACK... ) die slowenischen Zeichen
mit Hilfe der Codpage 852 tadellos angezeigt werden.

Ja aber beim LINK mit PM ist das alles futsch.

Das Problem ist ja glaub ich nach wie vor aktuell, dass CodePage 852 von Xbase (Version 1.19)
nicht unterstützt wird.
Frage daher, hat jemand eine Lösung oder wenns hilft und es funkt mit 1.20 steigen wir auch um.

Danke im voraus und schöne Grüsse aus Wien

Paul

Re: CodePage 852

Verfasst: Di, 26. Jun 2018 18:45
von AUGE_OHR
hi,

eine VIO App ist OEM aber bei einer GUI App (/PM:PM) wird OEM aus der Datenbank automatisch nach ANSI bei der Ausgabe konvertiert da Windows ANSI erwartet.

die Codepage hängt mit dem Font zusammen aber die OEM Codepage ist nicht das selbe in ANSI.
wenn du auf GUI gehst solltest du es zunächst ohne L & L versuchen z.b. Anzeige im XbpBrowse()

wenn deine App mit verschiedenen Sprachen arbeiten soll würde ich es mit UniCode Fonts versuchen und für jede Sprache einen Font-Satz verwenden.

Re: Unicode

Verfasst: Mi, 27. Jun 2018 15:51
von Paul
Hallo Jimmy,

danke erstmals, brauch aber auch betreff Unicode ein wenig Hilfe.

1 Frage: hab ich Unicode auf meinem PC (Win7 und 2.PC Win10) ?
Wenn nein wo krieg ichs

2.Frage: wie aktiviere ich es?
local oFont := xbpFont():new()
oFont:familyName := ?
oFont:codepage := ?
oFont:create()

Danke im Voraus

LG Paul

Re: Unicode

Verfasst: Do, 28. Jun 2018 6:20
von AUGE_OHR
Frage : "was" wird "wo" falsch angezeigt ... in deiner Xbase++ App oder in L & L :?:

wenn du mit L & L arbeiten willst und es im VIO Mode klappt aber nicht im GUI Modus dann ist die Konvertierung OEM <-> ANSI nicht richtig. das Automatische konvertieren OEM <-> ANSI funktioniert aber nur innerhalb des Xbase++ Code aber NICHT bei Übergabe an 3-PP.

Windows erwartet ANSI oder eben Unicode was keine Sache von Fonts ist das nur für die "Darstellung" sorgt.
unter OEM wird das Euro Zeichen, mit Alaska CRT, als CHR (128) dargestellt aber unter GUI findest du es bei (vielen) Font unter CHR(213). Der Bereich > CHR(128) ist also unter GUI der Bereich für "Sonderzeichen" was du testen musst.

nun gibt es ConvToAnsiCP() / ConvToOemCP() womit man die Daten an L & L übergeben könnte ...
ausprobieren ob es mit den slowenischen Zeichen funktioniert. (chinesische Zeichen gehen so nicht ... )

---
Paul hat geschrieben: Mi, 27. Jun 2018 15:51 1 Frage: hab ich Unicode auf meinem PC (Win7 und 2.PC Win10) ?
Wenn nein wo krieg ichs

2.Frage: wie aktiviere ich es?
local oFont := xbpFont():new()
oFont:familyName := ?
oFont:codepage := ?
oFont:create()
ad 1.) Nein, Office (ArialUni.TTF)
ad 2.) am besten mit XbpFontDialog() "ausprobieren" bis es klappt und dann die Werte übernehmen.

Re: CodePage 852

Verfasst: Fr, 29. Jun 2018 7:40
von brandelh
Natürlich ist UNICODE (in den Schriften) enthalten und Windows 7 läuft intern definitiv mit Unicode ! Auch ohne Office.
Auch die Controls sind standardmäßig für beide Zeichensätze tauglich, nur Xbase++ kann eben nur die ANSI Teile nutzen.

Re: CodePage 852

Verfasst: Fr, 29. Jun 2018 10:19
von Paul
Danke mal,

aber wie soll ich jetzt weiter machen.

ich rufe zwar das font "Arial Unicode MS" über ofont := Xbpfont():new() auf
und stelle als familyname Arial Unicode MS rein.

tut sich aber nix

ich lese so viel im Forum über Unicode, hab aber noch nicht kapiert, wie ich es umsetzten kann,
bzw. die Zeichen zu tauschen.


Andere Frage:

Gibt es eine Möglichkeit, ein eigenes font zu erstellen, in dem ich zB. Arial auf Arial meins kopiere,
und die entsprechenden Zeichen ersetze?

Wenn es diese Möglichkeit gibt, womit kann ich dies machen?

Dies wäre meiner Meinung der einfachste Weg, um generell das Problem zu lösen.

Man müsste halt dann sich auf ein paar Fonts beschränken (zB Courier und Arial).

LG Paul

Re: CodePage 852

Verfasst: Fr, 29. Jun 2018 16:29
von AUGE_OHR
hi Paul

du fixierst dich auf den Font ... aber der kommt erst "am Ende".

wie schon gesagt findet bei der Umstellung VIO -> GUI intern eine OEM -> ANSI Konvertierung statt.
du solltest also erst mal zusehen ob du deine Zeichen unter GUI richtig angezeigt werden z.b. mit XbpStatic()

wie ich es mit dem Euro Zeichen versuchte zu erklären ist es NICHT möglich mit CHR(128) von ANSI Font (die Windows hat)
vielmehr muss man dann im Source Code CHR(213) verwenden ... keine Ahnung wie es bei slowenischen Zeichen ist.

---

meiner chinesischen OEM Zeichen nutzen DBCS (2 Byte), deshalb nutze ich UniCode.
wenn ich das unter chinesischen OS() nutzen (neu erfasse) schreibt er mir OEM in die DBF
unter deutschem OS() kann ich die Zeichen dann zwar anzeigen aber NICHT neu erfassen.

unter deutschem OS() kann man ja Umlaute verwenden/abspeichern.
Das geht nun wiederum NICHT auf dem chinesischen OS()

---

Es gibt Font Editoren wo man seine eigenen Fonts definieren kann.
wie ich aber versuche zu erklären ist das nicht der Weg der zum Ziel führt [-X