neue Version:
- die Codes aus Beitrag #3 und #22 wurden kombiniert
- es wurde alles auf 2/4 Hauptfunktionen (2x je
ansi und wide) gekürzt
- alle Funktionen je als PAnsiChar-, PWideChar-, AnsiString-, WideString- und UnicodeString-Version
- und ich hoff mal es läuft alles noch
Delphi-Quellcode:
Type TCompareFlags = Set of (cfNotCaseSensitive, cfCanMask);
Function MatchString (Const Mask, S: String; Flags: TCompareFlags = []): Boolean;
Function MatchText (Const Mask, S: String): Boolean;
Function MatchStringEx(Const Mask, S: String; Flags: TCompareFlags = []): TAnsiStringDynArray;
Function MatchStringEx(Const Mask, S: String; Flags: TCompareFlags;
Offset: Integer; Out EndOffset: Integer): TAnsiStringDynArray;
MatchString prüft, ob ein String der Maske entspricht
MatchStringEx kopiert die den Maskenzeichen entsprechenden Teile aus S in ein Array,
wenn der String der Maske entspricht, sonst ist das Array leer
MathText = MathString(..., [cfNotCaseSensitive])
Maskenzeichen:
* und ?
Sonderzeichen:
| Trennzeichen für mehrere Masken
\ zum maskieren von *, ?, | und natürlich \
dank des neuen Offsets kann nun auch sequentiell gesucht werden:
(das von
da Drüben ist ja nicht sooo der Bringer)
Delphi-Quellcode:
Var S, Se: String;
i, i2: Integer;
X: TStringDynArray;
S := 'irgendwas_FesterTeil1_VeränderlicherTeil1_FesterTeil2_irgendwas'
+ 'irgendwas_FesterTeil1_VeränderlicherTeil2_FesterTeil2_irgendwas'
+ 'irgendwas_FesterTeil1_VeränderlicherTeil3_FesterTeil2_irgendwas';
i := 1;
i2 := -1;
While True do Begin
X := MatchStringEx('*FesterTeil1*FesterTeil2*', S, [], i, i);
If X = nil Then Break;
Se := X[1];
Inc(i2);
ShowMessage('Se[' + IntToStr(i2) + '] = "' + Se + '"');
End;
[add]
! ich hab grad eben mitbekommen, daß es ein Problem mit | gibt ... ansonsten scheint es zu laufen
[edit 22.06.2009]
Anhang entfernt > aktuelle Version siehe Beitrag #26