Stichwortliste?

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

Moderator: Moderatoren

quotsi
*****
Beiträge: 219
Registriert: Do, 14.11.2013 10:04

Stichwortliste?

Beitrag von quotsi » Sa, 25.08.2018 16:06

Hallo,
Ich plage mich mit meiner Unkenntnis, ein Makro zu basteln, welches alle Stichworte aus einem Dokument (oder vielleicht noch mehr: auch ihre Eigenschaften) auflistet.
Ausgegangen bin ich von dem Makro von P.Eberlein aus http://www.ooowiki.de/KonkordanzDatei.html, welches alle Stichworte tilgt.
Ich habe dispose() , den Löschbefehl, dann fortgelassen. Um überhaupt das Makro zu verstehen und die Übersicht beim Experimentieren zu behalten, habe ich print-Befehle für die Laufvariablen eingefügt.
Dabei stellte ich fest, dass die äußere Schleife nur für das Verzeichnis (Stichwort- und weitere ??) gedacht ist, denn sie bleibt bei meinem Beispiel mit nur einem Stichwortverzeichnis auf dem Startwert (=0) stehen. Den Zweifel, dass eventuell auch andere Verzeichnisse (Inhaltsverzeichnis ?) betroffen sein könnten, konnte ich experimentell ausschließen.
Die innere Schleife zählte bis 38, d.h. alle im Text vorkommenden Stichworte wurden einmal getroffen. Es handelt sich also keineswegs um Treffer der Einträge im Verzeichnis, denn da werden fast alle Stichworte zusammengefaßt.

Code: Alles auswählen

Sub AlleStichworteZeigen
  DIM Tr1
  DIM Tr2
  DIM Tr3
  DIM Stich

  Tr1 = " : "
  Tr2 = "("
  Tr3 = ")"
  indexes = ThisComponent.getDocumentIndexes()
  for i=0 to indexes.count-1
    index = indexes(i)
    if index.supportsService("com.sun.star.text.DocumentIndex") then
      marks = index.DocumentIndexMarks
      for j=lBound(marks()) to uBound(marks())
    	print i  ; Tr1 ; Tr2 ; j ; Tr3 ;
REM   		Stich=marks(j).getString		
	  next
    End If
  next
End Sub

Zurück zum Problem:
Wie kann ich mit welchem Befehl den zum jeweiligen Index gehörenden Feldinhalt (=das Stichwort) auslesen?

Danke fürs Mitdenken
Dateianhänge
Der Taucher - mit Stichworteinträgen und Inhaltsverzeichnis .odt
(25.45 KiB) 13-mal heruntergeladen
win7prof - Avira - LO 5.4.7.2 (x64) - AOO 4.1.5

Stephan
********
Beiträge: 10547
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: Stichwortliste?

Beitrag von Stephan » So, 26.08.2018 12:42

auch nach mehrmaligem Lesen verstehe ich nicht was Du eigentlich erreichen willst.

Ich poste deshalb nur einmal das es statt:

Code: Alles auswählen

Stich=marks(j).getString
heißen muss:

Code: Alles auswählen

Stich=marks(j).getAnchor.getString()
weil ich annehme das Dir dort der richtige Code fehlt (vielleicht ist das auch schon die gesuchte Lösung?)


Gruß
Stephan

quotsi
*****
Beiträge: 219
Registriert: Do, 14.11.2013 10:04

Re: Stichwortliste?

Beitrag von quotsi » So, 26.08.2018 14:14

Jaaa. Danke!!!
Nachdem ich das benutzte, stellte ich fest, dass nicht die Reihenfolge der Stichworte im Text die numerische Reihenfolge bestimmen, sondern die Reihenfolge, wie man die Stichworte mal früher zugewisen hat ("»Wer wagt es" kommt erst als 38stes Stichwort, obwohl es am Anfang steht).

Du fragtest, was mein Ziel ist? Ich möchte gern ein Makro erzeugen, mit dem man aus einer Datei mit Stichworten (für ein normales Stichwortverzeichnis) eine Datei erzeugt, die man als Konkordanzdatei (für ein Stichwortverzeichnis) verwenden kann.
Dieser Vorgang wird noch nicht perfekt sein, wenn ich "weiterstricke", aber den Hauptteil, nämlich das Extrahieren der Stichworte wird mit deiner soeben geleisteten Hilfe, fertig werden.

Nochmals Dank!
win7prof - Avira - LO 5.4.7.2 (x64) - AOO 4.1.5

quotsi
*****
Beiträge: 219
Registriert: Do, 14.11.2013 10:04

Re: Stichwortliste?

Beitrag von quotsi » Mo, 27.08.2018 23:22

Bin einen Schritt weiter:
Habe ein Makro geschrieben, dass aus einer Datei mit Stichworten (nach klassischer Art eingefügt) diese in eine Konkordanzdatei überführt.
Manko des Makros:
1. Stichworte mit sogenanntem "Eintrag"="alternativem Eintrag"="Registereintrag", also einem eigenem Begriff im Stchwortverzeichnis (z.B. bei zusammengefaßten Stichworteintrag), dessen Markierung im Dokument nur vor dem Stichwort eine Leerstelle umfaßt, produzieren nur leere Stichworte und werden deshalb automatisch gelöscht.
2. Die weiteren Eigenschaften der Stichworte (außer dem Registereintrag, nämlich Groß-/Kleinschreibung und ganzes Wort) werden nicht ausgelesen, sondern werden mit Festwerten ausgegeben, so daß die Konkordanzdatei überarbeitet werden muß, wenn sie dieselben Eingeschaften repräsentieren soll wie zuvor im Dokument.
Siehe:
viewtopic.php?f=25&t=70044

Dort befindet auch eine Anwendungsbeschreibung mit dem Beispiel.
Ob ich noch den Extrakt der fehlenden Parameter hingekomme, weiß ich nicht.
win7prof - Avira - LO 5.4.7.2 (x64) - AOO 4.1.5

Antworten