AltSearch (und einige andere Makros) funktionieren nicht

Alles zur Programmierung im LibreOffice.
Antworten
Mau
Beiträge: 349
Registriert: Do 14. Feb 2013, 19:37

AltSearch (und einige andere Makros) funktionieren nicht

Beitrag von Mau » Do 16. Jan 2020, 11:51

Liebe ExpertInnen,

ich habe die Extension AltSearch installiert, die das Suchen und Ersetzen erleichtert, wenn Formatierungsbefehle (Reguläre Ausdrücke) mit im Spiel sind. Es funktioniert bei mir zwar auf dem Rechner mit Internet-Anschluss, auf dem offline-Rechner aber nicht.
Ich habe das Thema im Writer-Forum eröffnet, habe aber den Eindruck, dass es hier besser aufgehoben ist.
Ich hatte zum Zeitpunkt der Installation von AltSearch die Writer-Version 6.1.x. installiert. Im Zuge meiner Versuche, das Problem zu lösen, bin ich inzwischen auf 6.2.8.2. umgestiegen und habe dabei vorsichtshalber die ganze alte Konfiguration (Optionen, angepasste Symbolleisten und Tastatur, Makros) gelöscht und neu konstruiert. Das hat aber nichts geändert.
Im Writer-Forum ist deutlich geworden, dass das Problem offenbar nur bei mir auftritt; bei einem Teilnehmer dort funktioniert das Tool auf seinem offline-Rechner problemlos. Ein kurzfristiger Anschluss meines offline-Rechners ans Internet hat das Problem auch nicht beseitigt; demnach kann es nicht durch die fehlende Internet-Verbindung verursacht sein.

Beim Aufruf öffnet sich dort der Makro-Editor und meldet:
BASIC-Laufzeitfehler.
Es ist eine Ausnahme aufgetreten.
Type: com.sun.star.container.NoSuchElementExceptionMessage .

Insgesamt sieht die Stelle im Editor so aus:
Makro-Script Fehlermeldung zu AltSearch.odg
(143.23 KiB) Noch nie heruntergeladen
Ich schließe daraus, dass AltSearch mit einer Bibliothek arbeitet, die nicht auf dem jeweiligen Rechner abgelegt wird, sondern die es aus dem Internet abruft.

Dem Text in der betreffenden Code-Zeile entnehme ich, dass das Tool vergeblich nach irgendeiner Bibliothek sucht.
Als Java-Version ist von Oracle 1.8.0_201 installiert. M.W. ist die Version für 64 Bit ausgelegt und für LO auch zugänglich.

Nachfolgend der AltSearch-Code, zunächst als Textdatei, dann als ODG-Abbildung:
AltSearch-Code.odt
(21.09 KiB) Noch nie heruntergeladen
AltSearch-Code.odg
(441.43 KiB) Noch nie heruntergeladen

Das Verhalten der Extension Anaphraseus bestärkt mich in der Vermutung, dass auf meinem offline-Rechner eine oder mehrere Bibliotheken fehlen, die diese Makros brauchen. Beim ersten Aufruf von Anaphraseus gab der folgende Fehlermeldung aus:
Anaphraseus1.odg
(146.85 KiB) 3-mal heruntergeladen
[Fortsetzung nächster Beitrag]

Mau
Beiträge: 349
Registriert: Do 14. Feb 2013, 19:37

Re: AltSearch (und einige andere Makros) funktionieren nicht

Beitrag von Mau » Do 16. Jan 2020, 12:03

{Fortsetzung vom vorherigen Beitrag]

Ich habe Anaphraseus daraufhin wieder entfernt, mit dem Ergebnis, dass jetzt jedes Mal, wenn ich Writer, Calc oder sonst ein LO-Modul beende, anschließend folgende Fehlermeldung erscheint:
Anaphraseus2.odg
(48.84 KiB) 2-mal heruntergeladen
Obwohl er aus den Makro-Verzeichnissen verschwunden ist.

Ich habe den Rechner neu gestartet. Die Fehlermeldung erscheint weiterhin, wenn ich ein LO-Modul beendet habe.

Gruß,
Mau

