AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Kann jemand bei dieser (eigenen)MaskMatch-Funktion helfen?
Thema durchsuchen
Ansicht
Themen-Optionen

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

Ein Thema von Pseudemys Nelsoni · begonnen am 10. Mai 2005 · letzter Beitrag vom 10. Mai 2005
 
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
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:21 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz