Diverse Sprachen darstellen

Sonstiges (nicht kategorisierbar)

Moderator: Moderatoren

Antworten
Bernd Reinhardt
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 159
Registriert: So, 16. Apr 2006 11:12
Wohnort: Öhringen

Diverse Sprachen darstellen

Beitrag von Bernd Reinhardt »

Hallo.

Wir sollen eine kleine Menueführung für LKW-Fahrer machen. Da hier aber türkisch, russisch, tschechisch usw. gefordert ist, habe ich von meinem Kunden eine Übersetzung erhalten.
Eine Excel - Liste mit den übersetzungen.
Nur wie kann ich russisch darstellen. Ansi oder OEM Zeichensätze helfen mir hier nicht weiter.
Geht das ohne das ich das alles in Bilder packen muss und dann die Bilder anzeigen?
Abbruch
Отмена

Gibt es hierzu eine Lösung mit Bordmitteln Xbase++?

Gruß
Bernd
Bernd Reinhardt
fa.reinhardt@gmx.de
Bernd Reinhardt
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 159
Registriert: So, 16. Apr 2006 11:12
Wohnort: Öhringen

Re: Diverse Sprachen darstellen

Beitrag von Bernd Reinhardt »

Hallo

Ich habe mit der Schriftart versucht. Also über Fontdialog einen Unicode Font ausgewäht. Bei mir Arial Unicode MS.
Eine Datei test1.txt mit Unicode erstellt. Damit ich mit nicht vertippe hole ich mir den Font über Fontdialog uns übergebe den ausgewählten Font dann an mein xbpstatic und xbpSle.
Zeichen in der Ansi Codepage werden dargestellt, aber alles was als Unicode (also 2stellig) wird falsch dargestellt.
Ich kann die Codepage aber nur zwischen OEM und ANSI (habe ich gewählt) wechseln.

Code: Alles auswählen

      drawingArea := oHauptDlg:drawingArea
      drawingArea:setFontCompoundName( "@Arial Unicode MS" )
      oDlg:show()    
      
      oFontDlg            := XbpFontDialog():New(drawingArea)
      oFontDlg:familyName := "Times New Roman"
      oFontDlg:create()  
      oFont := oFontDlg:display( XBP_DISP_APPMODAL ) 
      cFont := Alltrim(oFont:compoundName)
      oFontDlg:familyName := oFont:familyName // as default
      oFontDlg:destroy()               // Destroy font dialog
      cTest := memoread("test1.txt")   // file with unicode
      oXbp_t := XbpStatic():new(drawingArea,,;
                               {400, 600}, ;
                               {400,60},;
                               { { XBP_PP_BGCLR, GRA_CLR_RED }, ;
                               { XBP_PP_FGCLR, GRA_CLR_BLACK },;
                               { XBP_PP_FONT, oFont } } )     // Set Font
      oXbp_t:type         := XBPSTATIC_TYPE_TEXT 
      oXbp_t:options      := XBPSTATIC_TEXT_CENTER + XBPSTATIC_TEXT_VCENTER 
      oXbp_t:caption :=  cTest + " Ende "
      oXbp_t:clipSiblings := .T.
      oXbp_t:create()
      oXbp4              := XbpSLE():new(drawingArea)
      oXbp4:autoTab      := .T.
      oXbp4:bufferLength := 40
      oXbp4:dataLink := {|x| IIf( x==NIL, cVarA, cVarA := x ) }
      oXbp4:setFont(oFont)
      oXbp4:create( , , {50,300}, {400,50} )
      oXbp4:setData()
      oXbp4:killInputFocus := ;
          { |x,y,oSLE| oSLE:getData()  }
Gruß
Bernd
Bernd Reinhardt
fa.reinhardt@gmx.de
DelUser01

Re: Diverse Sprachen darstellen

Beitrag von DelUser01 »

@Bernd

eine sprachuniverselle Applikation für Loginstikunternehmen ist derzeit (fast) ine Lizenz zum Gelddrucken...
Wenn einer so eine Lösung hat - meinst Du wirklich dass das hier im Forum jemand offenlegt?
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: Diverse Sprachen darstellen

Beitrag von AUGE_OHR »

Bernd Reinhardt hat geschrieben: Mi, 07. Feb 2018 22:48 Ich kann die Codepage aber nur zwischen OEM und ANSI (habe ich gewählt) wechseln.
ich kann mit MS Arial UniCode chinesische Zeichen darstellen ... alles nur eine Frage der "richtigen" Codepage.

die andere Frage ist aber wie bekommt man chinesische Zeichen "erfasst" und in die Datenbank ?
zu XP Zeiten musste ich ein chinesische XP OS() nehmen da ich es auf einem "Deutschen" PC nicht geschafft hab.

mein Tip : mache eine kleine App und gibt die deinem Kunden damit ER die "füllt. die DBF sollte dann OEM sein !
gruss by OHR
Jimmy
Benutzeravatar
Herbert
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 1991
Registriert: Do, 14. Aug 2008 0:22
Wohnort: Gmunden am Traunsee, Österreich
Danksagung erhalten: 3 Mal
Kontaktdaten:

Re: Diverse Sprachen darstellen

Beitrag von Herbert »

AUGE_OHR hat geschrieben: Do, 08. Feb 2018 2:49 ich kann mit MS Arial UniCode chinesische Zeichen darstellen ... alles nur eine Frage der "richtigen" Codepage.

die andere Frage ist aber wie bekommt man chinesische Zeichen "erfasst" und in die Datenbank ?
zu XP Zeiten musste ich ein chinesische XP OS() nehmen da ich es auf einem "Deutschen" PC nicht geschafft hab.

mein Tip : mache eine kleine App und gibt die deinem Kunden damit ER die "füllt. die DBF sollte dann OEM sein !
Die Uebersetzungen sind gemäss Bernd ja vorhanden. Da muss man keine Logik herausgeben. Es geht um das wie abfüllen und darstellen.
Die Codepage, ja, aber wie setzen?

...sonst Windev mit Unicode.
Grüsse Herbert
Immer in Bewegung...
Benutzeravatar
Klaus Schuster
Foren-Administrator
Foren-Administrator
Beiträge: 366
Registriert: Do, 24. Jan 2008 10:01
Wohnort: 90762 Fürth
Hat sich bedankt: 9 Mal
Danksagung erhalten: 9 Mal

Re: Diverse Sprachen darstellen

Beitrag von Klaus Schuster »

Guten Morgen Bernd,

hast Du Dir schon mal den XbpHTMLViewer angesehen? Keine Ahnung, nur eine Idee.
Gruß Klaus
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: Diverse Sprachen darstellen

Beitrag von brandelh »

Wenn wir UNICODE Controls hätten, wäre das alles kein Problem. Haben wir aktuell aber nicht in Xbase++
Das HTML Window könnte eine Lösung sein, wenn man dort einen UTF8 oder UNICODE Zeichensatz wählen kann, am Besten Alaska fragen, dann bemerken die auch den Bedarf ;-)
Gruß
Hubert
Benutzeravatar
Klaus Schuster
Foren-Administrator
Foren-Administrator
Beiträge: 366
Registriert: Do, 24. Jan 2008 10:01
Wohnort: 90762 Fürth
Hat sich bedankt: 9 Mal
Danksagung erhalten: 9 Mal

Re: Diverse Sprachen darstellen

Beitrag von Klaus Schuster »

Laut Hilfe geht UTF8:

"In addition to ANSI character strings, XbpHTMLWindow also supports displaying Unicode content encoded in UTF-8"
Gruß Klaus
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: Diverse Sprachen darstellen

Beitrag von brandelh »

Wenn man die Daten aus allen Ländern speichern muss, ist auch die DBF aus meiner Sicht keine Lösung.
Hier müsste man ja die codepage je Datei oder Satz oder Feld vorhalten ... nicht wirklich sinnvoll.
Besser ein SQL Server oder SQLite mit UTF8 nutzen ...

Aus meiner Sicht (ich habe nicht wirklich viel Erfahrung damit, da ich bisher nur Französisch, Deutsch, Italienisch und Englisch speichern musste ... in eigenen Programmen ;-) )
war die alte ANSI (OEM) + codepage Speicherung noch OK solange man ausschließlich die Daten seines Codepage Bereiches speichern musste.

