| |
|
|
Jörg Sellmeyer | Gibts una schnellere/kürzere Versión como que aquí? KompilierenMarcaSeparaciónSet("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$(a class=s2>)
WaitInput
|
|
|
| Windows XP SP2 XProfan X4... und hier mal was ganz anderes als Profan ... | 08.08.2008 ▲ |
|
|
|
|
| tal vez en lugar de WhileLoop Len(Texto$)
var c&=len(texto$)-1 whileLoop c&,1,-1
y en lugar de Ergebnis$ = Ergebnis$ + Mid$(Texto$,&Loop,1) + Trenner$
Ergebnis$ = en el$(trenner$,texto$,&loop)
bin desafortunadamente grad zeitlich muy eingespannt... |
|
|
| |
|
|
|
| Apéndice: Bug en el XProfan: imprimir sizeOf(explode("12:34",":")) son 4 de en lugar de 2. Mir es klar por qué lo el tut (sizeof en long), correcto ists pero no.
Apéndice: imprimir sizeOf(explode("",".")) son (natürlich entonces) auch 4 de, en lugar de <b><u>NULL</u></b> (aber el con el fehlenden NULL en Explode wünscht Roland sí así) |
|
|
| |
|
|
|
Jörg Sellmeyer | IF
Apéndice: Bug en el XProfan: imprimir sizeOf(explode("12:34",":")) son 4 de en lugar de 2. Mir es klar por qué lo el tut (sizeof en long), correcto ists pero no.
¿Por qué Bug? Von qué willst Usted porque como el Größe ermitteln? Von el Función SizeOf? Oder media Usted Profano debería como con uno Fehlermeldung reagieren?
Muß ahora veces Su Ejemplo testen. |
|
|
| Windows XP SP2 XProfan X4... und hier mal was ganz anderes als Profan ... | 08.08.2008 ▲ |
|
|
|
|
| Explode Ergebnis: Dynamisches String-Array
explode liefert una Array zurück, Arrays puede en Arrays transferencia voluntad. Ein sizeOf en una Array debería el número el Einträge zurückliefern - no Bandbreite.
Mir es klar como Roland el gelöst ha, aber hier fehlen simplemente todavía una Paar Ausnahmendeklarationen. |
|
|
| |
|
|
|
Jörg Sellmeyer | So hier veces una Statistikdurchlauf. Seltsamerweise Es el erste Versión beim ersten Durchlauf ähnlich rápidamente, como Nr zwei. En más Durchläufen braucht ellos fast doppelt así largo. Su Versión (#3) scheint el schnellst a ser. Yo vergesse siempre otra vez, daß lo Ins$ überhaupt son. KompilierenMarcaSeparaciónSet("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
Ergebnisse:
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.2008 ▲ |
|
|
|
|
RGH | @IF: Zu SizeOf() de el Ayuda:
@SizeOf(V) V : Name uno Variables Ergebnis: Longint
Beachte el Descripción des Parámetros! Man debería el Función ya así nutzen, como ellos pensamiento es y no cómo ellos tal vez gerne hätte! Für de otra manera como una Variablenbezeichner como Parámetro Es el Función schlicht no definiert.
Saludo 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.2008 ▲ |
|
|
|
|
Jac de Lad | |
|
|
|
| Zerlege3 hay ya, como viel Tiempo benötigt Su "Zerlege4" en el Ggs. para Zerlege3 Jac? |
|
|
| |
|
|
|
| Apéndice: @Jörg: Posesiones ni Concepto welche tal vez más rápido es como todos otro reciente hier geposteten Algos.
Den String simplemente en una WideString konvertieren y por Translate el Nullen sustituir...
Somit wäre el Meiste en native Abarbeitung gelagert, also muy fix... - y uno benötigt no Bucle mehr. |
|
|
| |
|
|
|
Jörg Sellmeyer | Jacs Versión es algo más rápido como mi beiden, aber langsamer como el de 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
Jetzt voluntad Todavía el WideString-Variante testen. Kann alguien erklären, por qué el erste Durchgang deutlich más rápido es? Es auch así, si yo en lugar de PutClip, el jeweils sowort en el Schirm bringe. Yo hätte más esperado, daß lo más rápido se.
Apéndice: Super! MultiByteToWideChar es:
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
Oben en el ersten Contribución Yo todos Versionen zusammengefaßt. |
|
|
| Windows XP SP2 XProfan X4... und hier mal was ganz anderes als Profan ... | 08.08.2008 ▲ |
|
|
|
|
Jac de Lad | @IF: Sombrero se sí ya hecho. |
|
|
| 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.2008 ▲ |
|
|
|