Einzelnen Beitrag anzeigen

Benutzerbild von Pseudemys Nelsoni
Pseudemys Nelsoni

Registriert seit: 24. Dez 2002
Ort: Hamburg-Harburg
3.551 Beiträge
 
#1

Kann jemand bei dieser (eigenen)MaskMatch-Funktion helfen?

  Alt 10. Mai 2005, 05:28
hi,

ich ware gerade dabei eine eigene MaskMatch funktion zu schreiben, bis her sieht sie so aus:

Delphi-Quellcode:
function MaskMatch(S, Mask: string): Boolean;
var
  ML, SL, MI, SI: Integer;
begin
  Result := False;
  if (S <> '') and (Mask <> '') then
  begin
    ML := Length(Mask);
    SL := Length(S);
    MI := 0;
    SI := 0;
    while (MI < ML) do
    begin
      Inc(MI);
      Inc(SI);
      while (MI < ML) and (Mask[MI] = '*') and (Mask[MI+1] = '*') do
        Inc(MI);
      if SI <= SL then
      begin
        case Mask[MI] of
          '*': begin
                 if MI < ML then
                 begin
                   Inc(MI);
                   while (SI <= SL) and (S[SI] <> Mask[MI]) do
                     Inc(SI);
                   if MI = ML then
                     Result := (Mask[MI] = S[SI]) and (SI = SL)
                   else Result := Mask[MI] = S[SI];
                 end
                 else Result := True;
               end;
          '?': begin
                 if MI = ML then
                   Result := SI = SL;
               end;
          else begin
                 if MI = ML then
                   Result := (SI = SL) and (S[SI] = Mask[MI])
                 else Result := S[SI] = Mask[MI];
               end;
        end;
      end else
      begin
        Result := (MI = ML) and (Mask[MI] = '*');
        Break;
      end;
      if not Result then
        Break;
    end;
  end;
end;
Sie funktioniert auch schon fast, z.b ergibt das:

Zitat:
if MaskMatch('blubbk12345', '?????k*') then
true usw....

aber das hier funktioniert nicht:

Zitat:
if MaskMatch('khkk', '*kk*') then
Das ergibt False obwohl es True sein müsste...

Das liegt daran das nach "h" mit "k" verglichen wird... hat jemand ne Idee was ich da machen könnte?
Mario
MSN: cyanide@ccode.de
  Mit Zitat antworten Zitat