craig
Beiträge: 476
Registriert: Do 21. Apr 2016, 11:42

Re: AltSearch (und einige andere Makros) funktionieren nicht

Beitrag von craig » Do 16. Jan 2020, 13:16

Hallo Mau,
ich habe den Altsearch-Code untersucht. Dabei kam heraus, dass Deine
Fehlermeldung darauf basiert, dass die Tools-Bibliothek entsprechend
meiner Anleitung immernoch nicht geladen ist.


Altsearch fordert eine Funktion aus der folgenden Tools-Bibliothek an:
LibreOffice Makros & Dialoge → Tools

Im Modul „ModulControls“ der Tools-Bibliothek befindet sich die Funktion:

Code: Alles auswählen

Function LoadDialog(Libname as String, DialogName as String, Optional oLibContainer)


Wo befindet sich im Altsearch-Code der Aufruf für diese Funktion?
Siehe folgende Bibliotheken:
Meine Makros & Dialoge → Altsearch → Altsearch
Modul Altsearch (nicht wundern der Name „Altsearch“ wurde dreimal vergeben!)
Meine Makros & Dialoge → Altsearch → Altsearch → Altsearch(Modul)

In Modul Altsearch befindet sich folgende Sub-Routine:

Code: Alles auswählen

Sub _AltSearch(optional batchName)   ' spusteni hlavniho dialogu


Hierunter befindet sich die Anweisung zum Laden eines Dialogfensters:

Code: Alles auswählen

'  GlobalScope.BasicLibraries.LoadLibrary("Tools") ' natahnout std. knihovnu   ' presunuto do fromTools
  AltSearchDialog = LoadDialog_("AltSearch", "D_alts")


Die Anweisung „LoadDialog_("AltSearch", "D_alts")“ ist eben genau der Punkt,
welche bei Dir nicht funktioniert, weil bei Dir die Tools-Bibliothek immernoch nicht richtig geladen wurde.

Es besteht somit kein Problem mit Altsearch (Online/ Offline, etc.), sondern Du musst die Tools-Bibliothek laden!
Dies auf beiden Rechnern!

-----------------------------------------------------------------
Mau hat geschrieben:Ich habe Anaphraseus daraufhin entfernt, und er ist aus den Makroverzeichnissen verschwunden.
Die Fehlermeldung erscheint trotzdem weiter jedes Mal, wenn irgendein Modul beendet wird.
Auch nach einem Neustart.
Was besagt die gepostete Fehlermeldung?
  1. Meldung: The following Basic Script could not be found.
    Übersetzung:
    Das folgende Basic Script (Code) kann nicht gefunden werden.
    Nun ist doch klar: Es wurde deinstalliert.
  2. Library: `Standard`
    Kein Eintrag in der Standard-Bibliothek gefunden, weil deinstalliert.
  3. Modul: `Anaphraseus`
    Kein Modul namens Anaphraseus gefunden, weil deinstalliert.
  4. Method: `BeforeClose`
    Dem Event (Ereignis), vermutlich Ereignis: „Dokument wird geschlossen“ wurde
    ein Makro zu gewiesen. Das Makro ist nun nicht mehr auffindbar, weil deinstalliert,
    aber die Event-Zuweisung immernoch besteht.
  5. Location: `application`
    Entspricht „LibreOffice“
Die letzten beiden Punkte sind unter Menü Extras → Anpassen, Register „Ereignisse“ zufinden.
Unterhalb des Ereignisfensters steht „Speichern in:“. Das Dropdown-Menü muss hier auf „LibreOffice“ geändert werden.

Nun sollte darüber (im Ereignisfenster, unter den Spalten „Ereignisse“ und „zugewiesene Aktion“) eine Position,
z.B. „Dokument wird geschlossen“ die Zuweisung eines Makros ( Anaphraseus) beinhalten.
Dieses Position markieren, dann auf den Button löschen klicken und LibreOffice neustarten.

Mit dem Neustart, werden die Verknüpfungen zum Makro auch im Benutzervereichnis gelöscht.

