Calc-Funktionen durch benutzerdefinierte Funktionen überschreiben

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

Moderator: Moderatoren

TrueColor
******
Beiträge: 547
Registriert: Do, 11.03.2010 11:23

Calc-Funktionen durch benutzerdefinierte Funktionen überschreiben

Beitrag von TrueColor »

Hallo,

ist es möglich, Calc-Funktionen durch benutzerdefinierte Funktionen gleichen Namens überschreiben? Das Ganze soll natürlich nur in einem bestimmten Dokument funktionieren, um Kollisionen zu vermeiden.

z.B. statt =sin(rad(30)) [sin(30°) als Calc-Funktion] möchte ich =sin(30) [sin(30°) als UDF] schreiben, genauso
wie statt =deg(arcsin(0,5)) [als Calc-Funktion] soll =arcsin(0,5) [als UDF] ein Ergebnis in Grad ausgeben soll.

Vielen Dank!

(ich war ja schon etwas entsetzt, dass Basic keine deg-, rad- und außer dem arctan keine Arcus-Funktionen implementiert hat)
System:
LibO 6 + LibO 7
Benutzeravatar
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

Re: Calc-Funktionen durch benutzerdefinierte Funktionen überschreiben

Beitrag von komma4 »

Wenn Du es mal ausprobiert hättest, dann wüsstest Du es.
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
TrueColor
******
Beiträge: 547
Registriert: Do, 11.03.2010 11:23

Re: Calc-Funktionen durch benutzerdefinierte Funktionen überschreiben

Beitrag von TrueColor »

Ausprobiert habe ich, und bei meinem einfachen Test war es nicht möglich (was ja im Normalfall auch eine sehr sinnvolle Einstellung ist). Jedoch könnte es sein, dass es über Umwege, die ich nicht kenne, doch möglich wäre. Deshalb habe ich gepostet.

Edit:

Code: Alles auswählen

'--- Test ---
function sin(x as single)
	sin = gsin(x)
	MsgBox("Override: SIN(" & x & "°) = " & sin)
end function
Dateianhänge
Winkelfunktionen.ods
(15.39 KiB) 91-mal heruntergeladen
System:
LibO 6 + LibO 7
Stephan
********
Beiträge: 12368
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: Calc-Funktionen durch benutzerdefinierte Funktionen überschreiben

Beitrag von Stephan »

Es gibt meines Wissens keine Spezifikation (Dokumentation) dafür, ich persönlich habe solche Namensgleichheiten aber bisher immer vemieden und dabei auch beachtet die internen englischsprachigen Namen der Funktionen nicht zu benutzen.

(Meine 'Warnung' hierbei ist das Verhalten wie OO z.B. mit Nummernkreisen umgeht, hierbei gibt es nämlich auch Konfusion wenn man einen eigenen Nummernkreis definiert denn Name dem internen Namen eines vorhandenen Nummernkreise entspricht (also selbstdefinierter Nummernkreis namens "table"/"Table" macht Probleme in einem deutschsprachigen OpenOffice obwohl dort der über die Benutzeroberfläche sichtbare Nummernkreis "Tabelle" heißt.)

Es wäre aber zweifelsohne interessant die Frage gleichen Tabellenfunktionsnamen einmal zu untersuchen, denn ich erinnere mich dunkel schon einmal Lösungen gesehen (vielleicht sogar selbst programmiert?) zu haben die bei *.xls die Möglichkeit nutzen in Excel aber nicht in OO verhandene Funktionen in OO namensgleich nachzubilden (z.B. DATEDIF() wäre eine solche Funktion) - aber nochmals: ich bin momentan nicht ganz sicher, vielleicht bilde ich mir das auch nur ein.
was ja im Normalfall auch eine sehr sinnvolle Einstellung ist
Selbst wenn ich mir Dein Beispiel für eine Ausnahme ansehe erkenne ich nicht wirklich einen Vorteil bzw.: bitte wäge den Vorteil der Namensgleichheit gegen die quasi gesicherten [1] Risiken ab, denn wenn Du die Datei weitergibst kann sie versagen weil der andere Nutzer Makros blockiert hat, was dann aber garnicht auffallen würde weil zu erwarten ist das dann die gleichnamige Standardtabellenfunktion greift.
Es ist, meiner Ansicht nach, in Grenzfällen immer zu bevorzugen das potentiell riskannte Dinge dann zum Trtagen kommen wenn die Datei von einem Insider genutzt wird, d.h. wenn es Rahmenbedingungen gibt (geben kann) die Probleme erzeugen sollte i.A. sichergestellt sein das diese Bedingungen nicht bei 'normalen' Endanwendern auftreten die von der Existenz potenzieller Probleme ja nichts wissen (können).

[1]
mit gesichert meine ich hier das benutzerdefinierte Funktionen mit Sicherheit nicht funktionieren wenn Makroausführung nicht gestattet ist (im Gegensatz zu nur potentiellen Risiken, z.B. die FRage der Namensgleichheit die wir hier diskutieren)



Gruß
Stephan
TrueColor
******
Beiträge: 547
Registriert: Do, 11.03.2010 11:23

Re: Calc-Funktionen durch benutzerdefinierte Funktionen überschreiben

Beitrag von TrueColor »

Danke für die ausführliche Antwort, Stephan. Die Risiken sind mir bewusst. Und ich wäre, ehrlich gesagt, auch nicht von selbst auf die Idee gekommen, Standardfunktionen überschreiben zu wollen. Diese "Forderung" ergab sich aus der Diskussion. --> "Kein normaler Mensch rechnet in Radiant! Und sich neue Funktionsnamen merken zu müssen, ist auch nicht optimal!" (Wobei ich der ersten Aussage zumindest bedingt zustimme *g* ). Ich hatte das Ganze als willkommene Gelegenheit gesehen, vlt. noch etwas lernen zu können.

Grüße
TC
System:
LibO 6 + LibO 7
Antworten