Diejenigen Zwei, welche das heute/vorhin runtergeladen haben ... bitte "dringend" updaten.
Hatte leider 'nen Fehler an falscher Stelle behoben und es somit nicht grad verbessert.
Leider fiel der Fehler nicht direkt auf, da dieser Codeteil seltener verwendet wird.
In der Resitze-Prozedur hatte ich hier das vermeintlich falsche i2 durch i ersetzt
Delphi-Quellcode:
If (i = 0) and Assigned(_Encoding) Then i2 := 1;
SetLength(_Map, i); // set length and make unique
obwohl es andersrum richtig gewesen wäre.
Delphi-Quellcode:
If (i2 = 0) and Assigned(_Encoding) Then i2 := 1;
SetLength(_Map, i2); // set length and make unique
Somit wurden eventuell höhere Bits ausversehn gelöscht, wenn man 2 Sets irgenwie miteinander verrechnete.
Nja, wenigstens fiel der Fehler grad auf, als ich eben meinen ersten Allerenumerator gebastelt hatte und mich über falsche Ergebnisse wunderte.
So, Fehler behoben und ab nur kann man, dank des Enumerators, auch noch das nette For-In benutzen.
Delphi-Quellcode:
Var C: Char;
For C in HexNumerals do S := S + C;
// S = '0123456789ABCDEFabcdef'
// da HexNumerals = ['0'..'9', 'A'..'F', 'a'..'f']
[edit 11.02.]
Code etwas aufgeräumt und neue Funktionen:
LowChar = niedrigstes Zeichen im Set
HighChar = höchstes Zeichen im Set
CountChars = Anzahl der Zeichen im Set
ContainsAnyChar = prüft ob irgendeines der Zeichen des SETS im String vorkommt
ContainsAllChars = prüft alle Zeichen des SETS im String mindestens einmal vorkommen
ContainsOnlyThisChars = prüft ob alle Zeichen des Strings im SET vorkommen
(nur der Name gefällt mir irgendwie nicht )
[add]
Es gibt nun auch eine Shift-Funktion (siehe Demo-Projekt),
aber fragt mich bitte nicht, wofür man diese gebrauchen kann.