au ja schwierigen code schreiben7x7 hat geschrieben:Spitzencode. Jetzt hat es 'Tombi' als Anfänger mit Sicherheit kapiert wie es geht.

aber mal im ernst ich hab mal mk-soft's code hergenommen um ihn ein kleines bisschen zu modifizieren, der is wirklich schnell
Code: Alles auswählen
EnableExplicit
Global text1$
text1$ = "Stringfield ist eine extrem langsame Funktion"
text1$ + " und wenn du weiter mit einer Array arbeiten willst,"
text1$ + " dann könnte dies schneller sein. Das solltest du mal Testen !"
Dim Woerter.s(0)
Procedure.s StringFieldFast(text.s, separator.s, index.l)
Protected *mem.Character = @text
Protected *posi.character = *mem - SizeOf(character)
Protected anz, pos
Protected zeichen = Asc(separator)
anz = CountString(text, separator)
anz + 1
Repeat
If *mem\c = zeichen
*posi + SizeOf(character)
pos + 1
If pos=index
ProcedureReturn PeekS(*posi, (*mem - *posi) / SizeOf(character))
EndIf
*posi = *mem
EndIf
*mem + SizeOf(character)
Until *mem\c = 0
EndProcedure
Define.l c,i
Define.l t1,t2,t3
t1=GetTickCount_()
For c=0 To 10000
For i = 0 To 20
StringFieldFast(text1$, " " , i)
Next
Next
t2=GetTickCount_()
For c=0 To 10000
For i = 0 To 20
StringField(text1$,i, " " )
Next
Next
t3=GetTickCount_()
Debug t3-t2
Debug t2-t1