Software > Coding
rsrc_gaddr und typ OBJECT
guest2552:
Hallo m0n0,
Gerhard hat vollkommen recht.
Die Funktion rsrc_gaddr() bietet nur die Möglichkeit einen Index anzugeben.
Da sowohl die Bäume als auch die Objekte innerhalb der Bäume von '0' beginnend durchnummiert werden und es dadurch mehrere Objekte mit dem selben Index geben kann, hast Du keine Möglichkeit mitzuteilen für welchen Baum dieser Objektindex bestimmt ist.
Als Folge wird die Adresse des Objektes mit dem selben Index im 1. vorkommenden Baum zurückgeliefert.
Eine durchlaufende, baumunabhängige Nummerierung gibt es nur innerhalb der RSC-Datei.
Du hast also nur die (standardmäßig so angewendete) Möglichkeit Dir die Baumadressen zu holen und merken und über den Index und die evtl. definierte RSC-Objektstruktur oder den Strukturoffset (24 Byte) an die Daten zu kommen.
Gruß Charly
m0n0:
Dann versteh ich nicht warum man da andere Typen angeben kann als R_TREE.... Wenn man eh nur aus dem Tree 1 was auslsen kann.
"Die Objektnummer die Du benutzt ist bezogen auf das Wurzelobjekt (Root, Objekt 0) des von Dir gewünschten Baumes."
Ich kann den Baum aber nicht "wie gewünscht" angeben im Funktionsaufruf ;)
guest2552:
Hi m0n0,
es gibt neben den Bäumen eben auch noch freie Strings, freie Images etc. deren Adressen mit diesem Befehl direkt zu besorgen sind.
Der Ansatz für Objekte war halt scheinbar ??? eine durchlaufende Nummerierung ohne Gruppierung, was jedoch sowohl im Resource-Construction-Set (hierarchischer Objektaufbau, Sortierbarkeit etc.) problematisch wäre als auch im Programm (Erkennbarkeit der Baum<->Objektzuteilung, einfache lückenlose Ansprache aller Objekte eines Baumes von '0' bis zum 'Last_Ob'-Flag) stets recht komplizierte und zeitaufwändigere Routinen erfordert hätte bis das korrekte Objekt erkannt/angesprochen wäre.
Deshalb und der Übersichtlichkeit wegen haben die RCS-Programme schon immer die Indizes in den Header-Dateien der RSC-Dateien mit Baumbezug ausgegeben. Dieses System funktioniert halt in rsrc_gaddr() mit dem nötigen durchgängigen und bezugsfreien Index bei Objekten nicht.
Durch die fehlende Doku und den anderen Denkansatz beim Implementieren der rsrc_gadr()-Funktion ist das ganze halt etwas unglücklich implementiert und hat schon zu vielen Stunden sinnlosem Rumprogrammieren geführt.
Der Grund für diese Implementierung: Auch Systemprogrammierer dürfen Fehler machen ;) wie wir alle, nur sollen's weniger sein. Auf Deutsch: Ich weiß es nicht, vielleicht andere!
Viele Bibliotheken rüsten halt bei Bedarf eine eigene Funktion für Objektadressen nach. Es ist aber nicht wirklich nötig, da sich auf Baumadressenbasis wirklich prima und übersichltich arbeiten läßt.
Gruß Charly
m0n0:
Ahja, danke für die Info.
Wundert mich nur warum das in den der Dokumentation der Funktion nicht so richtig durch kommt.
Gruß,
m0n0
gstoll:
--- Zitat von: m0n0 am Sa 17.07.2010, 11:23:01 ---Dann versteh ich nicht warum man da andere Typen angeben kann als R_TREE....
--- Ende Zitat ---
Das AES nutzt die um nach dem laden der Resourcedatei die Objekte anzupassen.
Gerhard
Navigation
[0] Themen-Index
[*] Vorherige Sete
Zur normalen Ansicht wechseln