Seite 1 von 1
Umlaute in Textdatei
Verfasst: Do, 19.02.2009 13:19
von frieder
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
Re: Umlaute in Textdatei
Verfasst: Fr, 20.02.2009 16:28
von RaKa
versuche es mal mit .setEncoding :
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
Verfasst: Fr, 20.02.2009 17:36
von sarotti
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?
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
Danke schon mal für die Hilfe
Gruss
sarotti
Re: Umlaute in Textdatei
Verfasst: Mo, 23.02.2009 16:22
von frieder
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.
Re: Umlaute in Textdatei
Verfasst: Mo, 23.02.2009 18:04
von turtle47
Hi Frieder,
sowas kann man auch recht einfach mit der Function "
SUBSTITUTE" lösen.
Jürgen
Re: Umlaute in Textdatei
Verfasst: Do, 26.02.2009 12:05
von frieder
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.
Re: Umlaute in Textdatei
Verfasst: Do, 26.02.2009 12:34
von turtle47
Hallo Frieder,
frieder hat geschrieben:allerdings scheinen SUBSTITUTE und REPLACE nicht bei allen Installationen dabei zu sein
Das mag ich kaum glauben. Welches BS und welche OOo-Version nutzt Du?
Die deutsche Bezeichnung für SUBSTITUTE ist WECHSELN
WECHSELN solltest Du in Deinem Funktionsassistenten finden. Oder?
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)
Wichtig dabei ist folgende Zeile:
Code: Alles auswählen
FuncAcc = createunoservice("com.sun.star.sheet.FunctionAccess")
damit dann
Code: Alles auswählen
aResult=FuncAcc.callFunction("SUBSTITUTE", array(text; search text; new text; ocurrence))
funktioniert!
Gutes Gelingen.
Jürgen
Re: Umlaute in Textdatei
Verfasst: Do, 26.02.2009 12:48
von Charly
Hallo Turtle!
Turtle47 hat geschrieben:
aResult=FuncAcc.callFunction("SUBSTITUTE", array(text; search text; new text; ocurrence))
Bei der Funktion Array muss mit Komma und nicht mit Strichpunkt getrennt werden.
Gruß
Charly