Einzelnen Beitrag anzeigen

Benutzerbild von glkgereon
glkgereon

Registriert seit: 16. Mär 2004
2.287 Beiträge
 
#9

Re: Reguläre Ausdrücke...wie?

  Alt 16. Jun 2005, 15:42
ich hab mal versucht folgendes zu basteln:

ein user gibt ja lieber %%Titel%% und %%Album%% statt (\w+) und $1 ein...daher möchte ich "userfreundlich" in "programmfeundlich" konvertieren

dazu hab ich folgenden code...und der sollte funzen!!!
Edt_Simple_InMask ist ein string wie 'ab - %%cd%% - ef'
Edt_Simple_OutMask ist ein string wie '%%cd%% - ab - ef'
wobei die "variablen" dadrin gleich sein müssen...

Edt_Template enthält nachher das Template
Edt_Struktur enthält nachher die "suchformel" oder wie immer man das nennen soll...

ich muss noch "spezialvariablen" einbauen (zb. für dateiendung...)

Delphi-Quellcode:
procedure TForm3.Button1Click(Sender: TObject);
var Vars: TStringList;
    InMask, OutMask, AktVar: String;
    NextPos: Integer;
begin
  InMask:=Edt_Simple_InMask.Text;
  OutMask:=Edt_Simple_OutMask.Text;
  Vars:=TStringList.Create;
  while Pos('%%',InMask)>0 do
    begin
    NextPos:=Pos('%%',InMask);
    Vars.Add(copy(InMask,NextPos+2,PosEx('%%',InMask,NextPos+2)-NextPos-2));
    Delete(InMask,NextPos,PosEx('%%',InMask,NextPos+2)+2-NextPos);
    Insert('(\w+)',InMask, NextPos);
    end;
  Edt_Struktur.Text:='^'+InMask+'$';


  while Pos('%%',OutMask)>0 do
    begin
    NextPos:=Pos('%%',OutMask);
    AktVar:=copy(OutMask,NextPos+2,PosEx('%%',OutMask,NextPos+2)-NextPos-2);
    Delete(OutMask,NextPos,PosEx('%%',OutMask,NextPos+2)+2-NextPos);
    Insert('$'+IntToStr(Vars.IndexOf(AktVar)+1),OutMask, NextPos);
    end;

  Edt_Template.Text:=OutMask;

  Vars.Free;
end;
»Unlösbare Probleme sind in der Regel schwierig...«
  Mit Zitat antworten Zitat