bei jedem Aufruf einen Match.
Code: Alles auswählen
Enumeration
#RegularExpression
EndEnumeration
Global Lines
Declare.s GrepText(logcontent.s, greptext.s)
; Logdatei erzeugen
logcontent.s + "Das ist eine Logzeile Test1"+#CRLF$
logcontent.s + "Das ist eine Logzeile Test2"+#CRLF$
logcontent.s + "Das ist eine Logzeile Test3"+#CRLF$
logcontent.s + "Das ist eine Logzeile Test4"+#CRLF$
logcontent.s + "Das ist eine Logzeile Test2 Test4"+#CRLF$
Lines = CountString(logcontent.s, #CRLF$)
; Strings in Logdatei suchen
Debug GrepText(logcontent.s, "Test1")
Debug GrepText(logcontent.s, "Test2")
Debug GrepText(logcontent.s, "Test3")
Debug GrepText(logcontent.s, "Test4")
Procedure.s GrepText(logcontent.s, greptext.s)
; returns all lines in logcontent.s that contain the string in greptext.s
GrepStartTime = ElapsedMilliseconds()
*Buffer = AllocateMemory(7000000)
*Pointer = *Buffer
If CreateRegularExpression(#RegularExpression, ".*"+greptext.s+".*")
If ExamineRegularExpression(#RegularExpression, logcontent.s)
While NextRegularExpressionMatch(#RegularExpression)
CopyMemoryString(RegularExpressionMatchString(#RegularExpression), @*Pointer)
match+1
Wend
EndIf
EndIf
grepline.s = PeekS(*Buffer)
ElapsedTime.d = ElapsedMilliseconds()-GrepStartTime
ElapsedTime.d = ElapsedTime.d/1000
Debug "Grep process took "+ElapsedTime.d+" seconds to find "+match+" Matches in "+lines+" Lines"
FreeRegularExpression(#RegularExpression)
FreeMemory(*Buffer)
ProcedureReturn grepline.s
EndProcedure
Innerhalb von GrepText() habe ich mit Debug geprüft, ob die beiden Strings ( logcontent.s, greptext.s) den korrekten Inhal
haben und dies ist der Fall.Erster Aufruf bringt immer korrektes Ergebnis und bei allen weiteren Aufrufen findet Regex
dann keine Übereinstimmung mehr, obwohl diese gefunden wird, wenn es die erste Suche ist.
Edit:
Ich habs gefunden Da war - wie immer - ein Denkfehler drin und ich hab dann wohl nicht so genau hingesehen.
Ich lade logcontent.s aus dem EditorGadget, aber das Ergebnis aus GrepText wird dann wieder ins EditorGadget geladen.
Bei erneutem Aufruf ist das Logfile also bereits durch die erste Suche gefiltert und somit kann dann auch nichts mehr
gefunden werden.
__________________________________________________
Quote-Tags>Code-Tags
11.03.2017
RSBasic