Probleme mit "Application.OnTime"

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: Probleme mit "Application.OnTime"

Re: Probleme mit "Application.OnTime"

von Stephan » So, 27.01.2013 12:58

Hochrangige dürfen sich den arroganten Ton leisten, setzt man sich endlich zur Wehr, dann wird man durch die mittleren Rangträger abgemahnt?
niemand sollte hier einen arroganten Ton pflegen (aber selbst ich tue das leider wohl manchmal), andererseits ist auch hier ein Stück 'normale' Welt und es gibt diejenigen die Hilfe brauchen und diejenigen die Keine brauchen und danach richtet sich irgendwier wie man sich, zumindest zweckmäßigerweise, verhalten sollte.

Ich kann Dir, in meiner Funktion als Moderator, nur sagen das ich keinen Grund sehe Dich 'abzumahnen' aber auch keinen Grund sehe diejenigen abzumahnen die sich kritisch zu Deinen Aussagen geäußert haben - ihr werdet diese Dinge also selbst austragen müssen.


Gruß
Stephan

Re: Probleme mit "Application.OnTime"

von Stephan » So, 27.01.2013 12:45

Ist eine Funktionalität von MSO-/VBA, welche in OO-/BASIC übertragen wurde, nur dann Teil von OpenOffice, wenn man darüber nicht "Option... " schreibt?
Prinzipiell ja.

(Ich schreibe deshalb "prinzipiell", weil ich mir nicht sicher bin ob das Ganze programmintern an jeder Stelle sauber getrennt ist.
Generell gilt jedoch 'VBA-Befehle' (Der Begriff ist strenggenommen falsch, denn ich rede hier eigentlich über Methoden etc. der MSO-API) das diese nicht ohne die Kompatibilitäts-Option im Code ausführbar sein dürfen.)

es gibt zumindest zwei Gründe dafür:

OO muß plattformunabhängig laufen, gleichzeitig garantiert MS (natürlich) nicht das alles was 'makrotechnisch' in MSO läuft auch in MSO abgelegt ist, d.h. es ist jedeerzeit damit zu rechnen das MS intern auf Teile des Betriebssystems zurückgreift, da ja klar ist das MSO nur für Windows (meinethalben auch für Mac) gemacht ist.

OO sollte gewährleisten versionsunabhängig (in Bezug auf MSO) zu bleiben, gleichzeitig gibt es dazu (natürlich) keine Abstimmung mit MS.
Würde OO nun Teile von VBA bzw. der MSO-API für sich 'nativ' übernehmen ist nie auszuschließen das es seitens MS Änderungen (z.B. Fehlerbereinigungen, denn Änderungen sind nicht negativ zu verstehen) macht, auf Welche OO keinen Einfluß hat.

Oder hätte ich die Frage - um mich im vorliegenden Forum gut aufgehoben zu fühlen - erst gar nicht stellen dürfen,
Das Problem ist eher das Du die Dinge (aus Unverständnis?) versuchst zu verallgemeinern, was Dich in die falsche Richtung führt, z.B. weil:

VBA und StarBasic sind fast 100%ig identisch (ja, wirklich), was aber praktisch ziemlich irrevant ist weil es nicht auf die Programmiersprachen ankommt sondern auf das jeweilige Objektmodell und diese unterscheiden sich. (z.B. ist "Application.OnTime" faktisch null VBA sondern 100% MSO-Objektmodell)
StarBasic z.B. ist allein durch die Befehle definiert die Du in der OO-Hilfe findest (bei VBA ist der Umfang ähnlich gering), der große Rest den Du bei der Programmierung im Code nutzt ist API/Objektmodell und nicht Teile der Sprache "StarBasic" (oder VBA).

Die Kompatibilitätsoption (Option VBASupport 1)) in den Code zu schreiben heißt definitiv nicht das damit nun alle VBA-'Befehle' laufen würden, sondern es heißt nur das diejenigen Befehle die OO aus dem MSO-Objektmodell 'beherrscht' jetzt laufen sollten.
Diese Aussage ist nicht formal, denn ein großer Teil der VBA-'Befehle' laufen trotz KOmpatibilitätsoption nicht, wobei ich keine detaillioerte Aufstellung kenne welche 'Befehle' funktionieren, zumal sich das sehr schnell ändert da OO hier zunehmend an Funktionalität gewinnt.
(VBA-'Befehle' in Hochkomma, weil es praktisch überwiegend um Methoden etc. des MSO-Objektmodell geht)
lorbass?
Es ist wohl ungünstig mich hier einzumischen, aber:

Du solltest im Blick haben das sich die Mehrheit der Helfenden hier nicht als Verteidiger eines Programms (z.B. OOo, AOO, LO) versteht sondern als neutrale Helfer.
Insbesondere heißt das auch die Dinge so zu erklären wie sie sind, nicht wie sie sein sollten (und wie sie die Programme/Projekte OOo, AOO, LO teils quasi als Werbung darstellen) und das heißt hier das es letztlich nicht so ganz günstig ist VBA in OOo/AOO/LO zu verwenden und man das deshalb besser meiden sollte.
Die Formulierung "die Dinge so zu erklären wie sie sind" meint hierbei insbesondere Wege/Lösungen aufzuzeigen die aus Erfahrung praktisch funktionieren und nicht WEge die nur funktionieren sollten (z.B. weil sie so in der Programmhilfe stehen).




Gruß
Stephan

Re: Probleme mit "Application.OnTime"

von Jonny1 » So, 27.01.2013 12:43

Bei mir ja. Wie ist es mit dir und mit deinen Freunden?

Re: Probleme mit "Application.OnTime"

von Karolus » So, 27.01.2013 12:41

Jonny1 hat geschrieben:Hochrangige dürfen sich den arroganten Ton leisten, setzt man sich endlich zur Wehr, dann wird man durch die mittleren Rangträger abgemahnt?
@Jonny
Ist alles in Ordnung bei dir ?

Re: Probleme mit "Application.OnTime"

von Jonny1 » So, 27.01.2013 12:35

Hochrangige dürfen sich den arroganten Ton leisten, setzt man sich endlich zur Wehr, dann wird man durch die mittleren Rangträger abgemahnt?

Re: Probleme mit "Application.OnTime"

von F3K Total » So, 27.01.2013 12:13

Hallo Gianni,
das ist jetzt die zweite üble Provokation, die du von Dir gibst:
1.)[quote=""Jonny1"]Vielen Dank.[/quote]
2.)
Jonny1 hat geschrieben:... erst gar nicht stellen dürfen, lorbass?
Hier im Forum versuchen Leute anderen in ihrer FREIZEIT zu helfen.
Dieses Forum hat nichts mit AOo oder LO zu tun, ist privat.
Wir helfen uns gegenseitig.
Dir ist inzwischen einiges an freiwilliger Unterstützung widerfahren, also bitte, mäßige Deinen Ton.
R

PS:
schreibe ich hier unten den Code...
da fehlt der wichtigste Teil, das beanshell script, zu finden unter Extras/Makros/Makros verwalten/Beanshell ... timer/timer.bsh

Re: Probleme mit "Application.OnTime"

von Jonny1 » So, 27.01.2013 11:49

Vielen Dank für deinen hilfreichen Beitrag. Die Datei habe ich heruntergeladen und - nach einigem Bangen und Zögern - mich entschlossen die Makros laufen zu lassen. Funktioniert einwandfrei und ich bin dabei mir es durchzustudieren.
leider ist es oft schwer erreichbar
In der Tat. Nach einigen erfolglosen Versuchen, habe ich aufgegeben.

Was mir noch nicht so ganz klar ist, ist es unter anderem folgendes...
MS777 hat geschrieben:
OOBasic lacks a timer functionality. This post shows, how to implement a timer functionality in OOBasic using BeanShell.
... schreibt das englische Forum.

Andererseits - wie auch Stefan hervorgehoben hat - kennt OOBasic "Application.OnTime". Man muß nur eben "Option VBASupport 1" davor setzen.

Aber der Hochrangige schreibt:
lorbass hat geschrieben:Das sind doch alles MSO-/VBA-Interna. Meinst du nicht auch, dass du damit in einem dazu passenden Forum besser aufgehoben wärst?

BTW:
Jonny1 hat geschrieben:PS zum PS:
… heißt üblicherweise »PPS« ;) Das dritte »PS« dann »PPS« usw.

