Einzelnen Beitrag anzeigen

Assertor

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

Eure Anregungen für das DEC 5.3 gebraucht

  Alt 13. Mai 2010, 16:07
Hallo DPler,

wie einige von Euch vielleicht schon wissen, arbeite ich derzeit an der DEC 5.3.

Bisher sind folgende Änderungen schon fertig:
  • Eine recht umfangreiche interne Umstellung von Binary/RawByteString auf TBytes (array of Bytes in älteren Delphis)
  • Bugfixes für C++ Builder Kompatibilität
  • Anpassung der Conditional Defines
  • Erweitere Fehlerbehandlung und Prüfung von Eingabedaten
Folgendes ist geplant:
  • Rewrite aller Formattings (hex, base32, base64 etc)
  • Komplexe GUI Demo
  • Self-Tests mit Testvektoren
  • Unittests
Wenn alles fertig ist, gibt es auch einen Link zum neuen "zu Hause" der DEC (Luckie bekommt natürlich auch wieder ein Release).

In diesem Thread geht es um Überlegungen und Wünschen zum nächsten Release. Neue Hashes und Cipher wird es in dieser Version nicht geben, dafür fehlt leider die Zeit. Konkret ergeben sich durch meine Arbeit einige Umstellungen, wobei ich den Aufwand für die Konvertierung von DEC 5.1 und 5.2 nutzenden Projekten so gering wie möglich halten werde. Prinzipiell entfällt aber der Datentyp Binary, da nun alles auf Bytes arbeitet. Im Gegensatz zu früheren Code-Snippets hier im Forum, wird diese Umstellung keine zusätzlichen Sicherheitsprobleme schaffen, da immer auf den Eingabedaten gearbeitet wird, diese also nicht unnötig vervielfältigt werden und im Speicher rumfliegen.

Wo ich jetzt die Anregung von Euch, den DEC Nutzern, gebrauchen kann: Das gewünschte Stringhandling in den Formatierungsklassen (TDECFormat, TFormat_xyz). Es soll ja auch die Möglichkeit geben z.B. HEX zu Strings und Strings zu HEX zu wandeln. Technisch soweit kein Problem, aber es kommen je nach Art des Ziels natürlich unterschiedliche Ergebnisse raus.

Angenommen, es gäbe z.B. die folgenden Funktionen für TDECFormat:
Delphi-Quellcode:
class function EncodeString(const Value: string): string; overload;
class function DecodeString(const Value: RawByteString): string; overload;
class function EncodeAnsiString(const Value: AnsiString): AnsiString; overload;
class function DecodeAnsiString(const Value: RawByteString): AnsiString; overload;
class function EncodeWideString(const Value: WideString): WideString; overload;
class function DecodeWideString(const Value: RawByteString): WideString; overload;
Würde ich nun TFormat_HEX.DecodeString('74657374') in einem aktuellen unicodefähigen Delphi aufrufen, bekäme ich ja nur unlesbaren Quatsch heraus, bei TFormat_HEX.DecodeAnsiString('74657374') jedoch den AnsiString "test". TFormat_HEX.EncodeString('test') liefert bei Unicode ja das Ergebnis 7400650073007400, bei EncodeAnsiString('test') natürlich die 74657374.

Ich hätte das gerne zusammengelegt, jedoch finde ich keine allgemeingültige Lösung. Es wäre Hellsehen gefordert zu wissen, ob die Eingabedaten in HEX Ansi oder Unicode sind.

Hat jemand eine Idee hierzu? Was wäre Euch lieber, wäre es so wie oben gepostet für jedermann verständlich? Oder würdet Ihr für DecodeString('74657374') das Ergebnis "test" immer erwarten, egal ob Unicode oder ANSI (was ja eigentlich verkehrt wäre)?

Es geht hier nur um das Format-Handling von Strings, die Byte/Buffer-Methoden und Cipher/Hashes sind hiervon natürlich nicht betroffen.

Gruß,
Assertor
Frederik
  Mit Zitat antworten Zitat