![Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht](misc/logos/logo.png) |
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 |
grindstone
Anmeldungsdatum: 03.10.2010 Beiträge: 1215 Wohnort: Ruhrpott
|
Verfasst am: 10.12.2017, 20:25 Titel: |
|
|
Konsolenfenster oder Editor macht keinen Unterschied. FB benutzt intern ASCII. Code: | #Include Once "windows.bi"
#Include Once "utf_conv.bi"
Function UTF(s As String) As String
'wandelt Sonderzeichen vom ascii- ins utf8-Format
Dim As String sUTF
Dim As Integer numberOfBytes
sUTF = String(Len(s) * 2, " ")
CharToUTF(UTF_ENCOD_UTF8, StrPtr(s), Len(s), StrPtr(sUTF), @numberOfBytes)
Return Left(sUTF, numberOfBytes)
End Function
Function AsciiToAnsi(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
Dim As String text = "Drü Chünüsün müt düm Küntrübüs"
Print text
Print UTF(text)
Print AsciiToAnsi(text)
ScreenRes 500, 300, 32
Print text
Print UTF(text)
Print AsciiToAnsi(text)
Open ExePath + "\test3.trf" For Output As #1
Print #1, UTF(text); 'abspeichern im UTF8-Format ohne ANSI und ohne BOM
Close 1
Sleep |
Gruß
grindstone _________________ For ein halbes Jahr wuste ich nich mahl wie man Proggramira schreibt. Jetzt bin ich einen! |
|
Nach oben |
|
![](templates/subSilver/images/spacer.gif) |
HorstD
Anmeldungsdatum: 01.11.2007 Beiträge: 107
|
Verfasst am: 10.12.2017, 20:34 Titel: |
|
|
Zitat: | ich öffne die EXE-Datei und gebe dann mittels einer Input-Routine den Text ein. |
Input_Routine über Console (DOS-Fenster)? |
|
Nach oben |
|
![](templates/subSilver/images/spacer.gif) |
ALWIM
![](images/avatars/71843795144f96ce56b576.jpg)
Anmeldungsdatum: 08.08.2006 Beiträge: 1041 Wohnort: Niederbayern
|
Verfasst am: 10.12.2017, 20:41 Titel: |
|
|
HorstD hat Folgendes geschrieben: | Zitat: | ich öffne die EXE-Datei und gebe dann mittels einer Input-Routine den Text ein. |
Input_Routine über Console (DOS-Fenster)? | Ich habe in meinem Programm "Select Case" drin! Damit wähle ich die Buchstaben/Zeichen aus. Das Fenster wurde mit "Screenres 640, 320, 32" erstellt!
Gruß
ALWIM _________________ SHELL SHUTDOWN -s -t 05 |
|
Nach oben |
|
![](templates/subSilver/images/spacer.gif) |
St_W
![](images/avatars/106287718549fca05d5271f.jpg)
Anmeldungsdatum: 22.07.2007 Beiträge: 949 Wohnort: Austria
|
Verfasst am: 11.12.2017, 01:38 Titel: |
|
|
Wie grindstonde schon wiederholt gesagt hat: die Eingabefunktionen von FB unterstützen kein UTF-8, du musst den Text manuell in UTF-8 konvertieren und dann direkt so in die Datei schreiben (also die Datei asl Binärdatei öffnen und KEIN Encoding angeben). _________________ Aktuelle FreeBasic Builds, Projekte, Code-Snippets unter http://users.freebasic-portal.de/stw/
http://www.mv-lacken.at Musikverein Lacken (MV Lacken) |
|
Nach oben |
|
![](templates/subSilver/images/spacer.gif) |
nemored
![](images/avatars/18585278245ddb8b9d8710.png)
Anmeldungsdatum: 22.02.2007 Beiträge: 4604 Wohnort: ~/
|
Verfasst am: 11.12.2017, 15:34 Titel: |
|
|
Code: | screenres 640, 320, 32
dim as string myUTF8string, myANSIstring, key
cls
print "Gib deinen Text ein: ";
do
key = inkey
select case asc(key)
case 13
exit do
case 32 to 127 ' ASCII
myANSIstring &= key
myUTF8string &= key
print key;
case 132 ' ä
myANSIstring &= key
myUTF8string &= chr(195, 164)
print key;
case 148 ' ö
myANSIstring &= key
myUTF8string &= chr(195, 182)
print key;
case 129 ' ü
myANSIstring &= key
myUTF8string &= chr(195, 188)
print key;
case 142 ' Ä
myANSIstring &= key
myUTF8string &= chr(195, 132)
print key;
case 153 ' Ö
myANSIstring &= key
myUTF8string &= chr(195, 150)
print key;
case 154 ' Ü
myANSIstring &= key
myUTF8string &= chr(195, 156)
print key;
case 225 ' ß
myANSIstring &= key
myUTF8string &= chr(195, 159)
print key;
end select
loop
print
print "UTF-8-String: "; myUTF8string
getkey |
Keinesfalls optimal, weil zum einen eine doppelte Speicherung stattfindet (die Ausgabe innerhalb des FB-Fensters läuft ja über eine ANSI-Codierung) und weil auch das Löschen des letzten Zeichens (Backspace) in UTF-8 aufwendiger ist. Wahrscheinlich ist es sinnvoller, erst nur im ANSI zu arbeiten und erst vor dem Speichern umzuwandeln. _________________ Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1. |
|
Nach oben |
|
![](templates/subSilver/images/spacer.gif) |
HorstD
Anmeldungsdatum: 01.11.2007 Beiträge: 107
|
Verfasst am: 11.12.2017, 17:59 Titel: |
|
|
Zitat: | Da könnte ich doch ja gleich so speichern: |
Code: |
Open ExePath + "\test.trf" For Output As #1
Print #1, text
Close
|
Versuch's mal so:
Code: |
Declare Function OEM2UTF8(TXT as String) as String
...
... Dein Code
...
Open ExePath + "\test.trf" For Output As #1
Print #1, OEM2UTF8(text)
Close
...
... Dein Code
...
Function OEM2UTF8(TXT As String) As String
' Nur für ÄÖÜäöüß
Dim t1 as string
Dim i as integer
Dim p as integer
dim l as integer
l = Len(TXT)
t1 = Space$(l*2)
For i = 0 To l-1
' Print t[i]
Select Case txt[i]
Case Is < 128: t1[p] = TXT[i]: p = p+1
Case 142: t1[p] = 195: t1[p+1] = 132: p = p+2 ' Ä
case 153: t1[p] = 195: t1[p+1] = 150: p = p+2 ' Ö
Case 154: t1[p] = 195: t1[p+1] = 156: p = p+2 ' Ü
Case 225: t1[p] = 195: t1[p+1] = 159: p = p+2 ' ß
Case 132: t1[p] = 195: t1[p+1] = 164: p = p+2 ' ä
case 148: t1[p] = 195: t1[p+1] = 182: p = p+2 ' ö
case 129: t1[p] = 195: t1[p+1] = 188: p = p+2 ' ü
Case Else
t1[p] = 63 : p = p+1
End Select
Next
Function = Left(t1,p)
End Function
|
Zum Testen:
Code: |
Declare Function OEM2UTF8(TXT as String) as String
Dim t As String
't="ABC-ÄÖÜ-äöü-ß"
t = "ABC-"+Chr(142,153,154,45,132,148,129,45,225)
Open "d:\#fb\fb-oem2utf8.txt" For Output As #1 '<-- Pfad anpassen
' Print #1, t
Print #1,OEM2UTF8(t)
close
Function OEM2UTF8(TXT As String) As String
' Nur für ÄÖÜäöüß
Dim t1 as string
Dim i as integer
Dim p as integer
dim l as integer
l = Len(TXT)
t1 = Space$(l*2)
For i = 0 To l-1
' Print t[i]
Select Case txt[i]
Case Is < 128: t1[p] = TXT[i]: p = p+1
Case 142: t1[p] = 195: t1[p+1] = 132: p = p+2 ' Ä
case 153: t1[p] = 195: t1[p+1] = 150: p = p+2 ' Ö
Case 154: t1[p] = 195: t1[p+1] = 156: p = p+2 ' Ü
Case 225: t1[p] = 195: t1[p+1] = 159: p = p+2 ' ß
Case 132: t1[p] = 195: t1[p+1] = 164: p = p+2 ' ä
case 148: t1[p] = 195: t1[p+1] = 182: p = p+2 ' ö
case 129: t1[p] = 195: t1[p+1] = 188: p = p+2 ' ü
Case Else
t1[p] = 63 : p = p+1
End Select
Next
Function = Left(t1,p)
End Function
|
|
|
Nach oben |
|
![](templates/subSilver/images/spacer.gif) |
dreael Administrator
![](images/avatars/112279543641421ec80e8e2.gif)
Anmeldungsdatum: 10.09.2004 Beiträge: 2509 Wohnort: Hofen SH (Schweiz)
|
Verfasst am: 12.12.2017, 23:58 Titel: |
|
|
Nur als Hinweis: Derartige Case-Statements und nur gerade auf Umlaute beschränkt ist nicht gerade die optimale Umsetzungsart. An dieser Stelle wäre eine Array-Konstante besser, wo die jeweilige Codeposition passend abgebildert wird.
Kleine Anleitung: Von FreeBasic wissen wir, dass der Zeichensatz der Codepage 437 (=MS-DOS klassisch) entspricht. Am besten also eine Textdatei generieren mit diesen Zeichen, diese beispielsweise unter Linux mit
Code: | recode ibm437..utf-8 datei.txt |
umwandeln. Nun braucht es lediglich noch eine Routine, welche dieses Array generiert.
Fürs Ganze sonst einmal ein sehr einfaches Hilfsprogramm kreiert:
http://beilagen.dreael.ch/QB/CodeGenCp437toUTF8.bas
Wenn alles richtig gemacht wurde, wird ein
Code: | Dim tbl(128 to ...) As String => { !"\195\135", !"\195\188", !"\195\169", !"\195\162", _
!"\195\164", !"\195\160", !"\195\165", !"\195\167", !"\195\170", !"\195\171", _
!"\195\168", !"\195\175", !"\195\174", !"\195\172", !"\195\132", !"\195\133", _
!"\195\137", !"\195\166", !"\195\134", !"\195\180", !"\195\182", !"\195\178", _
!"\195\187", !"\195\185", !"\195\191", !"\195\150", !"\195\156", !"\194\162", _
!"\194\163", !"\194\165", !"\226\130\167", !"\198\146", !"\195\161", !"\195\173", _
!"\195\179", !"\195\186", !"\195\177", !"\195\145", !"\194\170", !"\194\186", _
!"\194\191", !"\226\140\144", !"\194\172", !"\194\189", !"\194\188", !"\194\161", _
!"\194\171", !"\194\187", !"\226\150\145", !"\226\150\146", !"\226\150\147", !"\226\148\130", _
!"\226\148\164", !"\226\149\161", !"\226\149\162", !"\226\149\150", !"\226\149\149", !"\226\149\163", _
!"\226\149\145", !"\226\149\151", !"\226\149\157", !"\226\149\156", !"\226\149\155", !"\226\148\144", _
!"\226\148\148", !"\226\148\180", !"\226\148\172", !"\226\148\156", !"\226\148\128", !"\226\148\188", _
!"\226\149\158", !"\226\149\159", !"\226\149\154", !"\226\149\148", !"\226\149\169", !"\226\149\166", _
!"\226\149\160", !"\226\149\144", !"\226\149\172", !"\226\149\167", !"\226\149\168", !"\226\149\164", _
!"\226\149\165", !"\226\149\153", !"\226\149\152", !"\226\149\146", !"\226\149\147", !"\226\149\171", _
!"\226\149\170", !"\226\148\152", !"\226\148\140", !"\226\150\136", !"\226\150\132", !"\226\150\140", _
!"\226\150\144", !"\226\150\128", !"\206\177", !"\195\159", !"\206\147", !"\207\128", _
!"\206\163", !"\207\131", !"\194\181", !"\207\132", !"\206\166", !"\206\152", _
!"\206\169", !"\206\180", !"\226\136\158", !"\207\134", !"\206\181", !"\226\136\169", _
!"\226\137\161", !"\194\177", !"\226\137\165", !"\226\137\164", !"\226\140\160", !"\226\140\161", _
!"\195\183", !"\226\137\136", !"\194\176", !"\194\183", !"\226\128\162", !"\226\136\154", _
!"\226\129\191", !"\194\178", !"\226\150\160", !"\194\160" } |
generiert. Damit ist auch der Franzose glücklich. :-) _________________ Teste die PC-Sicherheit mit www.sec-check.net |
|
Nach oben |
|
![](templates/subSilver/images/spacer.gif) |
ALWIM
![](images/avatars/71843795144f96ce56b576.jpg)
Anmeldungsdatum: 08.08.2006 Beiträge: 1041 Wohnort: Niederbayern
|
Verfasst am: 13.12.2017, 23:04 Titel: |
|
|
dreael hat Folgendes geschrieben: | Nur als Hinweis: Derartige Case-Statements und nur gerade auf Umlaute beschränkt ist nicht gerade die optimale Umsetzungsart. An dieser Stelle wäre eine Array-Konstante besser, wo die jeweilige Codeposition passend abgebildert wird.
Kleine Anleitung: Von FreeBasic wissen wir, dass der Zeichensatz der Codepage 437 (=MS-DOS klassisch) entspricht. Am besten also eine Textdatei generieren mit diesen Zeichen, diese beispielsweise unter Linux mit
Code: | recode ibm437..utf-8 datei.txt |
umwandeln. Nun braucht es lediglich noch eine Routine, welche dieses Array generiert.
Fürs Ganze sonst einmal ein sehr einfaches Hilfsprogramm kreiert:
http://beilagen.dreael.ch/QB/CodeGenCp437toUTF8.bas
Wenn alles richtig gemacht wurde, wird ein
Code: | Dim tbl(128 to ...) As String => { !"\195\135", !"\195\188", !"\195\169", !"\195\162", _
!"\195\164", !"\195\160", !"\195\165", !"\195\167", !"\195\170", !"\195\171", _
!"\195\168", !"\195\175", !"\195\174", !"\195\172", !"\195\132", !"\195\133", _
!"\195\137", !"\195\166", !"\195\134", !"\195\180", !"\195\182", !"\195\178", _
!"\195\187", !"\195\185", !"\195\191", !"\195\150", !"\195\156", !"\194\162", _
!"\194\163", !"\194\165", !"\226\130\167", !"\198\146", !"\195\161", !"\195\173", _
!"\195\179", !"\195\186", !"\195\177", !"\195\145", !"\194\170", !"\194\186", _
!"\194\191", !"\226\140\144", !"\194\172", !"\194\189", !"\194\188", !"\194\161", _
!"\194\171", !"\194\187", !"\226\150\145", !"\226\150\146", !"\226\150\147", !"\226\148\130", _
!"\226\148\164", !"\226\149\161", !"\226\149\162", !"\226\149\150", !"\226\149\149", !"\226\149\163", _
!"\226\149\145", !"\226\149\151", !"\226\149\157", !"\226\149\156", !"\226\149\155", !"\226\148\144", _
!"\226\148\148", !"\226\148\180", !"\226\148\172", !"\226\148\156", !"\226\148\128", !"\226\148\188", _
!"\226\149\158", !"\226\149\159", !"\226\149\154", !"\226\149\148", !"\226\149\169", !"\226\149\166", _
!"\226\149\160", !"\226\149\144", !"\226\149\172", !"\226\149\167", !"\226\149\168", !"\226\149\164", _
!"\226\149\165", !"\226\149\153", !"\226\149\152", !"\226\149\146", !"\226\149\147", !"\226\149\171", _
!"\226\149\170", !"\226\148\152", !"\226\148\140", !"\226\150\136", !"\226\150\132", !"\226\150\140", _
!"\226\150\144", !"\226\150\128", !"\206\177", !"\195\159", !"\206\147", !"\207\128", _
!"\206\163", !"\207\131", !"\194\181", !"\207\132", !"\206\166", !"\206\152", _
!"\206\169", !"\206\180", !"\226\136\158", !"\207\134", !"\206\181", !"\226\136\169", _
!"\226\137\161", !"\194\177", !"\226\137\165", !"\226\137\164", !"\226\140\160", !"\226\140\161", _
!"\195\183", !"\226\137\136", !"\194\176", !"\194\183", !"\226\128\162", !"\226\136\154", _
!"\226\129\191", !"\194\178", !"\226\150\160", !"\194\160" } |
generiert. Damit ist auch der Franzose glücklich. ![lächeln](images/smiles/icon_smile.gif) | Was ist denn das??? Da komme ich jetzt nicht mehr mit. Mit den haufen Beispielen, weiß ich jetzt wirklich nicht mehr, was davon am besten ist bzw. funktioniert?
Wegen:
Zitat: | Damit ist auch der Franzose glücklich. ![lächeln](images/smiles/icon_smile.gif) |
Gruß
ALWIM _________________ SHELL SHUTDOWN -s -t 05 |
|
Nach oben |
|
![](templates/subSilver/images/spacer.gif) |
nemored
![](images/avatars/18585278245ddb8b9d8710.png)
Anmeldungsdatum: 22.02.2007 Beiträge: 4604 Wohnort: ~/
|
Verfasst am: 13.12.2017, 23:38 Titel: |
|
|
Nun, dreael hat ganz einfach einen Vorschlag für alle OEM-Zeichen. Es kann ja schließlich sein, dass du auch Zeichen wie é, ò oder â benötigst.
Zitat: | Mit den haufen Beispielen, weiß ich jetzt wirklich nicht mehr, was davon am besten ist bzw. funktioniert? |
Willkommen in der Welt des Programmierers. ![lächeln](images/smiles/icon_smile.gif) _________________ Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1. |
|
Nach oben |
|
![](templates/subSilver/images/spacer.gif) |
grindstone
Anmeldungsdatum: 03.10.2010 Beiträge: 1215 Wohnort: Ruhrpott
|
Verfasst am: 16.12.2017, 00:37 Titel: |
|
|
ALWIM hat Folgendes geschrieben: | Mit den haufen Beispielen, weiß ich jetzt wirklich nicht mehr, was davon am besten ist bzw. funktioniert? | Ich empfehle die Verwendung der utf_conv.bi. Diese Bibliothek ist seit Jahren Bestandteil des FB - Compilers, weshalb man getrost davon ausgehen kann, daß die Implementation komplett und fehlerfrei ist.
Gruß
grindstone _________________ For ein halbes Jahr wuste ich nich mahl wie man Proggramira schreibt. Jetzt bin ich einen! |
|
Nach oben |
|
![](templates/subSilver/images/spacer.gif) |
nemored
![](images/avatars/18585278245ddb8b9d8710.png)
Anmeldungsdatum: 22.02.2007 Beiträge: 4604 Wohnort: ~/
|
Verfasst am: 16.12.2017, 01:48 Titel: |
|
|
utf_conv.bi wandelt allerdings nicht zwischen OEM und Unicode um, sondern zwischen einem UTF-String und (W)STRING. _________________ Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1. |
|
Nach oben |
|
![](templates/subSilver/images/spacer.gif) |
ALWIM
![](images/avatars/71843795144f96ce56b576.jpg)
Anmeldungsdatum: 08.08.2006 Beiträge: 1041 Wohnort: Niederbayern
|
Verfasst am: 18.12.2017, 00:44 Titel: |
|
|
Vielen herzlichen Dank für die Antworten!
Mir ist da jetzt eine Idee gekommen:
Ich verwende ja lediglich die Buchstaben Ä, ä, Ö, ö, Ü, ü sowie ß
Wenn ich die jetzt weg lasse und die Datei ganz normal speichere, müsste ich doch eigentlich nichts umwandeln oder? Die Buchstaben Ä, Ö Ü, ... müssen letztendlich sowieso umgewandelt werden. Also Ä -> ae, ß -> ss, ö -> oe und ü -> ue.
Sollte ich diese Buchstaben in meinem Programm zulassen, müsste ich diese vor dem speichern erstmal umwandeln! Lasse ich sie nicht zu, dann brauche ich gar nichts umwandeln und kann direkt so alles abspeichern. Jetzt muss ich nur noch schauen, wie ich aus "Ä" ein "ae" oder aus "ß" ein "ss" ect. machen kann.
Ich speichere also dann so ab:
Code: | OPEN "Test.trf" FOR OUTPUT AS #f |
Sollte ich falsch liegen, korrigiert mich bitte.
Wie funktioniert das Beispiel von Dreal? Wie kann ich es anwenden? So etwas habe ich noch nie gesehen bisher.
Gruß
ALWIM _________________ SHELL SHUTDOWN -s -t 05 |
|
Nach oben |
|
![](templates/subSilver/images/spacer.gif) |
nemored
![](images/avatars/18585278245ddb8b9d8710.png)
Anmeldungsdatum: 22.02.2007 Beiträge: 4604 Wohnort: ~/
|
Verfasst am: 18.12.2017, 01:15 Titel: |
|
|
Solange du reine ASCII-Zeichen verwendest, brauchst du dir wegen der Speicherung keine Sorgen machen. Bei ASCII-Zeichen ist die UTF-8-Speicherung identisch.
dreael hat lediglich alle möglichen Umwandlungswerte in einem Array gespeichert. Umwandeln kannst du z. B.
Code: | SCREENRES 800, 600
DIM AS INTEGER oem = 225 ' ß
PRINT CHR(oem) ' Ausgabe des ß im Fenster
PRINT tbl(oem) ' Ausgabe des zugehörigen UTF-8-Strings
GETKEY |
_________________ Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1. |
|
Nach oben |
|
![](templates/subSilver/images/spacer.gif) |
grindstone
Anmeldungsdatum: 03.10.2010 Beiträge: 1215 Wohnort: Ruhrpott
|
Verfasst am: 18.12.2017, 18:49 Titel: |
|
|
ALWIM hat Folgendes geschrieben: | Jetzt muss ich nur noch schauen, wie ich aus "Ä" ein "ae" oder aus "ß" ein "ss" ect. machen kann. | Ganz einfach: Code: | Function umwandeln (ByVal text As String) As String
Dim As Integer x, y
Dim As String umw(..., 1) = {{"Ä","Ae"}, {"ä","ae"}, _
{"Ö","Oe"}, {"ö","oe"}, _
{"Ü","Ue"}, {"ü","ue"}, _
{"ß","ss"}}
For y = 0 To UBound(umw)
Do While InStr(text, umw(y, 0))
x = InStr(text, umw(y, 0))
text = Left(text, x - 1) + umw(y, 1) + Mid(text, x + 1)
Loop
Next
Return text
End Function |
Gruß
grindstone _________________ For ein halbes Jahr wuste ich nich mahl wie man Proggramira schreibt. Jetzt bin ich einen! |
|
Nach oben |
|
![](templates/subSilver/images/spacer.gif) |
ALWIM
![](images/avatars/71843795144f96ce56b576.jpg)
Anmeldungsdatum: 08.08.2006 Beiträge: 1041 Wohnort: Niederbayern
|
Verfasst am: 19.12.2017, 03:47 Titel: |
|
|
grindstone hat Folgendes geschrieben: | ALWIM hat Folgendes geschrieben: | Jetzt muss ich nur noch schauen, wie ich aus "Ä" ein "ae" oder aus "ß" ein "ss" ect. machen kann. | Ganz einfach: Code: | Function umwandeln (ByVal text As String) As String
Dim As Integer x, y
Dim As String umw(..., 1) = {{"Ä","Ae"}, {"ä","ae"}, _
{"Ö","Oe"}, {"ö","oe"}, _
{"Ü","Ue"}, {"ü","ue"}, _
{"ß","ss"}}
For y = 0 To UBound(umw)
Do While InStr(text, umw(y, 0))
x = InStr(text, umw(y, 0))
text = Left(text, x - 1) + umw(y, 1) + Mid(text, x + 1)
Loop
Next
Return text
End Function |
Gruß
grindstone | Das wollte ich jetzt nicht haben! Das bringe ich selber auch noch hin. Egal, nun steht es da... Kann man noch um den ein oder anderen Buchstaben erweitern! Es gibt auch solche Buchstaben:
Gruß
ALWIM _________________ SHELL SHUTDOWN -s -t 05 |
|
Nach oben |
|
![](templates/subSilver/images/spacer.gif) |
Jojo alter Rang
![](images/avatars/10930814364b9fe4465f34c.jpg)
Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 19.12.2017, 15:39 Titel: |
|
|
Zitat: | Das bringe ich selber auch noch hin. |
Wenn du das hinbekommen hättest, hättest du auch die Konvertierung von ANSI/OEM nach UTF-8 selbst hinbekommen. Hinterher zu sagen dass man das selbt hinbekommen hätte kann jeder tun. ![Zunge rausstrecken](images/smiles/icon_razz.gif) _________________ » Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
![](https://sagamusix.de/other/nectarine/playing.png) |
|
Nach oben |
|
![](templates/subSilver/images/spacer.gif) |
grindstone
Anmeldungsdatum: 03.10.2010 Beiträge: 1215 Wohnort: Ruhrpott
|
Verfasst am: 19.12.2017, 20:35 Titel: |
|
|
Vor allem verstehe ich nicht, warum du (ALWIM) dich so gegen die Verwendung der utf_conv.bi - Routinen sträubst. Da ist doch schon alles komplett drin, und sie sind Bestandteil der RTLIB, also jener statischen Bibliothek, die jede vom FB - Compiler erzeugte .exe - Datei sowieso automatisch mitbekommt.
Gruß
grindstone
EDIT:
Im englischen Forum ist zum Thema UTF 8 gerade ein Projekt in der Entwicklung, das meiner Meinung nach durchaus das Potential hat, einmal Bestandteil von FB zu werden:
https://www.freebasic.net/forum/viewtopic.php?f=8&t=26170
Den Schnipsel oben habe ich übrigens nicht extra geschrieben, sondern aus einem Programm herauskopiert (und nur *etwas* aufgeräumt ), das ich zur Titelsuche in meiner Musiksammlung benutze. _________________ For ein halbes Jahr wuste ich nich mahl wie man Proggramira schreibt. Jetzt bin ich einen! |
|
Nach oben |
|
![](templates/subSilver/images/spacer.gif) |
ALWIM
![](images/avatars/71843795144f96ce56b576.jpg)
Anmeldungsdatum: 08.08.2006 Beiträge: 1041 Wohnort: Niederbayern
|
Verfasst am: 20.12.2017, 02:23 Titel: |
|
|
Jojo hat Folgendes geschrieben: | Zitat: | Das bringe ich selber auch noch hin. |
Wenn du das hinbekommen hättest, hättest du auch die Konvertierung von ANSI/OEM nach UTF-8 selbst hinbekommen. Hinterher zu sagen dass man das selbt hinbekommen hätte kann jeder tun. ![Zunge rausstrecken](images/smiles/icon_razz.gif) | Wieso hätte? Vielleicht habe ich es hinbekommen? Ich brauche genau genommen gar nichts umwandeln. Es ist bereits alles im richtigen Format! Zumindest sieht es danach aus. Ich habe nicht immer die Zeit, dass ich an meinem Projekt was mache. Leider!
Code: | Vor allem verstehe ich nicht, warum du (ALWIM) dich so gegen die Verwendung der utf_conv.bi - Routinen sträubst. | Ich sträube mich nicht. Es lässt sich halt nur schwer in meinem Programm mit einbauen. Außerdem, such ich immer nach Alternativen. Manchmal ist das besser und manchmal das. Und das bessere nehme ich dann.
Gruß
ALWIM _________________ SHELL SHUTDOWN -s -t 05 |
|
Nach oben |
|
![](templates/subSilver/images/spacer.gif) |
grindstone
Anmeldungsdatum: 03.10.2010 Beiträge: 1215 Wohnort: Ruhrpott
|
Verfasst am: 20.12.2017, 22:10 Titel: |
|
|
ALWIM hat Folgendes geschrieben: | Es lässt sich halt nur schwer in meinem Programm mit einbauen. | Wieso? Ganz vorne im Programm Code: | #Include Once "utf_conv.bi" | dann Code: | Function UTF(s As String) As String
Dim As String sUTF
Dim As Integer numberOfBytes
sUTF = String(Len(s) * 2, " ")
CharToUTF(UTF_ENCOD_UTF8, StrPtr(s), Len(s), StrPtr(sUTF), @numberOfBytes)
Return Left(sUTF, numberOfBytes)
End Function | in den Quellcode kopieren und statt beispielsweise dann jeweils Code: | Print #ff, UTF(text) |
Was ist daran schwer einzubauen?
Was das Suchen von Alternativen betrifft, muß ich dir allerdings zustimmen. Es ist immer gut, im Zweifel noch einen Plan B zu haben.
Gruß
grindstone _________________ For ein halbes Jahr wuste ich nich mahl wie man Proggramira schreibt. Jetzt bin ich einen! |
|
Nach oben |
|
![](templates/subSilver/images/spacer.gif) |
St_W
![](images/avatars/106287718549fca05d5271f.jpg)
Anmeldungsdatum: 22.07.2007 Beiträge: 949 Wohnort: Austria
|
Verfasst am: 20.12.2017, 22:42 Titel: |
|
|
ALWIM hat Folgendes geschrieben: | Jojo hat Folgendes geschrieben: | Zitat: | Das bringe ich selber auch noch hin. |
Wenn du das hinbekommen hättest, hättest du auch die Konvertierung von ANSI/OEM nach UTF-8 selbst hinbekommen. Hinterher zu sagen dass man das selbt hinbekommen hätte kann jeder tun. ![Zunge rausstrecken](images/smiles/icon_razz.gif) | Wieso hätte? Vielleicht habe ich es hinbekommen? Ich brauche genau genommen gar nichts umwandeln. Es ist bereits alles im richtigen Format! Zumindest sieht es danach aus. | Naja, so wie es aussieht planst du gar nichts du machen bzw. allerhöchst bestimmte Sonderzeichen durch Zeichenfolgen zu ersetzen, wobei das alles vorher schon mit zahlreichen Codebeispielen demonstriert wurde, die du nur noch kopieren und eventuell leicht an dein Programm anpassen müsstest.
ALWIM hat Folgendes geschrieben: | Code: | Vor allem verstehe ich nicht, warum du (ALWIM) dich so gegen die Verwendung der utf_conv.bi - Routinen sträubst. | Ich sträube mich nicht. Es lässt sich halt nur schwer in meinem Programm mit einbauen. Außerdem, such ich immer nach Alternativen. Manchmal ist das besser und manchmal das. Und das bessere nehme ich dann. | Die Implementierung wurde dir ja ohnehin schon fast zur Gänze anhand von Beispielen gezeigt, was ist denn da noch schwierig bzw. wo brauchst du noch Hilfe? Und die Problemumgehung, bestimmte Sonderzeichen zu ersetzen, ist vielleicht eine einfachere, aber bestimmt keine bessere Lösung. _________________ Aktuelle FreeBasic Builds, Projekte, Code-Snippets unter http://users.freebasic-portal.de/stw/
http://www.mv-lacken.at Musikverein Lacken (MV Lacken) |
|
Nach oben |
|
![](templates/subSilver/images/spacer.gif) |
|
|
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.
|
|