|
Das deutsche QBasic- und FreeBASIC-Forum Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
|
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
ALWIM
Anmeldungsdatum: 08.08.2006 Beiträge: 1037 Wohnort: Niederbayern
|
Verfasst am: 01.02.2014, 17:48 Titel: Sonderzeichen??? |
|
|
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 |
|
|
St_W
Anmeldungsdatum: 22.07.2007 Beiträge: 949 Wohnort: Austria
|
Verfasst am: 01.02.2014, 18:19 Titel: |
|
|
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 |
|
|
ALWIM
Anmeldungsdatum: 08.08.2006 Beiträge: 1037 Wohnort: Niederbayern
|
Verfasst am: 01.02.2014, 19:01 Titel: |
|
|
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!
????
WinApi löst das Problem! Aber die kann ich schlecht verwenden! Leider!
Gruß
ALWIM _________________ SHELL SHUTDOWN -s -t 05 |
|
Nach oben |
|
|
dreael Administrator
Anmeldungsdatum: 10.09.2004 Beiträge: 2507 Wohnort: Hofen SH (Schweiz)
|
Verfasst am: 01.02.2014, 20:42 Titel: |
|
|
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 |
|
|
St_W
Anmeldungsdatum: 22.07.2007 Beiträge: 949 Wohnort: Austria
|
Verfasst am: 01.02.2014, 21:50 Titel: |
|
|
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 Konsolenfenstereingibst.
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 |
|
|
nemored
Anmeldungsdatum: 22.02.2007 Beiträge: 4597 Wohnort: ~/
|
|
Nach oben |
|
|
grindstone
Anmeldungsdatum: 03.10.2010 Beiträge: 1211 Wohnort: Ruhrpott
|
Verfasst am: 02.02.2014, 09:18 Titel: |
|
|
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?
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 |
|
|
nemored
Anmeldungsdatum: 22.02.2007 Beiträge: 4597 Wohnort: ~/
|
Verfasst am: 02.02.2014, 13:01 Titel: |
|
|
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 |
|
|
grindstone
Anmeldungsdatum: 03.10.2010 Beiträge: 1211 Wohnort: Ruhrpott
|
Verfasst am: 02.02.2014, 13:28 Titel: |
|
|
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
Gruß
grindstone _________________ For ein halbes Jahr wuste ich nich mahl wie man Proggramira schreibt. Jetzt bin ich einen! |
|
Nach oben |
|
|
Jojo alter Rang
Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 02.02.2014, 14:48 Titel: |
|
|
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 |
|
|
ALWIM
Anmeldungsdatum: 08.08.2006 Beiträge: 1037 Wohnort: Niederbayern
|
Verfasst am: 02.02.2014, 19:03 Titel: |
|
|
grindstone hat Folgendes geschrieben: | Was heiß "schlecht"? Kannst du nicht, darfst du nicht, willst du nicht oder weißt du nicht, wie es geht?
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?
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
!Keine Ahnung und davon jede Menge!
Ich danke euch alle für die Hilfe!
Gruß
ALWIM _________________ SHELL SHUTDOWN -s -t 05 |
|
Nach oben |
|
|
grindstone
Anmeldungsdatum: 03.10.2010 Beiträge: 1211 Wohnort: Ruhrpott
|
Verfasst am: 03.02.2014, 12:19 Titel: |
|
|
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.
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.
Gruß
grindstone _________________ For ein halbes Jahr wuste ich nich mahl wie man Proggramira schreibt. Jetzt bin ich einen! |
|
Nach oben |
|
|
|
|
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.
|
|