Die Fehlermeldungen werden in der
DEC 5.3 schon etwas besser, mal gucken, ob ich diesen spezialgelagerten Sonderfall irgendwie noch etwas hübscher machen kann.
Was willst du da verbessern können ?
Das System bekommt eine 4 Bytes ID, ausgelesen aus einer falsch kodierten Datei. Das System findet unter dieser ID keine registerierte Klasse. Die Funktion die diese Klasse ermittelt bekommt als Parameter nur diese ID und kann somit auf Grund fehlender Informationen auch nur einen Fehler bringen der sagt: Hallo ? Unter dieser ID wurde keine Klasse registriert.
Der Punkt ist also: Derjenige der diese
DEC Funktionen in higher-level Funktionen benutzt hat sicher zu stellen das auch eine aussagekräftigere Fehlermeldung erfolgt wenn seine Funktion auf falschen Daten arbeitet. In meinen Augen gibt es also kein Defizit im
DEC sondern nur in der Art&Weise wie der Programmier das
DEC benutzt hat.
Mal einfach gefragt: wie soll DECClassByIdentity(ID: Cardnal); denn hellsehen können das der Programmierer diese Funktion aus einem Kontext heraus benutzt in dem er in seiner Funktion eine ungültige Datei übergeben kann ?
Du kannst da versuche was du willst, aus Sicht der Funktion DECClassByIdentity() steht dir nur die ID und die Liste aller registrierten
DEC Klassen als Information zur Verfügung. Und wenn es keine Klasse mit dieser ID gibt dann kann der Fehler nur lauten: Es gibt keine registrierte Klasse mit dieser ID.
Spätestens nach dieser Fehlermeldung ist klar:
1.) entweder wurde die Klasse nicht registriert
2.) oder die ID ist falsch
Übrigens: die IdentityBase, wenn man sie verändert, sollte immer vor allen Aufrufen von TDECClass.Register manipuiliert werden. Das Identity-System im
DEC kann ID-Duplikate nicht ausschließen per se. Deshalb wird beim .Register einer Klasse auch überprüft ob es eine andere Klasse gibt die die gleiche ID besitzt. Sollte das der Fall sein muß Identitybase auf einen anderen Wert gesetzt werden. Die Vorgehensweise ist also so:
1.) Identitybase auf eigenen Wert setzen
2.) alle zu benutzenden und zukünftig zu benutzenden
DEC Klassen registrieren.
3.) kommt es zu einem Fehler, von wegen nicht eindeutige ID, dann neue IdentityBase wählen und bei Punkt 2.) weiter machen.
Gruß Hagen
PS: sorry das ich erst jetzt auf diesen Thread gestoßen bin, sonst hätte ich dir schon viel früher helfen können.