[gelöst] Mit einer String-Variablen eine Prozedur aufrufen

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

Moderator: Moderatoren

erikafuchs
******
Beiträge: 690
Registriert: Di, 13.02.2007 17:38
Wohnort: Büttelborn

Re: Mit einer String-Variablen eine Prozedur aufrufen

Beitrag von erikafuchs »

Meine Idee war ja eigentlich, dass ich dem

Code: Alles auswählen

call Aufgabe
anstelle eines Parameters ein Art Anhängsel hinzufüge also

Code: Alles auswählen

call Aufgabe&Variable
und dieses variiere.
Ich habe vor 40 Jahren mal dBaselllPlus programmiert und hatte wage in Erinnerung dass das dort ging.
Aber das scheint nun mal hier nicht zu funktionieren. Dies ist ja auch kein Beinbruch, mein Code funktioniert ja, es sind jetzt halt etwa 100 Zeilen mehr.
craig22
****
Beiträge: 135
Registriert: Mi, 19.08.2020 13:47

Re: Mit einer String-Variablen eine Prozedur aufrufen

Beitrag von craig22 »

Vielleicht gibt es noch eine Möglichkeit den String mit einer andere Programmiersprache zu verarbeiten.
Python oder Java, diese sind ewas "schlauer" als Basic.
Ganz simpel gedacht:
  • Basic übergibt Python den String
  • Python konvertiert String in eine Anweisung
  • Python ruft per Anweisung die passende Routine auf.
  • weiter geht es in Basic
