AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

[done] DEC class xy not found

Ein Thema von heri · begonnen am 2. Nov 2009 · letzter Beitrag vom 14. Mai 2010
Antwort Antwort
Seite 2 von 2     12   
Benutzerbild von negaH
negaH

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

Re: [done] DEC class xy not found

  Alt 12. Mai 2010, 20:55
Zitat:
Warum eigentlich #$5A und nicht einfach 'Z' ?
Kannst du erkennen das im Zeichen Z das oberste Nibble 0101b=$5 und das unterste Nibble 1010b=$A ist ?

Es wird also deshalb #$5A benutzt weil es um die binäre Codierung hier geht die der Programmierer benutzen möchte. Ich nenne es "explizite Programmierung" und deren Ziel ist die Reproduzierbarkeit der Sourcen im Kopf anderer Programmierer.

Gruß Hagen
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.132 Beiträge
 
Delphi 12 Athens
 
#12

Re: [done] DEC class xy not found

  Alt 12. Mai 2010, 21:01
Jetzt wo du's sagst ... daran hatte ich garnicht gedacht (hatte nur beim Anblick des Wertes das Z vor Augen)
aber stimmt, dann ist es so natürlich besser.


Schade, daß es in Delphi keine Binärdarstellung gibt.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Benutzerbild von negaH
negaH

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

Re: [done] DEC class xy not found

  Alt 12. Mai 2010, 21:15
nochwas zum Thema .Identity im DEC. Das ist eine der Stellen dir mir so garnicht noch nie richtig gefallen hat
Die zu lösende Problematik ist eine möglichst kurze aber eineindeutige ID zu jeder Klasse im DEC zu schaffen. Wichtig dabei ist aber noch das man mit der Änderung von DECUtil.IdentityBase alle IDs serialisieren kann. Dh. je nach Anwendung kann der Programmierer über IdentityBase das ID System individualisieren auf ein Projekt ohne das man den kompletten Source ändern muß.

Man speichert also in einem Stream als Header die Identities der benutzten DEC Klassen und danach zb. die verschlüsselten Daten. Bei der Entschlüsselung kann mit DECClassByIdentity() diese registrierte Klasse als Objekt geladen werden. Um diese Header mit fester Länge anlegen zu können wird für Identity ein Cardinal benutzt, statt wie üblich den Klassennamen im Header lesbar zu speichern.

Ein weiteres Kriterium war dabei aber auch das zukünftige neue DEC Klassen voll transparent implementierbar sein müssen ohne das sich der jeweiligen Programmierer mit diesen IDs beschäftigen müssen. Zb. bei Vergabe fester sequentieller IDs für die Klassen müssen die Programmierer sich immer abstimmen und diese IDs dann auch pflegen. Das geht bei einer Bibliothek die weltweit verwendet wird leider nicht mehr zu organisieren.

Jetzt, im nachhinein, würde ich GUIDs dafür benutzen da man damit schon rein mathematisch die Wahrscheinlichkeiten von Kollisionen enorm reduziert. Das jetztige Verfahren birgt ein hohes Risiko von Kollisionen, die aber bei der Registration einer DEC Klasse zuverlässig erkennt werden. Sollte dies der Fall sein muß man entweder den Klassennamen oder IdentityBase ändern.

Wie gesagt, damals viel mir nichts besseres ein und zufrieden bin ich mit dieser Lösung noch heute nicht. Vielleicht fällt ja einem von euch was ein was neu für mich wäre.

Gruß Hagen
  Mit Zitat antworten Zitat
Assertor

Registriert seit: 4. Feb 2006
Ort: Hamburg
1.296 Beiträge
 
Turbo C++
 
#14

Re: [done] DEC class xy not found

  Alt 14. Mai 2010, 11:49
Hallo Hagen,

Zitat von negaH:
Wie gesagt, damals viel mir nichts besseres ein und zufrieden bin ich mit dieser Lösung noch heute nicht. Vielleicht fällt ja einem von euch was ein was neu für mich wäre.
Eine GUID Liste zu führen und abzugeleichen wäre tatsächlich zu aufwendig und fehleranfällig. Eine langsamere Alternative wäre die Nutzung von Hashes, also ein Hash auf Klassenname + IdentityBase. Die verwendete Hash-Klasse könnte dann, wie IdentityBase, änderbar sein und das Default entsprechend Weise gewählt werden. Genauso wie eine GUID bekommt man das natürlich nicht mehr in einem LongWord/Cardinal unter, sondern würde entspreche Wrapper für .Identity als Bytes und zusätzlich z.B. als HEX-String bieten.

Es gäbe dabei aber das Problem der Abwärtskompatibilität, da die jetzige Identity ja auch von Entwicklern genutzt wird. Eine Änderung könnte m.E. nur parallel implementiert werden.

Gruß,
Assertor

P.S.: Meine PN bezgl. 2DES/3DES und Byte Arrays hat sich vollkommen erledigt - läuft alles
Frederik
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:38 Uhr.
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