Mit Word habe ich jetzt erlebt, wie einfach es sein kann Russisch und Türkisch in einem Dokument mit Deutsch zu verwalten.
Mit PowerBasic und WinDev Unicode Controls auch kein Problem, diese Einfachheit muss Alaska noch liefern.
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: Diverse Sprachen darstellen

Beitrag von Jan »

Alaska hat mir auf Anfrage klipp und klar mitgeteilt, das die entgegen früheren Aussagen von Steffen kein Unicode/UTF-8/UTF-16 für dbf umsetzen werden.

Und ich denke mal für die XbParts wird das ebenfalls gelten. Denn Alaska möchte ja ganz offensichtlich hin zu HTML-Oberflächen, mit denen man dann unabhängig ist von der Client-Umgebung (egal ob Windows-Desktop oder Browser per cxp oder WAA). Und für HTML bietet Alaska das ja an. Und hat mit den letzten Updates auch ein paar UTF-8 und Uniocode-Funktionen geliefert.

Schade eigentlich, das die alten Technologien so auf das Abstellgleis geschobenw erden. Und frühere Zusagen nicht eingehalten werden. Wobei ich natürlich Alaska verstehen kann. Die alten Sachen (XbParts, dbf) auf Unicode umzuschreben dürfte vermutlich etwas aufwändig werden. Das ist was anderes als die XbParts für HTML/CSS zu öffnen, wie die das gemacht haben. Blöd ist das aber trotzdem.

Ich bin mal gespannt wie und wann die den Umstieg auf 64Bit machen werden ...

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Herbert
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 1991
Registriert: Do, 14. Aug 2008 0:22
Wohnort: Gmunden am Traunsee, Österreich
Danksagung erhalten: 3 Mal
Kontaktdaten:

Re: Diverse Sprachen darstellen

Beitrag von Herbert »

Jan hat geschrieben: Do, 08. Feb 2018 9:15 Ich bin mal gespannt wie und wann die den Umstieg auf 64Bit machen werden ...
Eure Geduld ist beneidenswert...
Was mich erstaunt, ist die Unicode-Sache, welche ja seit langem bekannt ist. HTML ist eben nicht für alles das Richtige...
Grüsse Herbert
Immer in Bewegung...
Bernd Reinhardt
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 159
Registriert: So, 16. Apr 2006 11:12
Wohnort: Öhringen

Re: Diverse Sprachen darstellen

Beitrag von Bernd Reinhardt »

Hallo

Danke für die Beiträge. Von meinem Kunden habe ich eine Exceldatei mit Übersetzungen.
Deutsch - Russisch - Türkisch usw.
Diese Zeichen werden in Excel (auch in Word) richtig dargestellt.
Ich kann die Excel-Datei auch als HTM speichern. Dann habe ich die Übersetzung als HTML.
Die HTML-Datei kann ich mit einem Editor öffnen, bzw. die Texte in einzelne HTML-Dateien speichern.
Z. B. eine Datei je Text. Dann umgehe ich alle Datenbanken.
Beispiel: Text Abbrechen.
d-abbrechen.html mit deutschem Text ABBRECHEN
rus-abbrechen.html mit dem Text Отмена
tuerk-abbrechen.html

Wenn sich nun ein Russe anmeldet, dann lade ich die Datei rus-abbrechen.html und zeige den Inhalt der Datei an.
Da muss dann Отмена stehen.

Statt einer xbpstatic wäre dann ein html-Feld.
Allerdings habe ich in diesem Zusammenhang noch keine Erfahrung. Gibt es sowas wie ein htmlStatic das ich einfach in der Maske anzeige.
Am besten wäre das als Pushbutton, ansonsten müsste ich einen Button machen und darunter dann den Text Abbrechen.
Die Anzahl der Texte ist übersichtlich, WEITER, START, ABBRECHEN, OK, Bestätigen, Menge Eingeben
Ich möchte halt nicht von jedem Text eine Bitmap machen, (snippingtool) und dann die entsprechende Bitmap laden. Das wäre letztendlich die einzige Lösung die mir so einfällt.

