Ich habe mich mal um eine optimierung bemüht, damit man es auch für längere Sachen nutzen kann:
Code: Alles auswählen
Procedure.s TagFilter2(*Char.Character, Trennzeichen.s)
Protected Text.s = ""
Protected *Position = *Char
While *Char\c
If *Char\c = '<'
Text + PeekS(*Position, (*Char-*Position)/SizeOf(Character))
*Position = #Null
EndIf
If Not *Position And *Char\c = '>'
*Position = *Char + SizeOf(Character)
If Right(Text, 1) <> Trennzeichen
Text + Trennzeichen
EndIf
EndIf
*Char + SizeOf(Character)
Wend
ProcedureReturn Text
EndProcedure
Aufpassen nun nicht den String übergeben sonden den Pointer !
Bei einem Vergleich:
Code: Alles auswählen
Html.s = "<html><head><title>Text 1</title></head><body>Text 2<br><b>Text 3</b></body></html>"
#Size = 100000
Time = ElapsedMilliseconds()
For n = 1 To #Size
TagFilter(Html, "|")
Next
Time1 = ElapsedMilliseconds()-Time
Time = ElapsedMilliseconds()
For n = 1 To #Size
TagFilter2(@Html, "|")
Next
Time2 = ElapsedMilliseconds()-Time
MessageRequester("Testergebnis", "Time1: "+Str(Time1)+Chr(10)+"Time2: "+Str(Time2))
---------------------------
Testergebnis
---------------------------
Time1: 2985
Time2: 594
---------------------------
OK
---------------------------
Um das 6-Fache beschleunigt.
EDIT: ääähhh 5-Fache
