Delphi-Quellcode:
SetLength(code, 0); //Array initialisieren
with TPerlRegEx.Create(nil) do
...
if Match then
begin
repeat
nOldIndex := Length(code);
setlength(code, nOldIndex + SubExpressionCount); // warum dann noch + SubExpressionCount
for n := 0 to SubExpressionCount - 1 do
code[nOldIndex + n] := SubExpressions[n]; // warum nicht nur n?
until not MatchAgain; // heist das nicht so viel wie nächster treffer
result := verarbeitung(code,pos);
end;
Also würde ich das so Copy/Paste machen dann funktionriet es auch nicht!
Positiv: Es kommt keine Fehlernmeldung
Negativ: Es gib kein Ergebniss!
Also hier mal ein Script das ich unter C# geschrieben hab:
Code:
private void ... ;
{
MatchCollection mc;
Match m;
int[] count = new int[20];
int[] position = new int[20];
Regex r = new Regex("{(?<contents>[^}]*)}");
mc = r.Matches("{Text1} und {Text2}");
//Suchergebnisse in das vorgegebene Array Speichern
for (int i = 0; i < mc.Count; i++)
{
count[i] = mc[i].Length;
position[i] = mc[i].Index;
}
//auslesen der Arrays
for (int i = 0; i < mc.Count; i++)
{
richTextBox1.Text += "Gefundene Position:" + position[i] + "\n";
richTextBox1.Text += "Länge vom String:" + count[i] + "\n";
}
}
Das blöde ist dass das nicht genauso ist wie in Delphi geht!
Die MatchCollection (ist bestimmt mit in der Subexpressions eingebaut
) ist sehr hilfreich und der ganze aufbau halt!
Aber so funktioiert das ja nicht in delphi!