@Roland. Deinen Einwand mit der Lizenz zum Geld drucken verstehe ich nicht. Wenn ich an einen Bankautomat gehe kann ich doch auch die Sprache wählen und erhalte dann die Menüführung in meiner Sprache. Vom meinem Kunden erhalte ich eine Excelliste mit allen Übersetzungen in den richtigen Zeichen. Nur mit xBase++ kann ich nicht anzeigen, was die ganze Welt um mich herum benutzt. Da muss das eher umdrehen und sagen xBase++ ist die Lizenz um Geld und Zeit zu investieren um Lösungen zu suchen, die andere schon haben.

Gruß
Bernd
Bernd Reinhardt
fa.reinhardt@gmx.de
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: Diverse Sprachen darstellen

Beitrag von Jan »

Bernd,

Dein Freund ist das Asset "Static content with HTML/CSS" oder das Asset "Command Button Control" bzw. das Asset "Toggle Button Control". Nur in Xbase++ 2.0 vorhanden. Du warst doch vergangenes Jahr beim Forentreffen dabei. Schau DIr die Unterlagen zu meinem Vortrag an, da sind die drin beschrieben.

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
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: Diverse Sprachen darstellen

Beitrag von AUGE_OHR »

Bernd Reinhardt hat geschrieben: Do, 08. Feb 2018 16:18 Diese Zeichen werden in Excel (auch in Word) richtig dargestellt.
wenn die Office Apps mit M$ Arial UniCode richtig anzeigen kann das Xbase++ v1.x genau so :!:
das geht auch "gleichzeitig" in einem Browse wenn die Info in einer OEM DBF sind =D>
DbBrowse_chinese_OEM.JPG
DbBrowse_chinese_OEM.JPG (158.92 KiB) 15285 mal betrachtet
für HTML/CSS müsste man den gesamten Code ändern und ob eine "deprecated" Lösung sinnvoll ist muss jeder für sich beantworten :roll:
gruss by OHR
Jimmy
Bernd Reinhardt
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 159
Registriert: So, 16. Apr 2006 11:12
Wohnort: Öhringen

Re: Diverse Sprachen darstellen

Beitrag von Bernd Reinhardt »

Hallo
Leider war ich bisher nicht auf einem Forentreffen. Hab auch keine Unterlagen.
Aber ich hab mal mit Version 2.0 ein kleines Testprogramm gemacht.
Fontdialog aufrufen
Dabei kyrilisch und Arial Unicode MS
Wenn ich mir im Debugger den oFont dann anschaue ist der Fontname
@Arial Unicode MS
Und die Codepage ist 204 statt wie erwartet 855 für kyrilisch.
Wenn ich nun Zeichen eingebe (geht ja gut mit der ALT-Taste und code auf nummernblock) so bekomme ich bei z. B. ALT168 kein kyrilisches Zeichen angezeigt. Codepage 204 finde ich nicht im google.
Wenn ich Thai auswähle ist die codepage 222
So ganz passt das alles noch nicht zusammen.
Gruß
Bernd
Bernd Reinhardt
fa.reinhardt@gmx.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: Diverse Sprachen darstellen

Beitrag von brandelh »

Jede DBF ist für UTF8 vorbereitet, da UTF8 ja genau dafür gedacht ist, UNICODE in einem alten String abzuspeichern.
Allerdings wird natürlich nicht die bisherige automatische Indizierung unterstütz, denn diese setzt ja genau 1 Zeichen für 1 Byte voraus.
Echtes UNICODE würde eine DBF sprengen, da dieses Dateiformat ja erfunden wurde als Mehrbyte Strings nicht denkbar waren.
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: Diverse Sprachen darstellen

Beitrag von AUGE_OHR »

