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