Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   Delphi Dateiverschlüsselung mit DEC (5.2) (https://www.delphipraxis.net/152210-dateiverschluesselung-mit-dec-5-2-a.html)

cookie22 17. Jun 2010 11:24

AW: Dateiverschlüsselung mit DEC (5.2)
 
wär auch komisch gewesen, wenn das nicht klappt. :-D

Assertor 17. Jun 2010 12:21

AW: Dateiverschlüsselung mit DEC (5.2)
 
Hi Alex,

Zitat:

Zitat von Schwedenbitter (Beitrag 1029591)
Delphi-Quellcode:
Initialization
   Randomize;

Das bewirkt in der DEC nichts, ist ja die Delphi Funktion. Was Du suchst, heißt RandomSeed:
http://www.delphipraxis.net/429884-post.html

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.

Gruß,
Assertor

negaH 17. Jun 2010 13:38

AW: Dateiverschlüsselung mit DEC (5.2)
 
Zitat:

Zitat von Assertor (Beitrag 1029610)

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.

Assertor 17. Jun 2010 13:53

AW: Dateiverschlüsselung mit DEC (5.2)
 
Hallo Hagen,

Zitat:

Zitat von negaH (Beitrag 1029629)
Was willst du da verbessern können ?

Den Text. Um es klarer zu sagen: Mit "hübscher" meinte ich nur die Fehlermeldung. Die Logik des Klassenmanagement ist trivial, die beiden Fehlerfälle ebenso.

Mein Hinweis auf die Änderungen an der Fehlerbehandlung bezogen sich auf den DEC 5.3 Thread, wo ich iirc bereits auf vererbte Exceptiontypen eingehe. Dies läßt differenziertere Behandlung von Fehlerfällen auf nachgelagerten Schichten zu.

Gruß,
Assertor

Zitat:

Zitat von negaH (Beitrag 1029629)
PS: sorry das ich erst jetzt auf diesen Thread gestoßen bin, sonst hätte ich dir schon viel früher helfen können

Ich bin doch auch eben erst drüber gestolpert ;)


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:53 Uhr.
Seite 2 von 2     12   

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz