Also...
Mein Fehler war, das ich das Exec vergessen hatte^^ funzt jetzt.
Nun habe ich noch folgende Funktion geschrieben, um eine Maske mit einfacher %Platzhalter% Syntax RegExpr-kopatibel zu machen und gleichzeitig (für den zweiten schritt, das einsetzen in die zweite Maske, eine Tabelle ID:Variable anzulegen)
Delphi-Quellcode:
TData = record
Name: String;
ID: Integer;
end;
TDataTable = array of TData;
function Mask2RegExp(Mask: String; var Table: TDataTable):String;
var Akt, ID: Integer;
S, R: String;
begin
SetLength(Table,0);
S:=Mask;
Akt:=Pos('%',S);
ID:=1;
R:='';
while Akt>0 do
begin
SetLength(Table,Length(Table)+1);
Table[Length(Table)-1].ID:=ID;
R:=R+Copy(S,1,Akt-1);
Delete(S,1,Akt);
Table[Length(Table)-1].Name:=Copy(S,1,Pos('%',S)-1);
R:=R+'(.*?)';
Delete(S,1,Pos('%',S));
Akt:=Pos('%',S);
Inc(ID);
end;
if R[1]='(' then R:='^'+R;
R:=R+S;
if Length(S)=0 then R:=R+'$';
Result:=R+S;
end;
oder geht das auch einfacher?
Die Einsetzen-funktion sieht nun wie folgt aus:
Delphi-Quellcode:
function InsertIntoString(Mask: String; Table: TDataTable; R: TRegExpr):String;
var i:Integer;
S: String;
begin
S:=Mask;
for i:=0 to Length(Table)-1 do
S:=StringReplace(S,'%'+Table[i].Name+'%',R.Match[Table[i].ID],[rfReplaceAll]);
Result:=S;
end;
So wird aus
Value:
DP ist toll
Mask1: %wer% ist %wie%
Mask2: Angeblich ist %wer% %wie%
dann endlich: Angeblich ist
DP toll
JUHUHUUUUU
ich bastel das noch schön in ne Klasse, und dann kommst in die CodeLib^^