Gruß
lorbass
Wie ist es nun?

Ist Application.OnTime eine Errungenschaft der Mannschaft von Bill Gates, welche sich die Menschen von StarOffice, OpenOffice, LibreOffice, etc. erfreulicherweise so angeeignet und uns zur Verfügung gestellt haben, wie sie sich Hunderte oder Tausende von anderen Errungenschaften von Microsoft angeeignet und uns weitergereicht haben, oder "sind doch alles MSO-/VBA-Interna"?

Ist eine Funktionalität von MSO-/VBA, welche in OO-/BASIC übertragen wurde, nur dann Teil von OpenOffice, wenn man darüber nicht "Option... " schreibt?

Hat OOBasic die Timer-Funktionalität Application.OnTime oder does OOBasic lack a timer functionality?

Oder hätte ich die Frage - um mich im vorliegenden Forum gut aufgehoben zu fühlen - erst gar nicht stellen dürfen, lorbass?

Gianni Facini

PS:

Für diejenigen die - so wie ich - Bangen und Zögern verspüren, wenn sie Makros aus einer heruntergeladenen Datei laufen lassen wollen, OpenOffice sie aber warnt, daß es gefährlich werden könnte, schreibe ich hier unten den Code...

Code: Alles auswählen

global oP

Sub Start_timer
	oP = GenerateTimerPropertySet()
	oJob1 = createUnoListener("UHR_", "com.sun.star.task.XJobExecutor")
	oP.xJob = oJob1
	oP.lMaxIterations    = 20000'20 Sekunden
	oP.lPeriodInMilliSec = 1000'alle 1 Sekunde
	oP.start()
End Sub

Sub Stop_timer
	oP.stop()
End Sub

function GenerateTimerPropertySet() as Any
	oSP    = ThisComponent.getScriptProvider("")
	oScript = oSP.getScript("vnd.sun.star.script:timer.timer.bsh?language=BeanShell&location=document")
	GenerateTimerPropertySet = oScript.invoke(Array(), Array(), Array())
end function

sub UHR_trigger
    oform = thiscomponent.drawpage.forms.Uhr
    otxtTime = oform.txtTime
    otxtTime.Text = Time()
end sub



Sub anderes_Makro_laufen_lassen
   Msgbox "Obwohl die Uhr läuft, kommt diese Meldung"
end sub
... und zeige die Konfiguration der Buttons:
Dateianhänge
2013_01_27.png
2013_01_27.png (6.18 KiB) 6442 mal betrachtet

Re: Probleme mit "Application.OnTime"

von F3K Total » So, 27.01.2013 09:22

Moin,
ich hatte mal ein ähnliches Problem und habe diesen Thread im englischen Forum gefunden, leider ist es oft schwer erreichbar:

http://www.oooforum.org/forum/viewtopic.phtml?t=59763
MS777 hat geschrieben: OOBasic lacks a timer functionality. This post shows, how to implement a timer functionality in OOBasic using BeanShell.
Das funktioniert wunderbar und läuft stabil, anbei ein Beispiel.
HTH
Gruß R
Dateianhänge
ApplicationOnTime.odt
(12.16 KiB) 312-mal heruntergeladen

Re: Probleme mit "Application.OnTime"

von lorbass » Sa, 26.01.2013 21:11

Was sollen deine laufenden Wasserstandsmeldungen bewirken? Hast du einen Hang zu Selbstgesprächen?

Gruß
lorbass

Re: Probleme mit "Application.OnTime"

von Jonny1 » Sa, 26.01.2013 20:48

Wäre es nicht vielleicht sinnvoll, den Herstellern von OO BASIC die Fehlermeldungen bzw. das fehlermeldungsfreie Fehlverhalten ihres Interpreters zu zeigen? Habt ihr Erfahrung darin? Habt ihr euch in der Vergangenheit bereits mit ihnen in Kontakt gesetzt?

