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:

Sonderzeichen???

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC.
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
ALWIM



Anmeldungsdatum: 08.08.2006
Beiträge: 1037
Wohnort: Niederbayern

BeitragVerfasst am: 01.02.2014, 17:48    Titel: Sonderzeichen??? Antworten mit Zitat

Code:
SCREENRES 320, 320, 32
LOCATE 5,5: PRINT "à á è é"
SLEEP
END


Was kann man tun, damit diese und andere ähnliche Buchstaben auf dem Bildschirm korrekt dargestellt werden?

Ich will die nämlich, wenn möglich, so darstellen wie sie oben sind!

Auch die Buchstaben "ä ü ö und ß" werden falsch angezeigt!

Diese kann ich aber mit folgenden Zeichen korrekt anzeigen lassen:

Code:
ä = „
ß = á
ü =
ö = ”


Gibt es für die anderen Buchstaben auch solch einen Trick?

Gruß
ALWIM
_________________
SHELL SHUTDOWN -s -t 05
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
St_W



Anmeldungsdatum: 22.07.2007
Beiträge: 949
Wohnort: Austria

BeitragVerfasst am: 01.02.2014, 18:19    Titel: Antworten mit Zitat

Wie schön es wär, wenn die Leute selbstständig in die FAQ Sektion schauen oder die Forensuche verwenden würden bei solchen Trivialproblemen ...
http://www.freebasic-portal.de/freebasic-faq/probleme-mit-umlauten-9.html
... aber das scheint ja für Viele eine hochkomplexe Aufgabe zu sein, sodass sie lieber den x-ten Thread zur selben Frage anlegen.

---

Alternativ kann man auch den Zeichensatz seines Editors auf Codepage 850 (oder was auch immer du in deiner Dosbox eingestellt hast) einstellen, dann werden die Umlaute auch im Editor richtig angezeigt (und nicht mit so komischen/falschen Symbolen wie von dir oberhalb geschildert).
_________________
Aktuelle FreeBasic Builds, Projekte, Code-Snippets unter http://users.freebasic-portal.de/stw/
http://www.mv-lacken.at Musikverein Lacken (MV Lacken)
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
ALWIM



Anmeldungsdatum: 08.08.2006
Beiträge: 1037
Wohnort: Niederbayern

BeitragVerfasst am: 01.02.2014, 19:01    Titel: Antworten mit Zitat

St_W hat Folgendes geschrieben:
Wie schön es wär, wenn die Leute selbstständig in die FAQ Sektion schauen oder die Forensuche verwenden würden bei solchen Trivialproblemen ...
http://www.freebasic-portal.de/freebasic-faq/probleme-mit-umlauten-9.html
... aber das scheint ja für Viele eine hochkomplexe Aufgabe zu sein, sodass sie lieber den x-ten Thread zur selben Frage anlegen.

---

Alternativ kann man auch den Zeichensatz seines Editors auf Codepage 850 (oder was auch immer du in deiner Dosbox eingestellt hast) einstellen, dann werden die Umlaute auch im Editor richtig angezeigt (und nicht mit so komischen/falschen Symbolen wie von dir oberhalb geschildert).

Ich habe bereits die Seite vor dem Post angesehen! Schon 3-4 mal!

Nur sind eben jene Buchstaben wie à oder á nicht dabei? Bzw. es klappt mit den Buchstaben nicht nach der geposteten Anleitung!
Jeden Falls nicht bei mir.


Code:
'ae: „    AE: Ž
'oe: ”    OE: ™
'ue:     UE: š
'SS: á

Wenn ich wüsste, wie ich nach obigen Schema die Buchtaben mit dem schrägen Strich angezeigt bekomme, wäre mir auch schon geholfen!

Habe schon sämtliche Zeichen ausprobiert und keinen Erfolg gehabt!
Wenn ich es schon längst hinbekommen hätte, würde ich nicht hier fragen!

Ä, Ö, Ü, ä, ö, ü und ß habe ich bereits mit oben genannten Zeichen hinbekommen!

verwundert Hmmm.... ????

WinApi löst das Problem! Aber die kann ich schlecht verwenden! Leider! neutral

Gruß
ALWIM
_________________
SHELL SHUTDOWN -s -t 05
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
dreael
Administrator


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

BeitragVerfasst am: 01.02.2014, 20:42    Titel: Antworten mit Zitat

Ich habe mittlerweilen begonnen, in diesem Zusammenhang eigentlich immer von der \-Syntax der erweiterten Stringliterale Gebrauch zu machen, z.B.
Code:
PRINT !"Fl\148tenb\129cher \153l \154belt\132ter"

=> Dies übersetzt dann der Compiler zum gewünschten Stringliteral zusammen, ohne dass String-Konkatinierungen zur Laufzeit nötig sind. => Kommentarzeilen dürfen dann ISO 8859-1 (Latin 1) oder gar UTF-8 sein (FBEdit unter Windows nimmt übrigens ersteres), der eigentliche Code selber kommt dann mit reinem US-ASCII 7-bit aus.

