Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.063 Beiträge
Delphi 12 Athens
|
AW: MD5 - Unterschiede zw. Indy und DEC6
22. Mär 2024, 21:59
Nja, eine gute Überladung von UTF8String mit String+RawByteString lässt sich leider nicht bilden, da es bei "anderen" AnsiString-Typen keinen wirklich sicheren Pfad ergibt,
außer man würde RawByteString und String/UnicodeString nehmen und intern immer nach UTF-8 konvertieren, was aber den Leuten die Möglichkeit nehmen würde, auch andere Konvertierungen zu nutzen.
Am Einfachsten wäre wohl eine Standardfunktion, mit Typ UTF8String (ohne Überladungen), da das vermutlich der häufigste/nützlichste Fall sein dürfte und Delphi alle übergebenen Stringtypen automatisch konvertieren würde,
und daneben eine andere überladene Funktion mit RawByteString, String/UnicodeString, TBytes und Pointer+Len, für alle anderen Fälle und Daten/Strings in allen möglichen Datenformaten, welche ohne automatische Konvertierung behandelt werden.
Alternativ eben nur die letzte überladene Parameter-Variante, mit einem zusätzlichen Parameter, welcher das interne Encoding vorgibt, in was vor der Hash-Berechnung konvertiert würde, also z.B. ein Enum oder TEncoding, mit Default auf UTF-8.
Alles in Richtung TBytes und oder Pointer (RawByteString als Kopie mit SetCodePage oder einfach an String/UnicodeString übergeben, sowie den UnicodeString mit TEncoding in ein TBytes und am Ende dann daraus der Hash)
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
Geändert von himitsu (22. Mär 2024 um 22:05 Uhr)
|