Umlaute in Textdatei

Programmierung unter AOO/LO (StarBasic, Python, Java, ...)

Moderator: Moderatoren

frieder
Beiträge: 4
Registriert: Do, 19.02.2009 13:15

Umlaute in Textdatei

Beitrag 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
RaKa
*
Beiträge: 12
Registriert: Di, 05.08.2008 18:50

Re: Umlaute in Textdatei

Beitrag 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
sarotti
****
Beiträge: 105
Registriert: So, 12.03.2006 17:40
Wohnort: Nähe Krefeld

Re: Umlaute in Textdatei

Beitrag 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
frieder
Beiträge: 4
Registriert: Do, 19.02.2009 13:15

Re: Umlaute in Textdatei

Beitrag 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.
turtle47
*******
Beiträge: 1849
Registriert: Mi, 04.01.2006 20:10
Wohnort: Rheinbach

Re: Umlaute in Textdatei

Beitrag von turtle47 »

Hi Frieder,

sowas kann man auch recht einfach mit der Function "SUBSTITUTE" lösen.

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
frieder
Beiträge: 4
Registriert: Do, 19.02.2009 13:15

Re: Umlaute in Textdatei

Beitrag 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.
turtle47
*******
Beiträge: 1849
Registriert: Mi, 04.01.2006 20:10
Wohnort: Rheinbach

Re: Umlaute in Textdatei

Beitrag 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
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
Charly
*****
Beiträge: 450
Registriert: Di, 20.01.2004 13:14
Wohnort: München

Re: Umlaute in Textdatei

Beitrag 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
Antworten