Für die "\XXX"-Codes kommt die altbewährte Zeichentabelle aus der MS-DOS-Zeit (GW-BASIC) zum Einsatz.

Das Ganze eignet sich auch bestens für die Inkey-Tastencodes, z.B.
Code:
t = InKey
Select Case t
Case ""
   ' Keine Taste
  SLEEP
Case !"\255H"
  ' Pfeil nach oben
Case !"\027"
  ' Esc
  ...
End Select

_________________
Teste die PC-Sicherheit mit www.sec-check.net
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
St_W



Anmeldungsdatum: 22.07.2007
Beiträge: 949
Wohnort: Austria

BeitragVerfasst am: 01.02.2014, 21:50    Titel: Antworten mit Zitat

Also, die Methode mit dem Schrägstrich funktioniert für alle Zeichen des entsprechenden Zeichensatzes. Welcher Zeichensatz verwendet wird kannst du herausfinden, indem du im betroffenen Konsolenfenster
Code:
chcp
eingibst.

Standardmäßig wird mit der Ländereinstellung "Deutsch (Österreich)" die Codeseite 850 verwendet, die z.B. hier dokumentiert ist: http://msdn.microsoft.com/en-us/goglobal/cc305160.aspx
(Zu Beachten, dass dort Hex-Werte angegeben sind, nach dem Schrägstrich aber Dezimalwerte angegeben werden müssen!)

Wenn du z.B. "Æ" ausgeben willst dann machst du folgendes:
  • Du schaust du in der obig verlinkten Tabelle nach, wo du &h90 + &h02 = &h92 = 146 findest
  • Dann fügst du !"\146" zur Ausgabe des Zeichens ein.


Alternativ kannst du - und ich wiederhole das nochmal, weil du das anscheinend überlesen hast - die Entsprechenden Zeichen einfach eingeben, wenn du die Zeichenkodierung deines Editors auf Codepage 850 einstellst. Also Schritt für Schritt:
  • Datei in sinnvollem Texteditor öffnen (z.B. Notepad++)
  • Codepage 850 einstellen
  • Die entsprechenden Zeichen ganz normal eingeben
  • Codepage eventuell wieder zurückstellen (dann erscheinen die eingegebenen Zeichen als jene seltsamen, die du obig für ein paar Zeichen aufgelistet hast)

_________________
Aktuelle FreeBasic Builds, Projekte, Code-Snippets unter http://users.freebasic-portal.de/stw/
http://www.mv-lacken.at Musikverein Lacken (MV Lacken)


Zuletzt bearbeitet von St_W am 02.02.2014, 04:00, insgesamt einmal bearbeitet
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
nemored



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

BeitragVerfasst am: 01.02.2014, 23:44    Titel: Antworten mit Zitat

Siehe auch http://www.freebasic-portal.de/code-beispiele/kleine-helferlein/ascii-tabelle-anzeigen-lassen-2.html
-> gewünschtes Zeichen suchen und, wie St_W beschrieben hat, einfügen.
_________________
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
grindstone



Anmeldungsdatum: 03.10.2010
Beiträge: 1211
Wohnort: Ruhrpott

BeitragVerfasst am: 02.02.2014, 09:18    Titel: Antworten mit Zitat

ALWIM hat Folgendes geschrieben:
WinApi löst das Problem! Aber die kann ich schlecht verwenden! Leider!
Was heiß "schlecht"? Kannst du nicht, darfst du nicht, willst du nicht oder weißt du nicht, wie es geht? zwinkern

Ich habe das Problem ganz universell mit einer kleinen .bi - Datei gelöst, die ich bei Bedarf einbinde
Code:
#Include Once "windows.bi"

Function as(text As String) As String
'wandelt Sonderzeichen vom ansi- ins ascii-Format
  Dim As String g
  g = text
  OemToChar(g,g)
  Return g
End Function

Function an(text As String) As String
'wandelt Sonderzeichen vom ascii- ins ansi-Format
  Dim As String g
  g = text 
  CharToOem(g,g)
  Return g
End Function


Gruß
grindstone
_________________
For ein halbes Jahr wuste ich nich mahl wie man Proggramira schreibt. Jetzt bin ich einen!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
nemored



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

BeitragVerfasst am: 02.02.2014, 13:01    Titel: Antworten mit Zitat

WinAPI hat das Problem, dass es nur unter Windows funktioniert. Ich würde ja WSTRING verwenden (dazu muss die Quelltextdatei aber in UTF mit BOM gespeichert werden!); allerdings bin ich mir jetzt gerade gar nicht sicher, ob die Windows-Konsole mit UTF umgehen kann.
_________________
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
grindstone



Anmeldungsdatum: 03.10.2010
Beiträge: 1211
Wohnort: Ruhrpott

BeitragVerfasst am: 02.02.2014, 13:28    Titel: Antworten mit Zitat

