Aloha
Stephan hat geschrieben:Konkret würde ein Code mit nur einmaliger Verwendung von ThisComponent (...) zu genau gleichen Problemen führen, das aber nur weil der Code falsch geschrieben ist, insofern als man ein anderes Ergebnis erwartet als was ThisComponent in Wahrheit liefern kann.
Das stimmt natürlich - ich hatte einfach mal stillschweigend vorausgesetzt, dass die erste Verwendung zur Identifizierung des aufrufenden Dokuments dient.
Wenn ich mir dazu im Allgemeinen die geposteten Code(-schnipsel) hier im Forum anschaue, trifft dies in gefühlt 99,99% der Fälle auch zu.
Die restlichen 0,01% falsifizieren meine Grundannahme zwar immer noch, aber ich denke, Du weisst (spätestens jetzt) was und wie es gemeint war.
Stephan hat geschrieben:ThisComponent liefert eben nicht, auch das von mir schon geschrieben, das letztaktive Dokument, sondern: "... das aktive Dokument aus Sicht der Basic-IDE.", auch wenn Beides so erscheint als wenn es immer dasselbe wäre, und deshalb ist doch Dein Herangehen bzw. Deine Erwartung nicht zutreffend.
(...)
Dein Kritikpunkt ist doch das ein identischer Code der an verschiedenen Stellen gespeichert ist zu unterschiedlichen Ergebnissen führen kann und das das irritierend(?) oder falsch(?) oder ... wäre.
Ich verstehe immer noch nicht, warum Du darauf beharrst, dass die Ergebnisse der Verwendung von thisComponent für mich entweder irritierend oder gar falsch sein müssen, damit ich die Meinung haben kann, die ich nunmal habe.
Das ist nicht der Fall - wie nun schon mehrmals erklärt.
Du scheinst mit der Einstellung an die Sache ranzugehen, dass Du einen integralen Bestandteil der OpenOffice-Programmierung vor irgendeiner Attacke beschützen musst.
Da liegst Du aber vollkommen daneben.
Mein Ratschlag war nie etwas anderes als genau das- ein
Ratschlag ("
würde ich Dir davon
abraten", so der genaue Wortlaut).
Ein Ratschlag auf gleicher Ebene wie Ratschäge, den Datentyp der Parameter und den Rückgabetyp von Funktionen falls bekannt von vornherein klar festzulegen und im Code zu verankern, innerhalb von Schleifen nicht jedesmal über mehrere Ebenen auf ein Objekt zuzugreifen (ala oComSet.Model.StringItemList bei x Zugriffen), eindeutige Variablennamen zu verwenden, Sicherheitsabfragen bei Rückgabewerten zu verwenden, von vornherein bekannte Sheets in einem Calc-Dokument lieber per Namen als per Index zu holen, mittels .lockController Geschwindigkeitszuwächse zu erhalten undundund.
Keine dieser Sachen respektive ihre Ergebnisse irritiert mich auch nur im Entferntesten. Keine dieser Sachen funktioniert meiner Meinung nach irgendwie "falsch".
Keiner dieser Ratschläge impliziert, dass mit OOo Basic irgendwas nicht stimmt.
Aber, und das ist der entscheidende Punkt:
Ich gebe diese Ratschläge nur, weil ich der eindeutigen Meinung (Meinung = subjektiv) bin, dass es ausschliesslich Vorteile mit sich bringt, sie zu befolgen, und keinerlei Nachteile.
Trotzdem macht es keinen Unterschied beim Vorankommen, ob man meinen Ratschlag für angemessen erachtet und annehmen will oder nicht.
Und genau das trifft auch auf die mehrmalige Verwendung von thisComponent zu.
Das gilt selbst für den erfahrensten Programmierer - selbst wenn Du zu jeder Zeit während der Entwicklung des/der Makros weisst, was Dir thisComponent in dieser oder jenen Codezeile gerade zurückliefert, selbst wenn Du Dir dessen stets bewusst bist - möglicherweise ist es selbst dann unmöglich, das Makro ohne Anpassungen aus einer OOo-Bibliothek in ein Dokument zu transferieren oder vice-versa.
Und das vollkommen grundlos. Ich habe noch in keinem Makro die Notwendigkeit gesehen, ein anderes Dokument als das aufrufende über thisComponent zu identifizieren. Noch nie.
Daher war, ist und bleibt mein Tip:
Die zurückgegebene Referenz der öffnenden Methode verwenden, niemals thisComponent verwenden, um etwas anderes als das aufrufende Dokument zu referenzieren.
Was Dich an diesem Ratschlag so gestört hat, dass Du sofort interveniert hast, was Dich hier vermuten lässt, ich würde den Ratschlag nur geben, weil ich das Verhalten von thisComponent bzw. den Unterschied zwischen thisComponent und StarDesktop.CurrentComponent nicht verstehen würde, was im Übrigen so absurd ist, dass es schon fast beleidigend wird - nicht der Vorwurf, dass ich irgendwas nicht verstehen würde, sondern dass ich raten würde, von irgendwas die Finger zu lassen, nur weil
ich es nicht verstehe - ist für micht nicht nachvollziehbar.
Stephan hat geschrieben:und ich werde damit leben müssen ggf. wieder mit dem Adjektiv "hanebüchen" versehen zu werden
Was ich als hanebüchen bezeichnet habe, ist eine Diskussion darüber, ob man thisComponent mehrmals verwenden kann, wenn man weiss, auf welcher Ebene bzw in welcher Umgebung das Makro ausgeführt wird.
Natürlich kann man. Aber warum sollte man?
Stephan hat geschrieben:wo ich gleichfalls weiß das 99% hier im Forum nur glauben werden wir stritten hier darum wer 'Recht' hat.
Falls Du Letzteres auch glaubst, dann allerdings leben wir hier in zwei Welten
"Recht haben" kann man nur ins Spiel bringen, wenn man meint, ich würde in irgendeiner Weise über die Richtigkeit, Nachvollziehbarkeit, Logik der Ergebnisse von thisComponent diskutieren.
Tue ich nicht.
Ich habe meine persönliche Meinung zu einem Thema geäussert, unter anderem vor dem Hintergrund, dass innerhalb von wenigen Tagen gleich 2 Probleme auf die falsche Verwendung von thisComponent zurückzuführen waren - was liegt also näher, als einen Tipp zu geben, der meiner Meinung nach ähnliche Probleme in der Zukunft von vornherein ausklammert?
Ich diskutiere diese Sache nur so lange und ausgiebig, weil ich das Gefühl habe, dass Du meine Beweggründe vollkommen falsch interpretierst.
Ginge es darum, dass irgendjemand meint, ich wäre im Unrecht, wäre die Sache mit ein paar Argumenten geklärt bzw. die Standpunkte ausgetauscht, ginge es darum, dass jemand meine Meinung doof findet, so what, passiert jedem täglich.
Stephan hat geschrieben:denn es geht hier, meines Erachtens, eben nicht um Besonderheiten vor denen man warnen muß indem man andere davon abhält, sondern um normale Probleme im Programmieralltag die jeder der programmieren will irgendwo verstehen muß, denn sonst wird er irgendwo 'Code-Kopierer' bleiben.
Wie gesagt, es war keine Warnung, sondern ein ehrlich und gut gemeinter Ratschlag.
Ich bin ganz Deiner Meinung, dass man, wenn man ernsthaft mit OOo Basic arbeiten will, sich dieser und auch anderer Umstände bewusst sein sollte - ich sehe aber nicht unbedingt die Notwendigkeit, es auf die harte Tour lernenen zu müssen.
Stephan hat geschrieben:Das war nun viel Text
Das war jetzt sogar noch mehr.