Habe hierzu aber auch noch nichts finden können. :(
Gruß

Craig
_____________________________________________________
WIN 10 Pro 64-Bit • LO 7.1.5.2 (x64) • AOO 4.1.8
erikafuchs
******
Beiträge: 690
Registriert: Di, 13.02.2007 17:38
Wohnort: Büttelborn

Re: Mit einer String-Variablen eine Prozedur aufrufen

Beitrag von erikafuchs »

Ist den Python in OpenOffice implementiert oder benötigt man das extern? Mein Rechentrainer muss unabhängig von externem Zubehör laufen.
Ich kann mir aber nicht so recht vorstellen, was Python mehr zurückliefern könnte als eine Variable - der Code muss ja nun mal in Basic aufgerufen werden.
Ein Handbuch von Python habe ich, bin aber noch kaum über die ersten Seiten rausgekommen.
Aber ansonsten finde ich das ausergewöhnlich wie du dich hier reinkniest - wie gesagt, es geht auch ohne.
Hiker
******
Beiträge: 591
Registriert: Mo, 08.09.2014 21:34
Wohnort: Berlin

Re: Mit einer String-Variablen eine Prozedur aufrufen

Beitrag von Hiker »

erikafuchs hat geschrieben: Fr, 27.11.2020 00:10 Ist den Python in OpenOffice implementiert oder benötigt man das extern? Mein Rechentrainer muss unabhängig von externem Zubehör laufen.
Ich kann mir aber nicht so recht vorstellen, was Python mehr zurückliefern könnte als eine Variable - ...
Hallo,

Ein eindeutiges sowohl als auch. Unter Windows wird eine Python-Umgebung "unterhalb" von AOO/LO mitgeliefert. Unter Linux gibt es eine solche schon extern und so wird daher teilweise das externe Python bei LO eingebunden. LO ist auch schon komplett bei Python3, ob AOO noch bei Python2 hängt, weiss ich nicht.
Egal wie: Es ist immer vorhanden.

Was die eigentliche Frage angeht, kommen wir hier in Bereiche, wo ich sagen würde, dass man das heute nicht mehr so macht. Wenn Eingabetext quasi direkt den Quelltext modifiziert/beeinflusst kommen wir direkt zu Bobby Tables https://xkcd.com/327/

Ich habe zu DOS-Zeiten auch Batch-Files geschrieben, die den Folgebefehl modifizierten, aber aber bei den damaligen eingeschränkten Möglichkeiten musste man halt kreativ werden. Ohne echte Notwendigkeit und Sicherheitsprüfungen ist ein

Code: Alles auswählen

CALL "Name"+Var
heute nicht zeitgemäß, sondern Basis für SQL- Injection und ähnliches.

Mfg, Jörn
Libre Office 6.3.1 (Win 10 Pro) / Libre Office 6.0.7 (Win8.1 Pro, Win 7 Pro) / AOO (Win 7)
Stephan
********
Beiträge: 12369
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: Mit einer String-Variablen eine Prozedur aufrufen

Beitrag von Stephan »

Nun dies war der Ausgangspunkt für meine Anfrage:
Weswegen ich es ausdrücklich gekennzeichnet hatte (="was ich bevorzugen würde") das es keine Antwort auf Deine Frage ist, sondern nur eine Erläuterung meiner Aussage.
Die Case-Anweisung sollte nach Pit’s Wunsch ggf. wegfallen oder einfacher strukturiert werden.
WENN Letzteres so wäre, wäre das von mir Gesagte zufällig doch eine Antwort, denn mein Beispiel geht davon aus sich die ganzen Einzelmakros zu sparen, was ja, zumindest nach Pit's Logik, als Vereinfachung gilt, da es jeweils 2 Code-Zeilen einspart.

Nebenbeigesagt könnte man es auch optisch anders schreiben, das es ähnlich aussieht als wären es doch einzelne Makros, sofern das jemand besser fände:

Code: Alles auswählen

		Sub Start2(par)
			  Select Case par
    



   Case "Test"
      '... tue etwas



   Case '....
      '...





			  End Select
			End Sub

Wnnn Du hierbei Sub .... Select und End .... End soweit nach rechts rückst das sie 'außerhalb' der Sichtbarkeit in der Basic-IDE sind, sieht es (nach meinem Empfinden) so aus als wäre die Case-Abschnitte einzelne Makros.

ist dies im Prinzip auch ein String.


Nö, denn es ist nicht per Anführungszeichen als String gekennzeichnet.

Welche Mechanismen des Interpreters greifen hier, damit er dies als Anweisung und nicht als String verarbeitet?
Der Interpreter muss im gesamten 'Gültigkeitsbereich' des Makros prüfen ob es keine Makros oder Funktionen gleichen Namens gibt. Da es zur Laufzeit, generell(*) aber auch abhängig von den aktuell geladenen Bibliotheken, hierbei 'Uneindeutigkeiten' geben kann ist es zweckmäßig den Modulnamen beim Aufruf eines Makros immer davor zu schreiben, also Call meinModul.meinMakro und nicht nur Call meinMakro.

(*)
denn es darf in unterschiedlichen Modulen gleichnamige Makros geben



Gruß
Stephan
Stephan
********
Beiträge: 12369
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: Mit einer String-Variablen eine Prozedur aufrufen

Beitrag von Stephan »

Vielleicht gibt es noch eine Möglichkeit den String mit einer andere Programmiersprache zu verarbeiten.
Wie bereits geschrieben ginge eine Batch-Datei oder ein Script, welche man zur Laufzeit erzeugt.

Beides würde unter Windows funktionieren, dürfte aber unter Linux, wegen der Ausführungsrechte, auf Probleme stossen.


Gruß
Stephan
craig22
****
Beiträge: 135
Registriert: Mi, 19.08.2020 13:47

Re: Mit einer String-Variablen eine Prozedur aufrufen

Beitrag von craig22 »

Hallo,
das Probelm ist aus meiner Sicht gelöst.
Ich fand endlich den passenden Suchbegriff und siehe da, es funktioniert.

Dazu lade ich im anderen Thread meine geänderte Beispieldatei hoch.
https://de.openoffice.info/viewtopic.ph ... 29#p292629

Die entscheidenden Zauberwörter lauten:

Code: Alles auswählen

Service "MasterScriptProviderFactory"
Interface "XScriptInvocationContext"
Auf vielen Umwegen im englischen Forum gefunden.
Siehe Antwort von Hanya:
https://forum.openoffice.org/en/forum/v ... 9&p=365392
Gruß

Craig
_____________________________________________________
WIN 10 Pro 64-Bit • LO 7.1.5.2 (x64) • AOO 4.1.8
Antworten