Fehler "91" Objektvariable nicht belegt

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

Moderator: Moderatoren

Benutzeravatar
Eric March
Beiträge: 6
Registriert: Fr, 17.09.2010 16:04

Fehler "91" Objektvariable nicht belegt

Beitrag von Eric March »

Hallo!

:( Zu meiner Schande muss ich gestehen, dass ich diese schon mal gestellte Frage nicht wiederfinden kann - dass zz. die Suchfunktion streikt macht es nicht besser. Mögen Moderatoren dies bitte zu einem Thread vereinigen.

In Kürze - ich hatte mir vor längerer Zeit einen Code für Writer vorformulieren lassen der die simple Aktion Pos1 - Leer - BackSpace - Speichern auslöst (damit ich beim Öffnen dort wieder im Text lande). Dieser Code springt seit LibO V3.4 bei einem DIM mit o.g. Meldung raus:
dim args1(0) as new com.sun.star.beans.PropertyValue
Nun habe ich die Aktion (aus Neugier) aufgezeichnet und bekam den praktisch identischen Code - mit dem selben Aussetzer. Das ist schon mal in sich lästig genug. Im letzten Thread wurde mir gesagt, V3.4.(0) wäre nicht so stabil und Beta. Mit V3.4.1 passiert es wieder, und nun habe ich einen anderen Installordner gewählt um das auszuschließen.
Sollte es dann ggf. ein Fehler in meinem Profil sein?

Wie kann ich diese Klippe umschiffen? Zurück zu V3.3?

Grüße,
Eric
Eric March

»Kenne die Vergangenheit. In der Unwissenheit über die Vergangenheit liegt das Verderben der Zukunft.«
Benutzeravatar
balu
********
Beiträge: 3812
Registriert: Fr, 24.08.2007 00:28
Wohnort: Warstein

Re: Fehler "91" Objektvariable nicht belegt

Beitrag von balu »

Hallo Eric,

ja klar, die Board SuFu spinnt, da gibts nix. Aber das Board zu durchsuchen geht dennoch, und das müsste dir doch bestimmt schon aufgefallen sein. Oder übersiehst Du den Sticky in jeder Forumsrubrik?
Dies nur zur Info.


Zu deinem Problem.
Ohne deinen genauen Code zu kennen, den Du wohl lieber verheimlichen möchtest (warum?), ist Glaskugel-Gaukelei angesagt.
Aber dennoch mal einen paar Vermutungen.
Auch wenn ich mich in Basic noch nicht so auskenne, könnte aber unter anderem eine Ursache für die Fehlermeldung darin liegen, das beim Starten des Makros die Deklaration der Variablen noch nicht ausgeführt ist. Beispielsweise dann, wenn das Makro mit der Datei automatisch geladen und gestartet wird, aber die Deklaration an anderer Stelle durchgeführt wird die beim Autostart jedoch nicht mit eingeschlossen ist. Oder aber die LibO eigenen Bibliotheken sind entweder noch nicht geladen, bzw. sie müssen extra geladen und aktiviert werden. Wie das nun wiederum funzt, keine Ahnung.

Aber das sind jetzt alles nur Vermutungen, mehr nicht. Vielleicht solltest Du uns doch deinen Makro-Code, und/oder eine Beispieldatei präsentieren.



Gruß
balu
Sei öfter mal ein Faultier, sag öfter mal "Ach was!" Dann kriegst du keinen Herzinfarkt, und hast ne menge Spass.

wehr rächtschraipfähler findet khan si behalden :D
Benutzeravatar
Eric March
Beiträge: 6
Registriert: Fr, 17.09.2010 16:04

Re: Fehler "91" Objektvariable nicht belegt

Beitrag von Eric March »

Hallo balu,
ich habe auf den Stickie insofern verzichtet, als dass ich immer noch glaube meinen Augen trauen zu können. Ich war bis März zurück und habe meinen alten Thread trotz geputzter Brille nicht ausmachen können.

Der Code sieht so aus; alter wie aufgezeichneter sind identisch (bis auf die REM-Zeile):

Code: Alles auswählen

sub SpeichernUndPOS1
rem Konkret: POS1, Space, BackSpase, Save - um Position im Text festzuschreiben
rem ----------------------------------------------------------------------
rem define variables
dim document   as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
document   = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
dim args1(0) as new com.sun.star.beans.PropertyValue
args1(0).Name = "Text"
args1(0).Value = " "
dispatcher.executeDispatch(document, ".uno:GoToStartOfLine", "", 0, Array())
dispatcher.executeDispatch(document, ".uno:InsertText", "", 0, args1())
dispatcher.executeDispatch(document, ".uno:SwBackspace", "", 0, Array())
dispatcher.executeDispatch(document, ".uno:Save", "", 0, Array())
end sub
Meiner Auffassung nach sollte ein aufgezeichneter Code, wenn er auch wie sattsam bekannt selten von Eleganz zeugt, zumindest in sich korrekt sein und keine fehlenden Deklarationen aufweisen. Da der Code zuvor ja funktionierte erdreiste ich mich mal zu behaupten, dass er in Ordnung ist und dass der Fehler in besagtem LibreOffice 3.4x zu finden sein muss, denn mit 3.3 tat er noch.

Insofern kreise auch ich um die Idee mir aus 3.3 etwas auszuborgen was das Problem löst.
Oder man kann mir alternativen Code nennen der mir an der Cursorposition ein Zeichen schreibt/tippt, bzw. etwas das im Zustand wo der Cursor gerade ist etwas tut das das Dokument so ändert, dass sich effektiv nichts ändert, wohl aber eben für den Speichervorgang eine Änderung erfolgte.

Grüße,
Eric
Eric March

»Kenne die Vergangenheit. In der Unwissenheit über die Vergangenheit liegt das Verderben der Zukunft.«
Karolus
********
Beiträge: 7535
Registriert: Mo, 02.01.2006 19:48

Re: Fehler "91" Objektvariable nicht belegt

Beitrag von Karolus »

Hallo
Besorge dir Xray oder Mri ( →Google ) und schreibe den Code selbst...Hint →thisComponent.getCurrentController.getViewCursor

Gruß Karo
LO7.4.7.2 debian 12(bookworm) auf Raspberry5 8GB (ARM64)
LO25.2.3.2 flatpak debian 12(bookworm) auf Raspberry5 8GB (ARM64)
Benutzeravatar
Eric March
Beiträge: 6
Registriert: Fr, 17.09.2010 16:04

Re: Fehler "91" Objektvariable nicht belegt

Beitrag von Eric March »

Hallo Karolus,

meine Internetanbindung ist nicht so, dass ich gerne hinter Progrmmierumgebungen hergooglen will. Wobei von Bedeutung sein mag, dass ich weder an CT noch an NMR denke wenn aufgezeichneter Code, der formal korrekt ist, von der selben Anwendung zurückgewiesen wird… (So kreativ wie die beim Erfinden von Namen für Debugtools sind bin ich anderswo :D )
Wie soll ich denn eine DIM-Funktion durchleuchten die eine Variable mit eine Systemfunktion erzeugen soll? Funktioniert DIM nicht, oder die Bibliothek derer man sich bedient? Eine Variable die es nicht gibt, die nicht entsteht, kann ich schlecht einer falschen Füllung bezichtigen können.

Wie auch immer, ich habe nachgegeben und bin auf die alte Version zurück wo es noch lief. Nun warte ich nur noch auf neuere Dokumentversionen die nicht mehr aufbekomme.

Eric
Eric March

»Kenne die Vergangenheit. In der Unwissenheit über die Vergangenheit liegt das Verderben der Zukunft.«
Antworten