Bernd Reinhardt hat geschrieben: Do, 08. Feb 2018 21:36 So ganz passt das alles noch nicht zusammen.
der Font zum "Anzeigen" in einer Xbase++ Apps muss NICHT der selbe wie der System Font des eingestellten Keyboard ( OSK.EXE ) womit ein SLE gefüttert wird :!:
wenn du die Font Codepage änderst musst beim Keyboard das selbe Layout wählen sonst kommt es falsch raus [-X

unter XP musste ich die "Pe-jing" Eingabe noch extra installieren.
seit Windows 7 gibt es einen eingebauten "Pe-jing" Eingabe WENN man das CN Keyboard Layout aktiviert.
gruss by OHR
Jimmy
Bernd Reinhardt
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 159
Registriert: So, 16. Apr 2006 11:12
Wohnort: Öhringen

Re: Diverse Sprachen darstellen

Beitrag von Bernd Reinhardt »

Hallo Jimmy.

Ich glaube da gibt es Missverständnis.
In Windows ist es so, das mit mit ALT (gedrückt halten) und auf dem Nummernblock eine Zahl zwischen 0 - 255 eingeben, dann wird genau der ASCII-Character interpretiert. Das ist erst mal komplett unabhängig von der Codepage und dem Zeichensatz.

Z. B. ALT 160 ist in der ASCII Tabelle das Zeichen an der Position A0(hex)
Alt 48 ist eine 0 da HEX 30 eine 0 dargestellt wird.

Ich kann nun über Fontdialog einen Font auswählen. Diesen weise ich dem SLE zu.
Wenn ich mir nun eine ASCII-Tabelle mit der richtigen Codepage anschaue, und ALT160 eingebe, das sehe ich genau das Zeichen welches an Position A0 der Tabelle steht.

Und das funktioniert auch mit unterschiedlichen Codepages ganz gut.
Allerdings habe ich, wenn ich eine Codepage auswähle, nicht die Codepage die ich erwartet habe, sondern eine andere.
Und das ist mein Problem. Ich wähle kyrilisch als Codepage, aber im ausgewählten Font steht unter Codepage nicht die erwartete Zahl.
855 für z. B. Kyrilisch. Gibt es da eine Konvertierung xBase++ Codepagenummer zum Standard?

Um Text einzugeben ist die Methode mit der ALT-Taste (links von SPACE) und der Zahl auf dem Nummernblock (!!) nicht geeignet. Aber für ein einzelnes Zeichen klappt das ganz gut. Das geht immer auch in Word. Einfach ALT49 eingeben und eine 1 wird dargestellt.

Wenn ich mal die Codepage habe, die ich auch erwarte dann kann ich mir über die Konvertierung Unicode Gedanken machen. Ich hoffe das geht dann auch so das ich nur CHR(192) entfernen muss und von der nachfolgenden Zahl dann passt. (128-255)

Ich hoffe ich konnte mich einigermaßen verständlich ausdrücken.

Gruß
Bernd
Bernd Reinhardt
fa.reinhardt@gmx.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: Diverse Sprachen darstellen

Beitrag von brandelh »

Das Programm "Zeichentabelle" kann mehrere Buchstaben auswählen und in die Zwischenablage einstellen.
Mit Arial Unicode MS geht das dann in jedes Programm, das Unicode Controls nutzt rein ... z.B. hier "ʜʢʤʒʔʊˏ̎̽̿ɳʌʤ"
eine spezielle "Nummer" ist nur von 32 bis 127 sicher, denn danach macht jede Codepage was sie will - und wer könnte sich schon die Kürzel merken, die unten links in "Zeichentabelle" für jedes Zeichen angezeigt werden. ;-)

Mit Unicode wird es möglich nicht nur verschiedene Zeichensätze auf einer Seite (Tabelle) zu mischen, sondern alle in den gleichen Text einzugeben, der dann immer stimmt.
Bei Codepages kann man nicht wirklich wissen, welches Zeichen ein chr(245) anzeigt, solange man nicht die Codepage weiß, die richtig ist.
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: Diverse Sprachen darstellen

Beitrag von AUGE_OHR »

