habe hier letztlich sehr hilfreiche Hinweise bekommen, vor allem von komma4 (nochmals vielen Dank). Mein Problem:
In einer For-Next-Schleife untersuche ich einzelne Teile eines Gesamttextes auf bestimmte Merkmale hin. Der gesamte Text befindet sich in oDoc1, Frame1, die Untersuchung der einzelnen Teile soll in oDoc2, Frame2, stattfinden. Das Merkwürdige ist: Wenn ich bei der Kreation von Frame2 die Eigenschaft "visible" angebe, funktioniert alles wunderbar. Zum Beispiel, wenn ich ein Debug mache und sehen möchte, was genau passiert. Wenn ich diese Eigenschaft aber auf "hidden" stelle, weil ich keine Lust habe, auf einen flackernden Bildschirm zu blicken, scheint der Wechsel zwischen den beiden Dokumenten nicht zu funktionieren. Der Fokus bleibt auf oDoc1 bzw. Frame1. Hat jemand eine Idee?
Code: Alles auswählen
REM Ende der Vorarbeiten, jetzt Einzeltexte identifizieren und in Arbeitsfenster schaffen
REM Zunächst leeres Fenster als Arbeitsbereich einrichten (Visible oder Hidden)
OpenProperties(0).Name = "Visible"
OpenProperties(0).Value = True
oDoc2 = StarDesktop.loadComponentFromURL("private:factory/swriter", "_blank", 0, OpenProperties())
z = Ubound(aNamen()) ' Funktioniert nur, wenn aNamen() frisch importiert! Für Test z manuell setzen
For i = 1 to z
oFrame1 = oDoc1.getCurrentController().getFrame()
oFrame1.getContainerWindow().toFront()
oTxt = oDoc1.text
oSuche = oDoc1.createSearchDescriptor()
With oSuche
.SearchRegularExpression = True
.setSearchString("Name\:[:space:]{1}[:alpha:]{1,}[:digit:]{1,2}[:space:]{1}Datum\:[:space:]{1}[:digit:]{2}\.[:digit:]{2}\.[:digit:]{2}[:space:]{1}[:digit:]{1,3}.[:space:]{1}Minuten[:space:]{1}")
End With
oSuchErg = oDoc1.findFirst(oSuche)
oSuchErg.gotoEndOfParagraph(true)
sText = oSuchErg.string
oSuchErg.goLeft(1, false)
oSuchErg.gotoEndOfParagraph(false)
oSuchErg.gotoStartOfParagraph(true)
oSuchErg.setString("")
oFrame2 = oDoc2.getCurrentController().getFrame()
oFrame2.getContainerWindow().toFront()
oDoc2 = ThisComponent
oTxt = oDoc2.text
oTxt.insertString(oTxt.getStart(), sText, False)
REM Jetzt sind wir in Frame2 (unbenannt.odt) und untersuchen den Text Nr. "i"
REM erst die Zahl der ergänzten Wörter, die von der Zahl der Wörter (aNamen(i,21) abgezogen wird
iInt = 0 ' iInt ist die Zahl der von mir ergänzten Wörter, wird zunächst auf 0 gesetzt
oSuche = oDoc2.createSearchDescriptor()
With oSuche
.SearchRegularExpression = True
.setSearchString("#[:digit:]{1,2}\}")
End With
oSuchErg = oDoc2.findFirst(oSuche)
Do while Not isNull(oSuchErg)
sStr = Mid(oSuchErg.string, 2)
sStr = Mid(sStr, 1, Len(sStr)-1)
iInt = iInt + CInt(sStr)
oSuchErg = oDoc2.findNext(oSuchErg.End, oSuche)
loop
aNamen(i,21) = aNamen(i,21) - iInt
REM jetzt Fehler Nr. 1 - Großschreibung (aNamen(i,1)
iInt = 0 ' iInt Zahl der Großschreibungsfehler
oSuche = oDoc2.createSearchDescriptor()
With oSuche
.SearchRegularExpression = True
.setSearchString("\[01\]")
End With
oSuchErg = oDoc2.findFirst(oSuche)
Do while Not isNull(oSuchErg)
iInt = iInt + 1
oSuchErg = oDoc2.findNext(oSuchErg.End, oSuche)
loop
aNamen(i,1) = 0
aNamen(i,1) = aNamen(i,1) + iInt
REM jetzt Fehler Nr. 2 - Kleinschreibung (aNamen(i,2)
iInt = 0 ' iInt Zahl der Kleinschreibungsfehler
oSuche = oDoc2.createSearchDescriptor()
With oSuche
.SearchRegularExpression = True
.setSearchString("\[02\]")
End With
...
Next i
PS: Mein Editorfenster liefert mir alles mit roten Punkten unterstrichen. Hängt vielleicht mit der Sprachauswahl zusammen (Standard Englisch?). Wie kann ich diese Punkte wegkriegen?