Zitat:
WinAPI hat das Problem, dass es nur unter Windows funktioniert
Das meinte ich ja mit der Frage, ob er es nicht kann (weil kein Windows). Prinzipiell muß er jedenfalls Windows zur Verfügung haben, denn sonst könnte er meine Schach-GUI nicht testen (Dank nochmal in diese Richtung), und im Hinblick darauf habe ich mal rein prophylaktisch ein paar Programmzeilen gepostet zwinkern

Gruß
grindstone
_________________
For ein halbes Jahr wuste ich nich mahl wie man Proggramira schreibt. Jetzt bin ich einen!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Jojo
alter Rang


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

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

nemored hat Folgendes geschrieben:
WinAPI hat das Problem, dass es nur unter Windows funktioniert. Ich würde ja WSTRING verwenden (dazu muss die Quelltextdatei aber in UTF mit BOM gespeichert werden!); allerdings bin ich mir jetzt gerade gar nicht sicher, ob die Windows-Konsole mit UTF umgehen kann.

Kann sie, aber es gibt da viele blutige und schmerzhafte Details.
_________________
» 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
ALWIM



Anmeldungsdatum: 08.08.2006
Beiträge: 1037
Wohnort: Niederbayern

BeitragVerfasst am: 02.02.2014, 19:03    Titel: Antworten mit Zitat

grindstone hat Folgendes geschrieben:
Was heiß "schlecht"? Kannst du nicht, darfst du nicht, willst du nicht oder weißt du nicht, wie es geht? zwinkern
Gruß
grindstone


Ich weiß schon wie es mit der WinApi gehen würde, nur ist es manchmal besser, wenn man einen Text mit Print auf dem Bildschirm anzeigt!
Noch dazu wenn der Text auf einer bestimmten Position auf dem Bildschirm sein muss!

Zitat:
Ich habe das Problem ganz universell mit einer kleinen .bi - Datei gelöst, die ich bei Bedarf einbinde

Das ist doch ... ? Ist das nicht diese eine Routine der WinApi? Ich glaube die habe ich momentan auch im Quellcode als Notlösung drin. Das ist aber nicht das was ich eigentlich will! Ich könnte ja die Sonderbuchstaben wie á und é und à ... durch ganz normale Buchstabem ersetzen. Bloß, ob dann einer den Text als Ausländer noch lesen kann, ist eine andere Frage!

Vielleicht klappt es doch irgendwie mit der Routine? Habe da jetzt eine Idee!

Edit:

Wieso bin ich da nicht schon viel früher auf die Idee gekommen? mit dem Kopf durch die Mauer wollen

Ich schreibe diese eine Routine (Umwandlung) sinnlos zu jedem Satz dazu! Hätte ich sie ins Unterprogramm geschrieben, hätte ich mir diesen Post hier sparen können! Warum ich das nicht getan habe, entzieht sich meiner Kenntniss? Irgendwas war da, warum ich das nicht gleich ins Unterprogramm geschrieben habe? Kann sein, dass ich der Meinung war, dass es nicht funktioniert!

Auf jeden Fall funktioniert es jetzt! Noch dazu so wie es für mich am besten ist!
Jetzt kann ich den Satz, für die Umwandlung bei jeden Satz, wo ich das dazugeschrieben habe, wieder entfernen!!! Tststs mit den Augen rollen Autsch! Kopf schütteln

!Keine Ahnung und davon jede Menge! lachen

Ich danke euch alle für die Hilfe!

Gruß
ALWIM
_________________
SHELL SHUTDOWN -s -t 05
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
grindstone



Anmeldungsdatum: 03.10.2010
Beiträge: 1211
Wohnort: Ruhrpott

BeitragVerfasst am: 03.02.2014, 12:19    Titel: Antworten mit Zitat

ALWIM hat Folgendes geschrieben:
Wieso bin ich da nicht schon viel früher auf die Idee gekommen?
Tröste dich: Auch für mich war es ein langer, langer Weg dorthin. lächeln

Ich möchte dich noch vor einem Fallstrick warnen: Du könntest auf die Idee kommen, die Function zu
Code:
Function as(text As String) As String
  OemToChar(text,text)
  Return text
End Function
zu "vereinfachen". Das hätte aber einen sehr unschönen Nebeneffekt, denn dadurch würde der Inhalt der ursprünglichen Stringvariable geändert. Und auch
Code:
Function as(text As String) As String
  Dim As String g
  OemToChar(text,g)
  Return g
End Function
funktioniert nicht, da die API als Ziel einen existierenden String von passender Länge benötigt.

Zitat:
Jetzt kann ich den Satz, für die Umwandlung bei jeden Satz, wo ich das dazugeschrieben habe, wieder entfernen!!!
Wozu gibt es die Funktion "Suchen und Ersetzen"?

Zitat:
!Keine Ahnung und davon jede Menge!
Na, das ist doch besser als gar nichts. zwinkern

Gruß
grindstone
_________________
For ein halbes Jahr wuste ich nich mahl wie man Proggramira schreibt. Jetzt bin ich einen!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC. 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