Der Vollständigkeit halber lade ich hier unten die zwei diesmal einander identischen Fehlermeldungen bei einem Modul von "Untitled 1" bzw. von "My Macros & Dialogs.Standard" in dem Fall, daß man die vorgeschriebene Option "Option VBASupport 1" weglässt, hoch:
Dateianhänge
Untitled 1-Standard - LibreOffice Basic - 1.png
Untitled 1-Standard - LibreOffice Basic - 1.png (82.4 KiB) 6501 mal betrachtet
My Macros - Dialogs-Standard - LibreOffice Basic - 1.png
My Macros - Dialogs-Standard - LibreOffice Basic - 1.png (85.8 KiB) 6501 mal betrachtet

Re: Probleme mit "Application.OnTime"

von Jonny1 » Sa, 26.01.2013 20:17

Was ich im neuen, den Fehler auslösenden Versuch, anders als vorher gemacht habe, ist es, daß ich die Makros in einem extra dafür erschaffenen "Modul2" von "My Macros & Dialogs.Standard" getan habe. Und zwar deswegen, weil ich - ich glaube zu erinnern in den Anleitungen von MSO/VBA - gelesen hatte, daß man die Makros in das Hauptmodul stecken sollte.

Als ich aber es mit "My Macros & Dialogs.Standard.Modul1" versucht hatte, kam eine mir ganz und gar unverständliche Fehlermeldung. Deswegen habe ich das Modul "My Macros & Dialogs.Standard.Modul2" verwendet.

Als ich nun wieder mit "Untitled.Standard.Modul1" versucht habe, ging es wieder fehlermeldungsfrei fehlerhaft vor sich vor:
Dateianhänge
Untitled 1-Standard - LibreOffice Basic.png
Untitled 1-Standard - LibreOffice Basic.png (75.39 KiB) 6511 mal betrachtet

Re: Probleme mit "Application.OnTime"

von Jonny1 » Sa, 26.01.2013 19:59

F3K Total hat geschrieben:Moin,
bei mir (W7-32) kommt diese Fehlermeldung trotz

Code: Alles auswählen

Option VBASupport 1
Bild
Gruß R
Viele male habe ich - nachdem ich "Option VBASupport 1" eingefügt hatte - keinerlei Fehlermeldung erhalten. Selbst dann, wenn ich den Namen der aufzurufenden Prozedur mit dem Namen einer nicht existenten Prozedur ersetzt habe.

Jetzt habe ich es nochmals versucht und - wie verhext - bekommen ich die gleiche Fehlermeldung wie du.

Es wird immer anstrengender zu verstehen.

Gianni
Dateianhänge
My Macros - Dialogs-Standard - LibreOffice Basic.png
My Macros - Dialogs-Standard - LibreOffice Basic.png (85.25 KiB) 6513 mal betrachtet

Re: Probleme mit "Application.OnTime"

von lorbass » Sa, 26.01.2013 16:01

Das sind doch alles MSO-/VBA-Interna. Meinst du nicht auch, dass du damit in einem dazu passenden Forum besser aufgehoben wärst?

BTW:
Jonny1 hat geschrieben:PS zum PS:
… heißt üblicherweise »PPS« ;) Das dritte »PS« dann »PPS« usw.

Gruß
lorbass

Re: Probleme mit "Application.OnTime"

von Jonny1 » Sa, 26.01.2013 15:37

PS zum PS:

An der Adresse http://msdn.microsoft.com/en-us/library ... e.15).aspx kann man lesen:
... Macros may not always run at the specified time. For example, if a sort operation is under way or a dialog box is being displayed, the macro will be delayed until Word has completed the task. If this argument is 0 (zero) or omitted, the macro is run regardless of how much time has elapsed since the time specified by When.
"... regardless of how much time has elapsed since the time specified by When."

= "... ganz egal wie viel Zeit nach dem in When angegebenen Zeitpunkt vergangen ist."

Diese gleichzeitige Flexibilität und Hartnäckigkeit von OnTime versuche ich zu nutzen, um die Transkriptions-Makros zu verwirklichen.

Re: Probleme mit "Application.OnTime"

von Jonny1 » Sa, 26.01.2013 14:40

PS:

Es ist auch so - oder bilde ich mir vielleicht es nur so vor - daß, wenn das Programm x-Millisekunden waitet, die alte Instanz vielleicht danach noch nicht gekillt ist, und man hat infolgedessen eine Totgeburt. Wenn aber geOnTimet wird, dann kann - laut Bill Gates - nichts mehr verhindern, daß die neue Instanz geboren wird.

Nach oben