Kurz und gut:
  1. Lösche zuerst die Ereigniszuweisungen von "Anaphraseus"
  2. Lade dann wie von mir beschrieben die Tools-Bibliothek:
    • Dann wird Altsearch funktionieren.
    • Ich kenne die Extension "Anaphraseus" nicht, es kann aber auch sein,
      dass diese die Tools-Bibliothek ebenfalls benötigt.
      So hast Du 2 Fliegen mit einer Klappe geschlagen 8-)
In beiden Fällen ist es sehr empfehlenswert LibreOffice neuzustarten,
damit der USER-Ordner von LibO neugeschrieben wird.
Gruß

Craig

Nie die Sicherungskopie vergessen!

════════════════════════════════════════════════
WIN 10 Pro 64-Bit • LO 6.3.4.2 (x64) • AOO 4.1.6

Mau
Beiträge: 349
Registriert: Do 14. Feb 2013, 19:37

Re: AltSearch (und einige andere Makros) funktionieren nicht

Beitrag von Mau » Sa 18. Jan 2020, 20:50

Hallo Craig,
craig hat geschrieben:
Do 16. Jan 2020, 13:16
Hallo Mau,
ich habe den Altsearch-Code untersucht. Dabei kam heraus, dass Deine
Fehlermeldung darauf basiert, dass die Tools-Bibliothek entsprechend
meiner Anleitung immer noch nicht geladen ist.
Das vermute ich auch.

Ich habe deine Subroutine LoadingLibraries aktiviert:
craig hat geschrieben:
Do 16. Jan 2020, 13:16
Sub LoadingLibraries
If NOT GlobalScope.BasicLibraries.isLibraryLoaded("Tools") Then
GlobalScope.BasicLibraries.LoadLibrary"Tools"
End If
End Sub
Ich habe diese Subroutine ausgeführt, aber die Fehlermeldung bei AltSearch blieb bestehen.
craig hat geschrieben:
Do 16. Jan 2020, 13:16
Altsearch fordert eine Funktion aus der folgenden Tools-Bibliothek an:
LibreOffice Makros & Dialoge → Tools

Im Modul „ModulControls“ der Tools-Bibliothek befindet sich die Funktion:

Code: Alles auswählen

Function LoadDialog(Libname as String, DialogName as String, Optional oLibContainer)
Du meinst sicher diese hier: Sie beginnt bei Zeile 103 des Codes.

craig hat geschrieben:
Do 16. Jan 2020, 13:16
Wo befindet sich im Altsearch-Code der Aufruf für diese Funktion?
Siehe folgende Bibliotheken:
Meine Makros & Dialoge → Altsearch → Altsearch
Modul Altsearch (nicht wundern - der Name „Altsearch“ wurde dreimal vergeben!)
Meine Makros & Dialoge → Altsearch → Altsearch → Altsearch(Modul)

In Modul Altsearch befindet sich folgende Sub-Routine:

Code: Alles auswählen

Sub _AltSearch(optional batchName)   ' spusteni hlavniho dialogu

Hierunter befindet sich die Anweisung zum Laden eines Dialogfensters:

Code: Alles auswählen

'  GlobalScope.BasicLibraries.LoadLibrary("Tools") ' natahnout std. knihovnu   ' presunuto do fromTools
  AltSearchDialog = LoadDialog_("AltSearch", "D_alts")
Die Anweisung „LoadDialog_("AltSearch", "D_alts")“ ist eben genau der Punkt,
welche bei Dir nicht funktioniert, weil bei Dir die Tools-Bibliothek immer noch nicht richtig geladen wurde.

Es besteht somit kein Problem mit Altsearch (Online/ Offline, etc.), sondern Du musst die Tools-Bibliothek laden!
Dies auf beiden Rechnern!
Es macht mich aber stutzig, dass die Tools vorhanden sind und der Code für ihren Aufruf auch. Könnte es sein, dass AltSearch in einem falschen Verzeichnis sucht? Von mir als Anwender könnte das allerdings nicht kommen, denn in Extras | Optionen | LibreOffice | Pfade gibt es keinen für Makros; der muss also vom Programm festgelegt sein.
Auf den Rest deines Beitrages gehe ich später ein.

Gruß,
Mau

Antworten