Einzelnen Beitrag anzeigen

Benutzerbild von negaH
negaH

Registriert seit: 25. Jun 2003
Ort: Thüringen
2.950 Beiträge
 
#13

AW: Dateiverschlüsselung mit DEC (5.2)

  Alt 17. Jun 2010, 13:38

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.
  Mit Zitat antworten Zitat