![]() |
Re: Regex geht nicht mehr?
Liste der Anhänge anzeigen (Anzahl: 1)
Hab mal ein Bild vom Programm gemacht
wenn man auf dem Button Oben Fehler meldung und unten Warnung beim Erzuegen. |
Re: Regex geht nicht mehr?
Setz doch mal einen Breakpoint, steppe durch und nenne mir die Zeile und Routine, in der der Fehler auftritt.
|
Re: Regex geht nicht mehr?
ich hab mal getestet und bin auf diese Zeile gekommen:
Delphi-Quellcode:
Sobald ich den Breackpoint dahinter setze bringt er den fehler wo ich davon ein bild gemacht hab.
54: code[High(code)] := SubExpressions[High(code)];
55: Breack until MatchAgain; |
Re: Regex geht nicht mehr?
Da ich die Klasse nicht kenne: kann sich SubExpressionCount innerhalb der Schleife ändern? Wenn nicht, setz das SetLength() mal vor die Schleife.
|
Re: Regex geht nicht mehr?
Ne das geht nicht weil ja SubExpressions Die "suchergebnisse" hat und das ist in einem Array gespeichter und ich will Die Daten in ein anderes Array Übertragen.
Hab das trotzdem gemacht funktioniert nicht. |
Re: Regex geht nicht mehr?
Da denke ich später nochmal drüber nach, ich muss jetzt in Bett.
|
Re: Regex geht nicht mehr?
ich auch tschau!
|
Re: Regex geht nicht mehr?
Guten Morgen,
Zitat:
Grüße, Uli |
Re: Regex geht nicht mehr?
Liste der Anhänge anzeigen (Anzahl: 1)
Delphi-Quellcode:
Also würde ich das so Copy/Paste machen dann funktionriet es auch nicht!
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; Positiv: Es kommt keine Fehlernmeldung Negativ: Es gib kein Ergebniss! Also hier mal ein Script das ich unter C# geschrieben hab:
Code:
Das blöde ist dass das nicht genauso ist wie in Delphi geht! :cry:
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"; } } Die MatchCollection (ist bestimmt mit in der Subexpressions eingebaut :gruebel: ) ist sehr hilfreich und der ganze aufbau halt! Aber so funktioiert das ja nicht in delphi! |
Re: Regex geht nicht mehr?
Ich denke mal, wenn Du eine for-Schleife nehmen würdest, bekämst Du auch ein Ergebnis.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:46 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz