Seite 1 von 1

[gelöst:] Kursivtext kennzeichnen

Verfasst: Fr, 31.08.2012 17:51
von Mr.Ed
Hallo allerseits,

bis vor kurzem gelang es mir, mit folgendem Code kursive Textstellen in einem Writer-Dokument mit dem Zeichen "§" zu maskieren ...

Code: Alles auswählen

Function Kursivtext_maskieren
	ZKNMarkupTextFunc("CharPosture", com.sun.star.awt.FontSlant.ITALIC, "§&§")
End Function
	
Function ZKNMarkupTextFunc(SearchAttrName, SearchAttrValue, ReplaceStr)
REM Function gehoert zu Sub Kursivtext_maskieren
	Dim oDoc as Object, oReplaceObj as Object
	Dim SearchAttributes(0) As New com.sun.star.beans.PropertyValue
	oDoc = ThisComponent
	SearchAttributes(0).Name = SearchAttrName
	SearchAttributes(0).Value = SearchAttrValue
	oReplaceObj = oDoc.createReplaceDescriptor
	oReplaceObj.SearchRegularExpression = true
	oReplaceObj.searchStyles = false
	oReplaceObj.searchAll = true
	oReplaceObj.SetSearchAttributes(SearchAttributes)
	oReplaceObj.SearchString = ".*"
	oReplaceObj.ReplaceString = ReplaceStr
	oDoc.replaceAll(oReplaceObj)
End Function
Quelle: http://zettelkasten.danielluedecke.de/w ... ttelkasten

Dies funktioniert nun nicht mehr. Hat jemand vielleicht eine Idee, Erklärung, einen Tipp?

Freundliche Grüße Mr.Ed

Re: Kursivtext kennzeichnen

Verfasst: Sa, 01.09.2012 09:41
von Karolus
Hallo
Nach einem kurzen Test mit LO und AOO funktioniert der Code bei direkt formatierten Textstellen, nicht jedoch bei entsprechenden Zeichen-/Absatzvorlagen -- aber das war auch bisher der Fall.

Karolus

Re: Kursivtext kennzeichnen

Verfasst: Sa, 01.09.2012 14:32
von Mr.Ed
Hallo Karolus,

vielen Dank, dass du dir die Zeit für einen kurzen Test genommen hast. Bei den Kursiv-Stellen In meinem Ausgangsmaterial (ca. 20 Seiten) handelt es sich um direkt formatierten Text, bisher hat der Code ja auch prima funktioniert.

Ich werde es gleich mal mit kleinen Beispieltexten versuchen, vielleicht kann ich das Problem eingrenzen.

MfG Mr.Ed

Re: Kursivtext kennzeichnen

Verfasst: Sa, 01.09.2012 18:12
von Mr.Ed
Hallo zusammen,

es funktioniert immer noch nicht. Wenn ich eine Datei mit dem Text "Dies ist ein Test." anlege und darüber dann das im Ausgangsposting gegebene Makro laufen lasse, erhalte ich als Ergebnis "Dies ist §ein Test.§". Es wird also nicht – wie gewünscht – ausschließlich das Wort "ein" maskiert.

Ich überlege jetzt, wie ich einen SearchDescriptor konstruieren kann, der nach kursiv formatiertem Text sucht und diesen dann als TextCursor (oSuchErg) entsprechend bearbeitet. Hat jemand Hinweise dazu?

Ich nutze AOO 3.4.1.

Gruß Mr.Ed

Re: [gelöst:] Kursivtext kennzeichnen

Verfasst: So, 02.09.2012 15:35
von Mr.Ed
Hallo allerseits,

das Problem ist gelöst. Der reguläre Ausdruck in der Codezeile ...

Code: Alles auswählen

oReplaceObj.SearchString = ".*"
ist "gierig" ("greedy"). Wenn man die Zeile durch folgenden Code ersetzt, funktioniert die Sache:

Code: Alles auswählen

oReplaceObj.SearchString = "[:alpha:]{1,}"
Rätselhaft ist mir allerdings immer noch, warum der ursprüngliche Code bis vor kurzem ohne Probleme funktioniert hat. Ist da bei der Umstellung auf ApacheOO etwas Grundlegendes geändert worden? Vielleicht weiß ja jemand was.

MfG Mr.Ed