Wert einer Objektvariablen per String zuweisen

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

Moderator: Moderatoren

Wolfgang Lampert
****
Beiträge: 102
Registriert: Do, 13.05.2004 16:24
Wohnort: Neuss

Wert einer Objektvariablen per String zuweisen

Beitrag von Wolfgang Lampert »

Hi, ich möchte die Eigenschaften/Methoden ansehen und den Service per String bestimmen. Funktioniert leider nicht wie geplant: oObj = sText erzeugt Fehlermeldung:

sub UnoService ' Anzeige Eigenschaften/Methoden ei UnoService
dim oObj as Object
dim sText as String
REM oObj = createUnoService("com.sun.star.frame.Desktop")
REM dies ist die Zuweisung aus dem Handbuch - ich möchte jedoch
REM die Zuweisung über eine STRING-VARIABLE wie folgt erzeugen:
sText = "createUnoService(""com.sun.star.frame.Desktop"")"
oObj = sText '!!! Fehlermeldung

msgbox oObj.dbg_properties
msgbox oObj.dbg_methods
end sub
Toxitom
********
Beiträge: 3768
Registriert: Di, 12.08.2003 18:07
Wohnort: Wiesbaden
Kontaktdaten:

Beitrag von Toxitom »

Hallo Wolfgang,

ich glaube, das hast du dir etwas vorgenommen, was nicht möglich ist.
sText = "createUnoService(""com.sun.star.frame.Desktop"")"
oObj = sText '!!! Fehlermeldung
createUnoService() ist ein eingebauter Funktionsaufruf und liefert ein Objekt zurück. Wenn Du das in Quotes an eine String-Variabel übergibst, wird das alles ein String und ist kein Funktionsaufruf mehr. Und das bekommst du nicht zurück!
Daher auch die Fehlermeldung.
Nun weiss ich ja nicht, was der Hintergrund deines Vorhabens ist, aber wäre es nicht sinnvoller, die Sache zu drehen:

Code: Alles auswählen

sText = "com.sun.star.frame.Desktop"
oObj = createUnoService(sText)
Das zumindest sollte funktionieren - und vielleicht kannst du das ja brauchen.

Gruss
Thomas
Unterstützer LibreOffice, zertifizierter Trainer und Berater
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
Wolfgang Lampert
****
Beiträge: 102
Registriert: Do, 13.05.2004 16:24
Wohnort: Neuss

Beitrag von Wolfgang Lampert »

Danke für den Tip, ich wollte den anzuzeigenden Service selber per InputBox bestimmen - und dies ist hiermit nun möglich:
sub UnoService
dim oObj as Object
dim sInput$ REM Eingabevariable für Service (inputbox)
dim sText$ REM Anzeige Zuweisung an oObj
sInput = inputbox("Bitte Name des Service eingeben:", "Module: frame", "Desktop")
sText = "com.sun.star.frame." + sInput
oObj = createUnoService(sText)

msgbox oObj.dbg_properties REM Anzeige der ServiceEigenschaften
msgbox oObj.dbg_methods REM Anzeige der ServiceMethoden
End sub
Antworten