Umlaute werden per Makro nicht richtig übernommen

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

Moderator: Moderatoren

Peter65
Beiträge: 2
Registriert: Fr, 10.09.2010 16:21

Umlaute werden per Makro nicht richtig übernommen

Beitrag von Peter65 »

Hallo Leute,
ich bin neu in der Programmierung und habe folgendes Problem:
Beim Auslesen von Daten per Makro aus einer Textdatei heraus bekomme ich keine Umlaute angezeigt sondern nur Murks.
Öffne ich die Datei direkt im Writer ist alles ok.
Mein Makro sieht wie folgt aus:

Code: Alles auswählen

Dim Dateiort         
        Dateiort = "c:\textdatei.txt" 
        Dim HolName As String 
        Dim HolTelefon As String 
        Dim HolFax As String 
        Dim HolPersNr 
        Dim HolMail As String 
        Dim HolAbt As String 
        Dim HolHZ As String 
        Dim fileNum As Integer 
        Dim tmpPersNr As String 
        Dim BerPersNr As Integer 
        Dim countRec As Integer 
        
        
' Get an unused file number so to open a file. 
        filenum% = Freefile 
        
        tmpPersNr = Inputbox$("Bitte Beraternummer eingeben", "Berater holen") 
     If tmpPersNr <> "" Then 
                BerPersNr = Cint(tmpPersNr)                 
                Open Dateiort For Input Access Read As #fileNum 
                seek(filenum%,1)
                Do While Not Eof(fileNum) 
                        Input #fileNum, HolPersNr, HolName, HolTelefon, HolFax, HolMail, HolAbt,  HolHZ 
                If HolPersNr = BerPersNr Then
				
				msgbox HolPersNr &","& HolName &","& HolTelefon &","& HolFax &","& HolMail &","& HolAbt &","&  HolHZ
				
							
				End If        
                                   
                Loop                 
        End If 
     
End Sub 
Textdatei:
1000,"Max Muster","(0 79 99 9) 1234-1234","(0 79 99 9) 1234-1239","max.muster@abc.de","Abteilung","MMU"
1100,"Maya Müller","(0 79 99 9) 1234-1235","(0 79 99 9) 1234-1239","maya.müller@abc.de","Abteilung2","MMÜ"


Wo liegt mein Fehler?
DPunch
*******
Beiträge: 1112
Registriert: Mo, 02.11.2009 16:16
Wohnort: Marburg

Re: Umlaute werden per Makro nicht richtig übernommen

Beitrag von DPunch »

Aloha
Peter65 hat geschrieben:Wo liegt mein Fehler?
Der Fehler liegt im Input (Access Read), da dieser so keine Umlaute auslesen kann.

Es wird allerdings sowieso empfohlen, einen anderen Weg zu gehen:
OOo Wiki: File I/O

Das würde in Deinem Fall ungefähr so aussehen:

Code: Alles auswählen

Dim tmpPersNr as String
Dim aLines() as String
Dim sCurrentLine as String
Dim sPath as String
Dim oFileAccess as Object
Dim oFileRead as Object
Dim oInputStream as Object
Dim BerPersNr as Integer

sPath = ConvertToURL("c:\textdatei.txt")

tmpPersNr = Inputbox("Bitte Beraternummer eingeben", "Berater holen")
If Len(tmpPersNr) = 0 Then Exit Sub
BerPersNr = CInt(tmpPersNr)
If BerPersNr = 0 Then Exit Sub

oFileAccess = CreateUnoService("com.sun.star.ucb.SimpleFileAccess")
oInputStream = oFileAccess.openFileRead(sPath)

oFileRead = createUnoService("com.sun.star.io.TextInputStream")
oFileRead.InputStream = oInputStream
oFileRead.Encoding = "ISO-8859-15"

Do While NOT oFileRead.IsEOF
	sCurrentLine = oFileRead.readLine
	aLines = Split(sCurrentLine,",")
	If CInt(aLines(0)) = BerPersNr Then
		MsgBox sCurrentLine
		Exit Do
	End If
Loop

oInputStream.closeInput
oFileRead.closeInput
DPunch
*******
Beiträge: 1112
Registriert: Mo, 02.11.2009 16:16
Wohnort: Marburg

Re: Umlaute werden per Makro nicht richtig übernommen

Beitrag von DPunch »

Aloha
Gast hat geschrieben:So wie ich das jetzt sehe, liest der Array aLines() die einzelnen Felder aus.
Im Endeffekt, ja.
Die Zeilen werden als String in sCurrentLine gespeichert, aus diesem langen String wird dann ein String-Array erzeugt, unter der Prämisse, das die entsprechenden Felder in der Textdatei per Komma getrennt sind.
Da dies wie Du sagst der Fall ist
Textdatei:
1000,"Max Muster","(0 79 99 9) 1234-1234","(0 79 99 9) 1234-1239","max.muster@abc.de","Abteilung","MMU"
1100,"Maya Müller","(0 79 99 9) 1234-1235","(0 79 99 9) 1234-1239","maya.müller@abc.de","Abteilung2","MMÜ"
kannst die die einzelnen Felder (pro Zeile) aus dem Array auslesen.

Code: Alles auswählen

Do While NOT oFileRead.IsEOF
   sCurrentLine = oFileRead.readLine
   aLines = Split(sCurrentLine,",")
   For i = 0 To UBound(aLines)
     MsgBox aLines(i)
   Next i
Loop
Peter65
Beiträge: 2
Registriert: Fr, 10.09.2010 16:21

Re: Umlaute werden per Makro nicht richtig übernommen

Beitrag von Peter65 »

Super - Vielen Dank :-))))
Antworten