Bernd Reinhardt hat geschrieben: Fr, 09. Feb 2018 11:50 Ich glaube da gibt es Missverständnis.
JA :roll:
Bernd Reinhardt hat geschrieben: In Windows ist es so, das mit mit ALT (gedrückt halten) und auf dem Nummernblock eine Zahl zwischen 0 - 255 eingeben, dann wird genau der ASCII-Character interpretiert. Das ist erst mal komplett unabhängig von der Codepage und dem Zeichensatz.
NEIN [-X
es ist der gleiche Scan-Code (VK_* Konstanten) aber je nach System Keyboard Einstellung gibt er dir unterschiedliche "ASCII-Character"

wie ich schon sagte muss man nicht nur einen Font/Codepage für die Anzeige auswählen sondern auch das passenden Keyboard Layout.

Code: Alles auswählen

öffne mal M$ Word und tippe : qwertz
jetzt schalte von DE auf US : qwerty
wie Word übernimmt Xbase++ die System Einstellung die zu "dem" Zeitpunkt aktive ist.

nun wird es aber so sein das wenn ein Russe damit arbeitet er auch eine Kyrillische Keyboard Einstellung hat.
wenn du mit ~Hotkey arbeiten willst musst du das dann auch mit einer Kyrillischen Keyboard Einstellung testen.
gerne wird auch das "Punkt"/"Koma" Thema dabei übersehen wenn es um Keyboard Einstellungen geht.

---

zugegeben ich arbeite (immer noch) mit der "alten" OEM / Codepage Methode aber bei einer neu Entwicklung wäre das zu überdenken.
Guenter Beyes <gbeyes at gmx.de>
Freitag, 10. März 2006 12:10
public.xbase++.generic
Re: UTF-8 conversion
das wäre nun der ANSI / UTF-8 Weg.

Anmerkung : es gibt ja Str2Unicode() / Unicode2Str() in \XPPW32\Source\SYS\activex.prg
das ist aber nur "ANSI to UCS-2" Unicode und noch kein UTF-8 !

p.s. das mit Bilder wäre vermutlich einfacher.
gruss by OHR
Jimmy
Bernd Reinhardt
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 159
Registriert: So, 16. Apr 2006 11:12
Wohnort: Öhringen

Re: Diverse Sprachen darstellen

Beitrag von Bernd Reinhardt »

Hallo Zusammen.

Ich danke für die vielen Rückmeldungen. Allerdings verstehe ich immer noch nicht ganz wo denn das Problem tatsächlich ist.

Ich hab das ganze mal mit Visual Studio versucht. Einfach eine neue Form und eine Textbox.
(Das entspricht so ungefähr einem XbpDlg und XbpSle, aber wirklich nur ganz ungefähr).
Jetzt habe ich die Übersetzung von dem Excelfile direkt in die Textbox von meinem VB.net Programm kopiert.
Und siehe da, es zeigt mir kyrlische Zeichen richtig an, ohne irgendwelche Umstellungen.

Selbst wenn ich den Totalcommander öffne kann ich dort z. B. im Suchfeld die kyrilischen Zeichen hinenkopieren.

Witzigerweise kann ich in der Xbase++ Workbench wenn ich ein neues Project anlege und den Dateinamen eingebe, auch meine kyrilischen Zeichen mit STRG C kopieren und auch dort wird alles richtig dargestellt.

Wie so muss den unter Xbase++ alles so mega kompliziert sein.

Gruß
Bernd
Bernd Reinhardt
fa.reinhardt@gmx.de
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: Diverse Sprachen darstellen

Beitrag von AUGE_OHR »

Bernd Reinhardt hat geschrieben: Sa, 10. Feb 2018 14:41Wie so muss den unter Xbase++ alles so mega kompliziert sein.
weil Xbase++ Stand Windows NT ist also "A" Generation :roll:
deshalb muss man vieles so machen wie damals unter NT -> Font / Codepage / Keyboard etc.
gruss by OHR
Jimmy
Bernd Reinhardt
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 159
Registriert: So, 16. Apr 2006 11:12
Wohnort: Öhringen

Re: Diverse Sprachen darstellen

Beitrag von Bernd Reinhardt »

Noch eine Frage:
Wenn ich für das xbpSle (oder static) eine Codepage und eine Schrift wähle und folgenden String ausgebe:
for nI = 128 to 255 // wichtig ist ja nur alles über 128
cString := cString + chr(nI)
next
dann erhalte ich unterschiedliche Anzeigen, je nachdem welches Tastaturlayout eingestellt ist.

Das war wohl mein Denkfehler. Ich bin davon ausgegeangen, das die Anzeige alleine von der Codepage abhängt und die Zuordnung Tastatur - Code über das Tastaturlayout gesteuert wurde.
Wenn ich Buchstaben über die Tastatur eingebe, dann muss Tastaturlayout und Codepage übereinstimmen, sonst geht es schief.

Wenn ich aber die Tastatur gar nicht benötige, weil ich die Daten per ASCII-Code eingebe (wie z. B. bei cString oben) hatte ich gedacht das hier die Codepage reicht. Das Tastaturlayout kann ich aber nicht ständig vom Programm umstellen, also kann ich keine kyrilischen Zeichen darstellen. Für mein Problem gibt es in xBase++ schlichtweg keine Lösung.
Gruß
Bernd
Bernd Reinhardt
fa.reinhardt@gmx.de
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: Diverse Sprachen darstellen

Beitrag von AUGE_OHR »

Bernd Reinhardt hat geschrieben: So, 11. Feb 2018 10:57 Das war wohl mein Denkfehler. Ich bin davon ausgegeangen, das die Anzeige alleine von der Codepage abhängt und die Zuordnung Tastatur - Code über das Tastaturlayout gesteuert wurde.
Wenn ich Buchstaben über die Tastatur eingebe, dann muss Tastaturlayout und Codepage übereinstimmen, sonst geht es schief.
genau das ist das was ich sagte [-o<
Bernd Reinhardt hat geschrieben:Das Tastaturlayout kann ich aber nicht ständig vom Programm umstellen
wieso nicht :?:

schau mal nach

Code: Alles auswählen

GetKeyboardLayoutList()
ActivateKeyboardLayout()
GetKeyboardLayout()
SetKeyboardLayout()
aber warum sollte es "ständig" umgestellt werden :?:
wenn ein Russe die Xbase++ App bedienen will ist es doch nicht verkehrt wenn das OS() ein Kyrillisches Keyboard benutzt.
gruss by OHR
Jimmy
Ewald
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 475
Registriert: Sa, 08. Apr 2006 14:07
Wohnort: Datteln
Danksagung erhalten: 3 Mal
Kontaktdaten:

Re: Diverse Sprachen darstellen

Beitrag von Ewald »

Hallo Bernd,
ich habe an dem russisch Problem Jahre lang immer wieder geknobelt, da ich aus meinen Programmen Belege in diversen Sprachen ausgeben muss. Auch Ersatzteillisten, Lagerlisten etc. müssen in russisch gedruckt werden. Es gibt hier einige Beiträge dazu von mir im Forum. Nach unendlich vielen gescheiterten Versuchen habe ich meine Lösung gefunden. Ich speichere die russischen Begriffe in kyrillisch jetzt auch in normalen DBFs.
Wenn russisch ins Spiel kommt baue ich mir eine Schrift mit der Codepage 204
wenn russisch ----

case upper(vs) = "RU"
ofont:= xbpfont():new()
ofont:familyname:="Arial"
ofont:height:=15
ofont:codepage:=204
ofont:create()
vruss=.t.
otherwise
ofont:= xbpfont():new()
ofont:familyname:="Arial
.
.
.
dann fange ich Tastatureingaben für die kyrillischen Begriffe ab und setze die Eingaben life um.
Wenn ich z.B. "a" drücke soll ja nicht chr(097) sondern chr(147) kommen.
Die notwendigen Daten habe ich mir von einer normalen deutsch/russischen Cherry geholt, mit der die Begriffe jetzt auch eingegeben werden. Den erzeugten String speichere ich ganz normal in einer DBF in der auch die Übersetzungen in anderen Sprachen stehen.
function ffremd(yx,xlist)

if !vruss
return yx
endif

do case
case yx = "a"
yx = chr(147)
case yx = "b"
yx = chr(138)
case yx = "c"
yx = chr(164)
case yx = "d"
yx = chr(131)
.
.
return xy
.


Die so gewonnenen Daten lassen sich dann normal anzeigen, drucken und in DBF's - und auch MySql speichern wenn im XBASE Programm die Schrift mit Codepage 204 gewählt wird.
Einen einfachen Weg über die Zwischenablage gibt es dabei leider nicht. Die Daten aus Exceltabellen oder Word lassen sich so leider auch nicht
einfügen.
War mir dann aber auch irgendwann egal da ein praktikables Ergebnisse her musste 8)

Gruß
Ewald
Antworten