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;