Hallo Wilfried,
Was genau macht dein Abiturprogramm?
Es druckt die Abiturzeugnisse. Dazu erfasst es die Halbjahresleistungen in der Abiturstufe sowie aller anderen relevanten Daten, die Prüfungsergebnisse und berechnet den Abiturschnitt. Anfangs gab es kein kommerzielles Programm, das das komfortabel konnte.
Da sich die Regeln dazu mehrmals geändert haben, und es mittlerweile auch gute Programme gibt haben wir irgendwann beschlossen ein kommerzielles Programm einzusetzen.
Stimmt. Ui-Resourcen lassen sich nur in derselben ui-Datei mehrmals öffnen und schließen.
Ja, aber das ist nicht der Punkt, sondern dass glue keine Verlinkung herstellen kann wenn GI_comp auf ein Objekt in einer anderen GOC-Datei verweist.
Code-Resourcen lassen sich dagegen aucu auf verschiedene GOC-Dateien aufteilen.
Ist das in ESP so? IN GOC erzeugt jede GOC-Datei genau eine Code-Resource.
<<UI in einer Library ist aber immer aufwändig, da man wahrscheinlich
nicht auf die Objekte selber, sonder nur auf Duplikate zugreifen kann>
Wenn es sich um UI-Objekte eines Controllers handelt, scheint es zu gehen: Es gibt eine Datenstruktur namens GenControlUpdateUIParams, in der u.a. das Global Handle der zum Controller gehörenden "Kinder" abgelegt wird ("Childblock, where the children live"), wenn sie leben, gemeint ist also wohl das Duplikat. Es gibt eine proc (Ruler: uiControlCommon.asm: GetChildBlock), die sich dieses Handle holt, um dann eine Message an ein UI-Objekt zu schicken). Genau ist mir der Mechanismus noch nicht klar

.
</ui>
Ich denke mal, der Controller macht nichts anderes als man sonst auch manuell machen muss: Er erzeugt für jedes Programm, dass den Controller benutzt eine Kopie einer Template-Reosurce, die dann dem Programm exklusiv gehört. So kann z.B. GeoWrite die Farbe Blau und GeoDraw die Farbe Grün für Linien eingestellt haben, ohne dass es zu Wechselwirkungen kommt.
Die Chunkhandles sind in beiden Controllern (Draw und Write) gleich, aber die MemHandles unterschieden sich. Um den Controller (oder ein Objekt des Controllers) anzusprechen musst du also immer den korrekten optr konstruieren.
So hab eich den Mechanismus verstanden. Und ich glaube, das habe ich beim Suchen und Ersetzen Controller in R-BASIC benutzt.
Weiterhin glaube ich, dass folgendes gilt: Wenn ich in einer Library Objekte bereitstellen will muss ich eine Template-Resource machen und zur Benutzung jeweils eine Kopie bereitstellen. So können verschieden Programme die Objekte der Library benutzen. In meinem konkreten Fall will ich aber auch Code, der auf die Objkete zugreift, in eine Library packen. Dann wird es "aufwändig" weil ich mir irgendwo das Memhande der (korrekten) Kopie merken muss, und bei jedem zugriff den richtigen optr konstruieren muss. Aus einem einfachen
@send MyObj:MSG_SONSTWAS()
wird dann
@send MakeMyOptr(korrektGlobalHanlde, ChunkOf(@MyObj))::MSG_SONSTWAS().
Wenn ich das vergesse compilert er, aber es geht dann nicht. Und da ich dass an vielen Stellen habe wird es aufwändig und fehleranfällig.
Was ich nicht weis, ist, wenn ich die Library definitiv nur von genau einem Programm benutze, ob ich mir dann das Duplizieren der Resource sparen kann und wieder mit den Objekten direkt arbeiten darf.
Mit Datenchunks darf ich das, weil (wenn) die Programm die Chunks nicht ändern. Dann kann ich mehreren Programmen den gleichen optr übergeben. Ich muss die Ressource nur als "shared" deklarieren. Deswegen lagere ich erst einmal alle Datenchunks aus.
Soweit meine Überlegungen / mein Kenntnisstand.
Gruß
Rainer