Einzelnen Beitrag anzeigen

Monday

Registriert seit: 24. Aug 2012
103 Beiträge
 
FreePascal / Lazarus
 
#24

AW: Muster in String

  Alt 29. Nov 2015, 11:26
Jetzt hab ich was geschrieben, das wohl auch funktioniert. Vielleicht kann das auch jemand so gebrauchen:

Zum Testen eine Form mit Memo1 und Button1. Der . dient als Platzhalter.

Code:
function vergleich(erster,zweiter: string): string;
var
  a: integer;
begin
  Result := '';

  if length(erster) <> length(zweiter) then begin Result := ''; exit; end;

  for a := 1 to Length(erster) do begin
    if erster[a] = zweiter[a] then begin
      Result := Result+erster[a];
    end;
    if erster[a] <> zweiter[a] then begin
      Result := Result+'.';
    end;
  end;
end;

function mustersuche(erster, zweiter: string): string; // Eigentliche FUnktion
var
  a,max: integer;
  temp_zweiter,temp, anzeige,muster_temp: string;
begin
 temp := '';
 for a := 1 to Length(erster) do begin  temp := temp + '.'; end;

 temp_zweiter := temp + zweiter + temp;
 max := length(temp_zweiter)-length(temp);

  for a := 0 to max-1 do begin
     Delete(temp_zweiter, 1, 1);
     anzeige := Copy(temp_zweiter,1,length(temp));

     muster_temp := vergleich(erster,anzeige);
     muster_temp := StringReplace(muster_temp, '.', '', [rfReplaceAll, rfIgnoreCase]);
     if muster_temp <> '' then begin
       Form1.Memo1.Lines.Add(anzeige + ' Gefundenes Muster -> '+ vergleich(erster,anzeige)); // Nur Treffer ansehen
     end;
     //Form1.Memo1.Lines.Add(anzeige + ' Gefundenes Muster -> '+ vergleich(erster,anzeige)); //kompletten vorgang ansehen
  end;
end;



procedure TForm1.Button1Click(Sender: TObject);
begin
  mustersuche('a1b2cd3ef','ghi1j2kl3'); // ergibt => .1.2..3..
  mustersuche('a123bcdef','ghij123kl'); // ergibt => .123.....

  ShowMessage('Fertig');
end;
  Mit Zitat antworten Zitat