1) Im Sinne der Eröffnung ist das Thema
[geklärt]: mindestens private und public sind in "reinem"(?) StarBasic ohne VBA-Kompatibilität reine Dekoration ohne Effekt. Konstanten, Variable und Prozeduren sind immer public für die gesamte Bibliothek, in der sie definiert sind. Erst mit "option compatible"
und "compatibilityMode(true)" würden sie wirksam.
Was Definitionen gleicher Namen in verschiedenen Modulen betrifft:
nitja hat geschrieben: ↑Di 16. Apr 2024, 19:38
… Was ich nicht wirklich klären konnte: Wenn eine Variable (oder Prozedur) in Modul1 und Modul2 mit gleichem Namen definiert ist, welche Definition ist dann gültig?
²⁾
… insbesondere, wenn sie aus Modul3 aufgerufen wird, wo nichts unter dem Namen definiert ist. …
³⁾
Vermutlich (aber das ist eher Spekulation) ist StarBasic insoweit "pragmatisch", dass jeweils die Definition, die es "zuerst findet", gilt. Klar, wenn sie im Modul selbst steht, aus dem sie angefordert wird.
Und auch im Fall
²) ist die Erkennung einfach. Das Verhalten in Fall
³) zu beurteilen würde allerdings erfordern, sich über die Reihenfolge, in der die Module intern durchsucht werden, sicherer zu sein, als ich es bin.
Und was das Vorgehen in meinem aktuellen Projekt betrifft …
… scheue ich die Verwendung der VBA-Kompatibilität, weil ich die weiteren Konsequenzen und unerwünschte Nebenwirkungen noch zu schlecht abschätzen kann.
Insbesondere die Gültigkeit von "compatibilityMode(true)" (Ort und Dauer) und das Fehlen einer einfachen Möglichkeit, das Laufzeitverhalten ggf. vor Ort abzufragen, macht mir die Verwendung zu unsicher.
2) Insofern hat sich das Thema auch
für mein aktuelles Projekt [erledigt].
Ich vergebe nun die Namen bei den Definitionen während des ohnehin zu erledigenden Aufräumens mit besonderer Berücksichtigung ihrer Sichtbarkeit/Gültigkeit für die gesamte Bibliothek.
(Nach
dessen Abschluss werde ich mich bei Gelegenheit intensiver mit der VBA-Kompatibilität befassen.)
p.s.: Die befürchteten Probleme mit der VBA-Kompatibilität scheinen in meiner aktuellen LO-Version (24.2.) überwunden, die Ergänzungen für StarBasic aber wertvoller als gedacht zu sein. Das werde ich also ab sofort intensiver weiter verfolgen.