Umlaute in Textdatei
Moderator: Moderatoren
Umlaute in Textdatei
Hallo,
ich möchte per Makro Text in eine Textdatei schreiben, die ein anderes Makro wieder ausliest. Nun werden beim Auslesen die Umlaute aus der Textdatei nicht richtig wiedergegeben. Lässt sich die Zeichenkodierung da irgendwo einstellen?
Vielen Dank
Frieder
ich möchte per Makro Text in eine Textdatei schreiben, die ein anderes Makro wieder ausliest. Nun werden beim Auslesen die Umlaute aus der Textdatei nicht richtig wiedergegeben. Lässt sich die Zeichenkodierung da irgendwo einstellen?
Vielen Dank
Frieder
Re: Umlaute in Textdatei
versuche es mal mit .setEncoding :
Viel Spaß,
Raka
Code: Alles auswählen
dim sIni as string ' Dateiname als URL
dim oUcb as object ' für Dateihandling
dim oDatei as object ' Dateistreamzeiger
dim oInputStream as Object ' dito
sIni = " <---- dateiname ---->"
oUcB = createUnoService("com.sun.star.ucb.SimpleFileAccess") ' File Object generieren
oInputStream = createUnoService("com.sun.star.io.TextInputStream") ' Stream öffnen
oDatei = oUcb.OpenFileReadWrite(sIni)
oInputStream.SetInputStream(oDatei.getInputStream)
oInputStream.setEncoding( "ISO-8859-1" ) ' Zeichensatz setzen (äöü)
if not oInputStream.isEOF then ' erste Zeile lesen
sZeile = oInputStream.ReadLine()
.........
Viel Spaß,
Raka
Re: Umlaute in Textdatei
Hallo Raka,
hee, super Info zu einem Textstream. habe ich gleich probiert...klappt prima.
Teil 1:
ABER:
Wenn ich auf diese Art eine Datei auslese, die als Absatz chr(10) bzw. chr(13) beinhaltet. Wie lese ich diese Zeilenumbrüche selektiv aus?
Mein Problem ist, dass ich Dateien habe, die sowohl chr(10) als auch chr(13) beinhalten. Leider werden beide gleichermassen behandelt. Ich muss diese aber unterscheiden können, um die Informationen in eine Datenbank einzulesen.
Hast Du hier eine Idee?
Teil 2:
Beim Schreiben des Streams: Kann ich hier gezielt eine Zeile (z.B. Zeile 3 einer bestehenden Datei) schreiben - oder muß ich eine Datei von oben nach unten füllen?
Danke schon mal für die Hilfe
Gruss
sarotti
hee, super Info zu einem Textstream. habe ich gleich probiert...klappt prima.
Teil 1:
ABER:
Wenn ich auf diese Art eine Datei auslese, die als Absatz chr(10) bzw. chr(13) beinhaltet. Wie lese ich diese Zeilenumbrüche selektiv aus?
Mein Problem ist, dass ich Dateien habe, die sowohl chr(10) als auch chr(13) beinhalten. Leider werden beide gleichermassen behandelt. Ich muss diese aber unterscheiden können, um die Informationen in eine Datenbank einzulesen.
Hast Du hier eine Idee?
Teil 2:
Beim Schreiben des Streams: Kann ich hier gezielt eine Zeile (z.B. Zeile 3 einer bestehenden Datei) schreiben - oder muß ich eine Datei von oben nach unten füllen?
Code: Alles auswählen
Sub TextStreamSchreiben
dim sIni as string ' Dateiname als URL
dim oUcb as object ' für Dateihandling
dim oDatei as object ' Dateistreamzeiger
dim oInputStream as Object ' dito
sIni = ConvertToURL("c:\test.ini")
oUcB = createUnoService("com.sun.star.ucb.SimpleFileAccess") ' File Object generieren
oOutputStream = createUnoService("com.sun.star.io.TextOutputStream") ' Stream öffnen
xRay oOutputStream
oDatei = oUcb.OpenFileReadWrite(sIni)
oOutputStream.SetOutPutStream(oDatei.getOutputStream)
oOutputStream.setEncoding( "ISO-8859-1" ) ' Zeichensatz setzen
oOutputStream.WriteString("1. test"+chr(13))
oOutputStream.WriteString("2. test"+chr(13))
REM ***???? wie beende ich den oOutputStream ordentlich????
end sub
Gruss
sarotti
Re: Umlaute in Textdatei
Hallo RaKa,
hat bei mir leider nicht funktioniert,dennoch vielen Dank. Vielleicht geht das nur unter Windows. Aber ich hab' das Problem mit einer Text-ersetzen-Funktion gelöst.
Function UmlRep(ZKette)
Dim a(7) as String
Dim b(7) as String
a(0) = "%20"
a(1) = "%C3%A4"
a(2) = "%C3%B6"
a(3) = "%C3%BC"
a(4) = "%C3%84"
a(5) = "%C3%96"
a(6) = "%C3%9C"
a(7) = "%C3%9F"
b(0) = " "
b(1) = "ä"
b(2) = "ö"
b(3) = "ü"
b(4) = "Ä"
b(5) = "Ö"
b(6) = "Ü"
b(7) = "ß"
for i = 0 to 7
x = 0
do while x = 0
Laenge = Len(ZKette)
Zl = Len(a(i))
c = instr(ZKette, a(i))
if c > 0 then
d = Left(ZKette, c-1)
e = Right(ZKette, Laenge-c-Zl+1)
StrT = d & b(i) & e
c = instr(ZKette, a(i))
end if
if c = 0 then
x = 1
end if
Loop
Next
UmlRep = ZKette
end Function
Gruß, Frieder.
hat bei mir leider nicht funktioniert,dennoch vielen Dank. Vielleicht geht das nur unter Windows. Aber ich hab' das Problem mit einer Text-ersetzen-Funktion gelöst.
Function UmlRep(ZKette)
Dim a(7) as String
Dim b(7) as String
a(0) = "%20"
a(1) = "%C3%A4"
a(2) = "%C3%B6"
a(3) = "%C3%BC"
a(4) = "%C3%84"
a(5) = "%C3%96"
a(6) = "%C3%9C"
a(7) = "%C3%9F"
b(0) = " "
b(1) = "ä"
b(2) = "ö"
b(3) = "ü"
b(4) = "Ä"
b(5) = "Ö"
b(6) = "Ü"
b(7) = "ß"
for i = 0 to 7
x = 0
do while x = 0
Laenge = Len(ZKette)
Zl = Len(a(i))
c = instr(ZKette, a(i))
if c > 0 then
d = Left(ZKette, c-1)
e = Right(ZKette, Laenge-c-Zl+1)
StrT = d & b(i) & e
c = instr(ZKette, a(i))
end if
if c = 0 then
x = 1
end if
Loop
Next
UmlRep = ZKette
end Function
Gruß, Frieder.
Re: Umlaute in Textdatei
Software hat keinen Verstand - benutze deinen eigenen...!
Win 7 SP1/ LibreOffice 3.4.2 OOO340m1 (Build:203) / Firefox 15.0.1 / Notebook ASUS K70IO 64 Bit-Betriebssytem
Win 7 SP1/ LibreOffice 3.4.2 OOO340m1 (Build:203) / Firefox 15.0.1 / Notebook ASUS K70IO 64 Bit-Betriebssytem
Re: Umlaute in Textdatei
Hallo Jürgen,
dachte ich auch, allerdings scheinen SUBSTITUTE und REPLACE nicht bei allen Installationen dabei zu sein. Ich hab auch versucht, diese Funktionen im Internetz zu bekommen, allerdings erfolglos.
Viele Grüße, Frieder.
dachte ich auch, allerdings scheinen SUBSTITUTE und REPLACE nicht bei allen Installationen dabei zu sein. Ich hab auch versucht, diese Funktionen im Internetz zu bekommen, allerdings erfolglos.
Viele Grüße, Frieder.
Re: Umlaute in Textdatei
Hallo Frieder,
Die deutsche Bezeichnung für SUBSTITUTE ist WECHSELN
WECHSELN solltest Du in Deinem Funktionsassistenten finden. Oder?
damit dann
funktioniert!
Gutes Gelingen.
Jürgen
Das mag ich kaum glauben. Welches BS und welche OOo-Version nutzt Du?frieder hat geschrieben:allerdings scheinen SUBSTITUTE und REPLACE nicht bei allen Installationen dabei zu sein
Die deutsche Bezeichnung für SUBSTITUTE ist WECHSELN
WECHSELN solltest Du in Deinem Funktionsassistenten finden. Oder?
Wichtig dabei ist folgende Zeile:OOo-Wiki hat geschrieben:Tauscht in einer Zeichenkette einen alten gegen einen neuen Text aus.
=WECHSELN(Text; Suchtext; Textersatz; Auftreten) | =SUBSTITUTE(text; search text; new text; ocurrence)
Code: Alles auswählen
FuncAcc = createunoservice("com.sun.star.sheet.FunctionAccess")
Code: Alles auswählen
aResult=FuncAcc.callFunction("SUBSTITUTE", array(text; search text; new text; ocurrence))
Gutes Gelingen.
Jürgen
Software hat keinen Verstand - benutze deinen eigenen...!
Win 7 SP1/ LibreOffice 3.4.2 OOO340m1 (Build:203) / Firefox 15.0.1 / Notebook ASUS K70IO 64 Bit-Betriebssytem
Win 7 SP1/ LibreOffice 3.4.2 OOO340m1 (Build:203) / Firefox 15.0.1 / Notebook ASUS K70IO 64 Bit-Betriebssytem
Re: Umlaute in Textdatei
Hallo Turtle!
Gruß
Charly
Bei der Funktion Array muss mit Komma und nicht mit Strichpunkt getrennt werden.Turtle47 hat geschrieben: aResult=FuncAcc.callFunction("SUBSTITUTE", array(text; search text; new text; ocurrence))
Gruß
Charly