Also, wie ich das sehe, ist dein Code mit 3860 Zeilen doch recht lang.
Auch noch, wenn man die etlichen REMs (Kommentare) abzieht.
Es geht ja in der Hauptsache darum einen Text zwischen 2 spitzen Klammern
auszufiltern z.b.
12-Gefährdung des Kindeswohl
Diese Texte sollen dann in eine separate Textdatei reingeschrieben werden.
Ob jetzt immer in eine neue Textdatei oder als Append drangehängt oder
Nummer (hier 12) mit neuem Text ersetzen, ist erstmal zweitrangig.
Da wäre es in der Tat besser, ganz neu anzufangen. Die Zeit, die du brauchst,
obigen Code 1:1 zu PB zu konvertieren, wird wesentlich länger sein. Obendrein
sollen dann später auch noch die GOTOs durch Proceduren ersetzt werden, was
dann auch noch zusätzliche Zeit erfordert.
Der Code des Multiuser-Basic vom THEOS-Systems ist ja auch deshalb mit den vielen
normalen Stringbefehlen, wie Left$(), Mid$() usw. aufgebläht, da das System keine
Regulären Ausdrücke kennt.
Ich kenne das nur zu gut, als ich in den Anfang Neunziger Jahre eine Messwerte-Datei
von einem Messgerät von meinem Bruder bekommen hatte. Da hatte ich auch mit
GW-Basic zwei Wochen lang gebastelt, um 2 Messwerte + Datum/Zeit aus jeweils
einer Zeile zu extrahieren und diese in eine neue Datei zu schreiben. Die Werte
standen dummerweise nicht immer an den gleichen Stellen. Trotzdem war es noch
effektiv, denn vorher mußte sich jemand hinsetzen, um mit einem einfachen Editor
die Daten rauszufrickeln. Der saß dann auch jeweils einige Tage daran. Dank meines
Programms war das nachher nur noch eine Sekundensache.
Heute würde ich darüber lachen und hätte es in einem Tag dank regulärer Ausdrücke
fertig.
Um dir mal ein einfaches Beispiel zu geben :
"Heinz hat im Mittwochslotto 10 € und im Samstagslotto 20 € gewonnen"
"Brigitte hat im Mittwochslotto 0 € und im Samstagslotto 40 € gewonnen"
Jetzt versuche mal, mit deinen normalen Stringbefehlen, wie Mid$(), Left$() usw.
die Namen und die Gewinnbeträge rauszufiltern. Und dann mache das mal mit
den RegularExpression von PB. So etwa :
Code: Alles auswählen
Dim Saetze$(2)
Saetze$(0) = "Heinz hat im Mittwochslotto 10 € und im Samstagslotto 20 € gewonnen"
Saetze$(1) = "Brigitte hat im Mittwochslotto 0 € und im Samstagslotto 40 € gewonnen"
If CreateRegularExpression(0, "[0-9]{1,}")
For k = 0 To 1
If ExamineRegularExpression(0, Saetze$(k))
While NextRegularExpressionMatch(0)
Debug Left(Saetze$(k), 9) + " : " + "Gewinn : " + RegularExpressionMatchString(0) + " € Position : " + Str(RegularExpressionMatchPosition(0)) + " Stellen : " + Str(RegularExpressionMatchLength(0))
Wend
EndIf
Next
Else
Debug RegularExpressionError()
EndIf
Da wirst schnell erkennen, daß du bei den reg. Ausdrücken wesentlich weniger
Schreibarbeit und Zeitaufwand hast.
Wenn du einmal die Nutzung der regulären Ausdrücke begriffen hast, wirst du
sie später lieben.