Vielen Dank für die bisherigen Anworten.
Einen eigenen Parser zu schreiben, wäre hier viel zu aufwändig. Das Ganze ist ja bereits ein Parser für Swiftnachrichten auf der Basis von regulären Ausdrücken. In der Tat ist TPerlRegEx ungefähr halb so schnell, wie mein alter Wrapper. Insgesamt ist die Performance aber zufriedenstellend.
Hier dann mal ein Beispielcode:
Code:
var re : TPerlRegEx;
teststr : UTF8String;
l1 : integer;
begin
try
re := TPerlRegEx.create;
re.Options := [precaseless];
re.State := [];
re.RegEx := '({4:\r\n(?:[^\r\n]*\r\n)*-})';
re.Compile;
// Nun Beispielstring mit Inhalt
// {4:
// :00X:ABCDEFB0123456789
// :00X:ABCDEFB0123456789
// :00X:ABCDEFB0123456789
// :00X:ABCDEFB0123456789
// ...
// -}
// zusammenbauen
TestStr := '{4:'+chr(13)+chr(10);
for l1 := 1 to 500 do
TestStr := TestStr + ':00X:ABCDEFB0123456789' +chr(13)+chr(10);
TestStr := TestStr + '-}';
re.Subject := TestStr;
re.Match;
{ TODO -oUser -cConsole Main : Code hier einfügen }
except
on E:
Exception do
Writeln(E.ClassName, ': ', E.Message);
end;
ReadLn;
end.
Es knallt bei re.match.
Angehängt ist auch ein Beipielprojekt. Ist hoffentlich so korrekt. Delphi XE ist übrigens die Enterprise-Edition.
TRegExErr.zip