Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

Umlaute auf Grafik-SCREEN

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Linux-spezifische Fragen
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Sebastian
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 5969
Wohnort: Deutschland

BeitragVerfasst am: 12.04.2008, 12:53    Titel: Umlaute auf Grafik-SCREEN Antworten mit Zitat

Hallo,

ich möchte ein FreeBasic-Programm gerne auch unter Linux (Debian 4) ablaufen lassen. Das Compilieren und Ausführen klappt soweit auch ohne Probleme, aber die Umlaute werden im SCREEN-Fenster leider falsch dargestellt:


Das Seltsame ist, dass die Zeichen über INKEY abgefragt wurden. Das heißt, es ist nicht irgendein anderer Zeichensatz aus einem Editor.
Code:
'Der Code ist nur hier im Forumeingabefeld kurz als Beispiel
'geschrieben worden und enthält möglicherweise Tippfehler.
DIM AS STRING Test, Taste
SCREEN 12
Test = ""
DO
  Taste = INKEY
  IF Taste <> "" Then
    If Taste = CHR(27) THEN
      Exit Do
    Else
      Test += Taste
    End If
  End If
Loop
PRINT Test
SLEEP

So eingegebene Umlaute würden falsch ausgegeben (wie oben). Was kann man da machen? Gibt es unter Linux auch Zeichensatzkonvertierungsroutinen wie CharToOEM / OEMToChar unter Windows?

Viele Grüße!
Sebastian
_________________

Der Markt regelt das! | Opas Leistung muss sich wieder lohnen - für 6 bis 10 Generationen!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Sebastian
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 5969
Wohnort: Deutschland

BeitragVerfasst am: 12.04.2008, 14:45    Titel: Antworten mit Zitat

Hallo!
HerbertSoftware hat Folgendes geschrieben:
Unter Debian gibt es den Befehl:
dpkg-reconfigure locales
Prüfe ob dort ein

de_DE@euro ISO-8859-15
de_DE ISO-8859-1

angekreuzt ist.

Beides war nicht angekreuzt. Das hab ich jetzt geändert und de_DE als Standard ausgewählt, aber leider hat das an dem Umlautproblem nichts geändert. verwundert

Zitat:
Bitte gib mal in der Kommandozeile in der Du es aufrufst folgendes ein:
echo $TERM

xterm
Zitat:
Weiters wäre evtl. auch ein
echo $SHELL
hilfreich.

/bin/bash

Viele Grüße!
Sebastian
_________________

Der Markt regelt das! | Opas Leistung muss sich wieder lohnen - für 6 bis 10 Generationen!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 12.04.2008, 14:48    Titel: Antworten mit Zitat

Lass dir doch mal die ASCII-Codes von den Umlauten bei Inkey ausgeben. FB hat ja im Screenmodus schließlich seine eigene Codepage.
_________________
» Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Sebastian
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 5969
Wohnort: Deutschland

BeitragVerfasst am: 12.04.2008, 15:24    Titel: Antworten mit Zitat

Vielleicht ein Bug von FB?
_________________

Der Markt regelt das! | Opas Leistung muss sich wieder lohnen - für 6 bis 10 Generationen!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 12.04.2008, 17:10    Titel: Antworten mit Zitat

Frag am besten im englischen Forum nach, weil mir kommt das spanisch vor..
_________________
» Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
nemored



Anmeldungsdatum: 22.02.2007
Beiträge: 4594
Wohnort: ~/

BeitragVerfasst am: 13.04.2008, 10:11    Titel: Antworten mit Zitat

Wenn du die Lösung hast, sag Bescheid - ich habe das Problem auch schon von Anfang an ... (habe es bisher umgangen, indem ich ae, oe und ue verwende grinsen )
_________________
Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Sebastian
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 5969
Wohnort: Deutschland

BeitragVerfasst am: 13.04.2008, 14:05    Titel: Antworten mit Zitat

Hallo,

ich habe das Problem nun wie folgt gelöst:

Zunächst ist mir aufgefallen, dass die Codes, die eingegeben werden, anscheinend Windows-artig zugeordnet sind (ANSI). Will man aber Text ausgeben, muss dies im ASCII-Zeichensatz geschehen. Also habe ich eine Tabelle erstellt, die jedem Zeichen den zugehörigen ASCII-Code zuordnet: http://www.freebasic-portal.de/index.php?s=fbporticula&mode=show&id=557
Nun muss man vor dem Ausgeben des Texts (siehe Beispiel ganz am Anfang) noch die Buchstaben des Strings Test immer durch den über die Tabelle zugeordneten ASCII-Code ersetzen. Dann werden auch eingegebene Umlaute richtig angezeigt. lächeln

