[gelöst:] Kursivtext kennzeichnen

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

Moderator: Moderatoren

Mr.Ed
**
Beiträge: 47
Registriert: Di, 16.02.2010 18:38

[gelöst:] Kursivtext kennzeichnen

Beitrag 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
Zuletzt geändert von Mr.Ed am So, 02.09.2012 15:27, insgesamt 1-mal geändert.
Karolus
********
Beiträge: 7533
Registriert: Mo, 02.01.2006 19:48

Re: Kursivtext kennzeichnen

Beitrag 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
LO7.4.7.2 debian 12(bookworm) auf Raspberry5 8GB (ARM64)
LO25.2.3.2 flatpak debian 12(bookworm) auf Raspberry5 8GB (ARM64)
Mr.Ed
**
Beiträge: 47
Registriert: Di, 16.02.2010 18:38

Re: Kursivtext kennzeichnen

Beitrag 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
Mr.Ed
**
Beiträge: 47
Registriert: Di, 16.02.2010 18:38

Re: Kursivtext kennzeichnen

Beitrag 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
Mr.Ed
**
Beiträge: 47
Registriert: Di, 16.02.2010 18:38

Re: [gelöst:] Kursivtext kennzeichnen

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