| |
|
|
Jörg Sellmeyer | Gibts a faster/kürzere Version as that here? CompileMarkSeparationSet("Decimals",0)
Proc Zerlege1
Parameters Text$,Trenner$
Declare Ergebnis$
WhileLoop Len(Text$)
Ergebnis$ = Ergebnis$ + Mid$(Text$,&Loop,1) + Trenner$
Wend
Return Ergebnis$
EndProc
Proc Zerlege2
Parameters Text$,Trenner$
Declare Ergebnis$
WhileLoop Len(Text$)
Ergebnis$ = Ergebnis$ + SubStr$(Text$,&Loop) + Trenner$
Wend
Return Ergebnis$
EndProc
Proc Zerlege3
Parameters Text$,Trenner$
Declare Ergebnis$,c&
c&=len(text$)-1
WhileLoop c&,1,-1
Text$ = Ins$(Trenner$,Text$,&loop)
Wend
Return Text$
EndProc
Proc Zerlege4
Parameters t$,u$
declare e$,f&
f&=Addr(t$)
whileloop 0,Len(t$)-1
e$=e$+Char$(f&,&Loop,1)+u$
endwhile
Return e$
endproc
Def MultiByteToWideChar(6) !"Kernel32","MultiByteToWideChar"
Proc Zerlege5
Parameters Text$,Trenner$
Declare c&,b#
c& = Len(Text$) * 2 + 1
Dim b#,c&
MultiByteToWideChar(0,0,Addr(Text$),Len(Text$),b#,c& )
Text$ = Translate$(Char$(b#,0,c& - 1),"z","|")
Return Text$
EndProc
Cls
Var a& = &GetTickCount
ClearClip
PutClip "Z01 Z02 Z03 Z04 Z05
"
WhileLoop 5
Zerlege1(MkStr$("ABCDEFGHIJKLMNOP",200),"|")
PutClip Str$(&GetTickCount - a&) + " "
a& = &GetTickCount
Zerlege2(MkStr$("0123456789012345",200),"|")
PutClip Str$(&GetTickCount - a&,) + " "
a& = &GetTickCount
Zerlege3(MkStr$("QRSTUVWXYZÄÖÜß@A",200),"|")
PutClip Str$(&GetTickCount - a&) + " "
a& = &GetTickCount
Zerlege4(MkStr$("0987654321098765",200),"|")
PutClip Str$(&GetTickCount - a&) + " "
a& = &GetTickCount
Zerlege5(MkStr$("qjeudkfotlgkcjdh",200),"|")
PutClip Str$(&GetTickCount - a&) + "
"
WindowTitle Str$(&Loop)
Wend
Print GetClip$(on class=s2>)
WaitInput
|
|
|
| Windows XP SP2 XProfan X4... und hier mal was ganz anderes als Profan ... | 08/08/08 ▲ |
|
|
|
|
| Perhaps instead of WhileLoop Len(Text$)
var c&=len(Text$)-1 whileLoop c&,1,-1
and instead of Result$ = Result$ + Mid$(Text$,& Loop,1) + Trenner$
Result$ = in that$(trenner$,Text$,&loop)
be unfortunately strain timewise very eingespannt... |
|
|
| |
|
|
|
| Nachtrag: bow in the XProfan: print sizeOf(explode("12:34",":")) gives 4 from instead of 2. i'm clear and so it the does (sizeof on long), correctly. ists but not.
Nachtrag: print sizeOf(explode("",".")) gives (naturally then) too 4 from, instead of <b><u>NULL</u></b> (but with the the missing NULL with Explode wish Roland Yes so) |
|
|
| |
|
|
|
Jörg Sellmeyer | iF
Nachtrag: bow in the XProfan: print sizeOf(explode("12:34",":")) gives 4 from instead of 2. i'm clear and so it the does (sizeof on long), correctly. ists but not.
Why bow? From what want Thou since the Size detect? from the function SizeOf? or mean You Profan ought to there with of/ one Error Message react?
mandatory now time your example testing. |
|
|
| Windows XP SP2 XProfan X4... und hier mal was ganz anderes als Profan ... | 08/08/08 ▲ |
|
|
|
|
| Explode Result: Dynamisches String-aray
explode supply one aray back, Arrays can in Arrays transfer go. One sizeOf on one aray ought to The Number of Entries zurückliefern - no bandwidth.
i'm clear How Roland the resolved has, but here are missing simply another couple Ausnahmendeklarationen. |
|
|
| |
|
|
|
Jörg Sellmeyer | so here time one Statistikdurchlauf. Seltsamerweise is the first Version at first Durchlauf similar quick, How Nr two. with further Durchläufen need tappt im dunkeln almost twice such a long time. your Version (#3) shining The schnellst To his. I forget over ands over again, that it in that$ at all gives. CompileMarkSeparationSet("Decimals",0)
Proc Zerlege1
Parameters Text$,Trenner$
Declare Ergebnis$
WhileLoop Len(Text$)
Ergebnis$ = Ergebnis$ + Mid$(Text$,&Loop,1) + Trenner$
Wend
Return Ergebnis$
EndProc
Proc Zerlege2
Parameters Text$,Trenner$
Declare Ergebnis$
WhileLoop Len(Text$)
Ergebnis$ = Ergebnis$ + SubStr$(Text$,&Loop) + Trenner$
Wend
Return Ergebnis$
EndProc
Proc Zerlege3
Parameters Text$,Trenner$
Declare Ergebnis$,c&
c&=len(text$)-1
WhileLoop c&,1,-1
Text$ = Ins$(Trenner$,Text$,&loop)
Wend
Return Text$
EndProc
Cls
Var a& = &GetTickCount
ClearClip
PutClip "Z01 Z02 Z03
"
WhileLoop 10
Zerlege1(MkStr$("ABCDEFGHIJKLMNOP",200),"|")
PutClip Str$(&GetTickCount - a&) + " "
a& = &GetTickCount
Zerlege2(MkStr$("0123456789012345",200),"|")
PutClip Str$(&GetTickCount - a&,) + " "
a& = &GetTickCount
Zerlege3(MkStr$("QRSTUVWXYZÄÖÜß@A",200),"|")
PutClip Str$(&GetTickCount - a&) + "
"
WindowTitle Str$(&Loop)
Wend
Print GetClip$()
f='./../../function-references/XProfan/waitinput/'>WaitInput
Results:
Z01 Z02 Z03
375 250 187
516 406 375
875 515 360
875 500 375
875 516 375
875 500 375
891 500 375
875 500 375
890 500 375
875 516 375
|
|
|
| Windows XP SP2 XProfan X4... und hier mal was ganz anderes als Profan ... | 08/08/08 ▲ |
|
|
|
|
RGH | @iF: To SizeOf() from the Help:
@SizeOf(V) V : name of/ one variables Result: Longint
mind The Description the Parameters! one ought to The function already so benefit, How tappt im dunkeln virtual is and not How one tappt im dunkeln Perhaps gladly had! for something other as a Variablenbezeichner as Parameter is the function crept not definiert.
Greeting Roland |
|
|
| Intel Duo E8400 3,0 GHz / 4 GB RAM / 1000 GB HDD - ATI Radeon HD 4770 512 MB - Windows 7 Home Premium 32Bit - XProfan X4 | 08/08/08 ▲ |
|
|
|
|
Jac de Lad | |
|
|
|
| Zerlege3 there already, How plenty Time needed your "Zerlege4" in the Ggs. to that Zerlege3 Jac? |
|
|
| |
|
|
|
| Nachtrag: @Jörg: have another idea which Perhaps faster is as any others recent here geposteten Algos.
whom String simply in a WideString konvertieren and by Translate The nobodies supplant...
accordingly would the Meiste on native Abarbeitung encamped, means very fix... - and one needed no Loop More. |
|
|
| |
|
|
|
Jörg Sellmeyer | Jacs Version is something faster as my both, but slower as The of David:
Z01 Z02 Z03 Z04
375 266 171 344
782 500 359 484
984 516 375 469
969 500 375 469
969 515 360 437
703 250 218 360
829 515 360 375
625 250 187 234
609 438 375 469
969 515 375 469
now I will yet The WideString-Variante testing. can someone explain, Why the first Passage explicit faster is? this is too so, if I instead of PutClip, the each sowort on the screen bring. I had sooner expects, that it faster becomes.
Nachtrag: super! MultiByteToWideChar is it:
Z01 Z02 Z03 Z04 Z05
375 250 203 266 15
265 250 297 469 0
516 500 375 468 0
516 500 375 469 15
515 500 391 469 0
supra in the first Posting have I any versions zusammengefaßt. |
|
|
| Windows XP SP2 XProfan X4... und hier mal was ganz anderes als Profan ... | 08/08/08 ▲ |
|
|
|
|
Jac de Lad | @iF: has itself already Done. |
|
|
| Profan² 2.6 bis XProfan 11.1+XPSE+XPIA+XPRR (und irgendwann XIDE) Core2Duo E8500/T2250, 8192/1024 MB, Radeon HD4850/Radeon XPress 1250, Vista64/XP | 08/08/08 ▲ |
|
|
|