Direkte Berechnung im Textfeld

Antwort erstellen


BBCode ist eingeschaltet
[img] ist ausgeschaltet
[url] ist eingeschaltet
Smileys sind ausgeschaltet

Die letzten Beiträge des Themas
   

Ansicht erweitern Die letzten Beiträge des Themas: Direkte Berechnung im Textfeld

Re: Direkte Berechnung im Textfeld

von Stephan » Mi, 19.12.2012 10:16

Ich kann mir nicht vorstellen das das funktioniert - Calc parst und evaluiert '5-3' bevor das Ergebnis an die SUMMEn-funktion weitergereicht wird ?!
Der Einwand ist berechtigt.

Meine Antwort ging davon aus das man nicht wissen kann wie komplex die REchenausdrücke werden, in jedem Fall aber nur gültige Operatoren (+,-,*,/,^) vorliegenund man somit nur das "=" abtrennen muß, also immer nur das erste ZEichen links vom Gesamtausdruck und den verbleibenden Ausdruck dann an die SUMME-Funktion übergeben kann.

Wenn ich das jetzt kurz prüfe sehe ich das das so leider tatsächlich nicht geht.

Ein möglicher workaround, unter Beachtung dessen das es nur um gültige (also auch in Basic selbst gültige) Operatoren ginge wäre mittels Makro zur Laufzeit ein neues Makro zu erzeugen (ungefähr gemäß: http://www.dannenhoefer.de/faqstarbasic ... schen.html) was den Ausdruck (z.B. =5-3) als REchenschritt enthält und dieses anschließend auszuführen. Ich kann nur momentan nicht sagen ob das im selben Dokument ginge ohne Neuladen.
Man könnte jedoch unter Windows ein VBS zur Laufzeit erzeugen und ausführen und daher das Ergebnis gewinnen.



Gruß
Stephan

Re: Direkte Berechnung im Textfeld

von juetho » Mi, 19.12.2012 10:00

jo1234 hat geschrieben:b = mid("Hallo";2;2)
(war zum testen)
Jetzt bekomme ich einen Syntaxfehler "Fehler in Klammerschachtelung".
Das sieht eher nach einer verwirrenden Fehlermeldung aus. Nach meiner Hilfe werden die Parameter bei MID mit Komma, nicht mit Semikolon getrennt. Jürgen

Re: Direkte Berechnung im Textfeld

von Karolus » Mi, 19.12.2012 09:57

Stephan hat geschrieben:
Gibt es da eine Möglichkeit?
Da ich nicht genau weiß wie man =5-3 mittels com.sun.star.sheet.FunctionAccess nutzt, würde ich die Formel einfach eingebettet in die Summenfunktion (sinngemäß also =SUMME(5-3)) mittels com.sun.star.sheet.FunctionAccess nutzen, siehe:
http://www.dannenhoefer.de/faqstarbasic ... enden.html
Ich kann mir nicht vorstellen das das funktioniert - Calc parst und evaluiert '5-3' bevor das Ergebnis an die SUMMEn-funktion weitergereicht wird ?!

@jo
in Basic werden die Argumente nicht mit ;semicolon getrennt, sondern mit ,komma.

In Python wäre

Code: Alles auswählen

eval( ausdruck ) 
möglich, (quick an dirty - weil das alles tut was ins Textfeld in gültiger Python-syntax eingetragen wird)





Karolus

Re: Direkte Berechnung im Textfeld

von Stephan » Mi, 19.12.2012 09:43

Gibt es da eine Möglichkeit?
Da ich nicht genau weiß wie man =5-3 mittels com.sun.star.sheet.FunctionAccess nutzt, würde ich die Formel einfach eingebettet in die Summenfunktion (sinngemäß also =SUMME(5-3)) mittels com.sun.star.sheet.FunctionAccess nutzen, siehe:
http://www.dannenhoefer.de/faqstarbasic ... enden.html


Gruß
Stephan

Re: Direkte Berechnung im Textfeld

von juetho » Mi, 19.12.2012 09:03

Schwierig. Dazu musst du dir einen eigenen Parser schreiben, der den eingegebenen Text analysiert: Wenn er mit dem Gleichheitszeichen beginnt, muss der String aufgeteilt werden in Teiltext1 - Rechenzeichen - Teiltext2 (möglicherweise noch weitere Rechenzeichen und Klammern, je nachdem wie weit du das treiben willst). Am einfachsten dürfte es noch mit regulären Ausdrücken gehen; suche im Forum nach SearchDescriptor. Jürgen

Nach oben