praktsich, daß keiner den "kleinen" Fehler bei Verwendung von | bemerkte, wodurch da oftmals FALSE zurückkam, oder eine
Exception
hab da gleich nochmal die Gelegenheit genutzt und alles überarbeitet:
* im Grunde ist jetzt alles auf eine einzige Funktion gekürzt (die allerletze Funktion der
Unit),
welche dann nochmal in 4 Untervrsion aufgesplittet wurde ... drum nicht über die eigenartigen Kommentare in dieser Funktion wundern, diese markieren nur die Unterschiede zu den anderen drei Funktionsversionen (die davor, also die restlichen Internen)
> so hab ich's jetzt bei Änderungen einfacher, da es im Prinzip nur noch eine Funktion zum bearbeiten gibt
* der Fehler mit | wurde behoben
* eine neuer Parameter "~" wurde eingeführt .. ~c wollte ich zwar erst nur reinmachen und da es mit einer
( ) in der Maske umständlich zu lösen gewesen wäre, ist es nun als "Präfix-Parameter" vorhanden und hat noch ein paar Freunde dazubekommen
(sehr viel mehr wird es wohl nicht geben ...
eventuell noch irgendwas wie [a-z] und Co., [edit]grad noch schnell eingebaut[/edit] es wird aber immer bei einer linearen und nicht zusatzinformationspeichernden Funktionsweise bleiben)
Code:
almost all functions are defined with AnsiString, WideString,
UnicodeString (D2009+), PAnsiChar and PWideChar
options flags: cfNotCaseSensitive if not set, then the comparison is case sensitive
cfOnlyWild only * and ? will gibt used as mask chars
cfIgnoreOuterAsterix no values for outer mask chars in result array
(MatchStringEx, MatchStringAll and internal)
mask chars: * any number of arbitrary characters
? an arbitrary character
{abc} {a-z} {a-z0-9ß} ... an spezified character
~d *~d ?~d delete previous result entry
~c *~c ?~c concat the last 2 result entries,
including all characters in between
~a *~a ?~a add clear result entry
| start new mask
\ \* \? \{ \~ \| \\ deactivate an mask char
Function MatchString (Mask, S, Flags=[]): Boolean;
Function MatchText (Mask, S): Boolean;
Function MatchStringEx (Mask, S, Flags=[]): TStringDynArray;
Function MatchStringEx (Mask, S, Flags, Offset, Out EndOffset): TStringDynArray;
Function MatchStringCount(Mask, S, Flags=[]): Integer;
Function MatchStringAll (Mask, S, Flags=[]): TStringDynArray;
[edit 22.06.2009 16°°] das {$IF ersetzt, für ältere Delphi-Versionen
[edit 22.06.2009 19°°] Fehler beseitigt (siehe #30 bis #32)
[edit 22.06.2009 22°°] noch'n Fehler (siehe #33+#34)