Beispiel:
Code:
#include "tabelle-aus-nopaste.bas"

Function Zeichensatzkorrektur (ByVal Text As String) As String)
        Dim As String temp=""
        Dim As Integer i
        Dim As UByte bs
        FOR i = 0 TO LEN(Text)-1
            bs = Text[i]
            temp += CHR(ZTab(bs))
        Next i
        RETURN temp
End Function

DIM AS STRING Test, Taste
SCREEN 12
ZeichensatzkorrekturLinuxInit  '<= Tabelle initialisieren
Test = ""
DO
  Taste = INKEY
  IF Taste <> "" Then
    If Taste = CHR(27) THEN
      Exit Do
    Else
      Test += Taste
    End If
  End If
Loop
PRINT Zeichensatzkorrektur(Test)
SLEEP


Viele Grüße!
Sebastian
_________________

Der Markt regelt das! | Opas Leistung muss sich wieder lohnen - für 6 bis 10 Generationen!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 13.04.2008, 14:13    Titel: Antworten mit Zitat

jetzt könntest du natürlich noch code sparen, indem du das so machst...happy

Code:

'zuerst die regelmäßigen zuordnungen
for i as integer = 0 to 255
  ZTab(i)=i
next
'jetzt die unregelmäßigen zuordnungen
ZTab(x)=y

_________________
» Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Sebastian
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 5969
Wohnort: Deutschland

BeitragVerfasst am: 13.04.2008, 14:22    Titel: Antworten mit Zitat

lächeln

Diese Tabelle habe ich automatisch erzeugen lassen (jaja, ich hab sie nicht mühselig manuell zusammengestellt... zwinkern ), sodass es für den Aufwand unerheblich ist, wie viele Zeichen regelmäßig sind. Da sie auch nur rund 5kB groß ist, glaub ich, dass ich diese Optimierungen nicht noch machen muss. happy
_________________

Der Markt regelt das! | Opas Leistung muss sich wieder lohnen - für 6 bis 10 Generationen!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 13.04.2008, 14:28    Titel: Antworten mit Zitat

Damit passt es aber schon mal nicht mehr in ein 4k-Intro Zunge rausstrecken
Code verkleinern ist IMMER wichtig XD
_________________
» Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Sebastian
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 5969
Wohnort: Deutschland

BeitragVerfasst am: 13.04.2008, 14:51    Titel: Antworten mit Zitat

Jojo hat Folgendes geschrieben:
Damit passt es aber schon mal nicht mehr in ein 4k-Intro Zunge rausstrecken

Sowas programmier ich nicht. grinsen
_________________

Der Markt regelt das! | Opas Leistung muss sich wieder lohnen - für 6 bis 10 Generationen!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
nemored



Anmeldungsdatum: 22.02.2007
Beiträge: 4594
Wohnort: ~/

BeitragVerfasst am: 13.04.2008, 16:46    Titel: Antworten mit Zitat

In diesem Fall reicht ja ein
Code:
for i as integer = 0 to 127
  ZTab(i)=i
next
ZTab(128)=95
[...]

Spart Code ohne überflüssige Rechenschritte. happy
Das § und das € stimmen bei mir noch nicht, aber ich muss sowieso mal schauen wie/ob ich es füt UTF8 umbauen kann.

edit:
Code:
  ZTab(164)=238

unter Western 15 enthält bei mir das €-Zeichen. Aber ich finde keine Ausgabe für § Hmmm....
_________________
Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
dreael
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 2507
Wohnort: Hofen SH (Schweiz)

BeitragVerfasst am: 13.04.2008, 18:20    Titel: Antworten mit Zitat

Einmal generell gefragt: Ob im FreeBasic-Entwicklungsteam nicht bereits Bestrebungen im Gang sind, künftig alles als Unicode zu handhaben? Scheint aus meiner Sicht langfristig sinnvoller als weiss ich wie lange noch den DOS-Zeichensatz als Rückwärtskompatibilitätsrelikt mitzuschleppen...

Wäre evtl. ein sinnvoller "Feature Request"!
_________________
Teste die PC-Sicherheit mit www.sec-check.net
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Klößchn
1x verwarnt


Anmeldungsdatum: 22.03.2008
Beiträge: 77
Wohnort: Donauwörth

BeitragVerfasst am: 14.04.2008, 14:09    Titel: Antworten mit Zitat

dreael hat Folgendes geschrieben:
Wäre evtl. ein sinnvoller "Feature Request"!

Soll das heißen, man kann auch Funktionen anfordern? Das ist ja cool :]
Aber ist Unicode nicht durch W- (wide) Strings bereits integriert?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Linux-spezifische Fragen Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

 Impressum :: Datenschutz