Español
Foro

String en einzelne Buchstaben zerlegen

 

Jörg
Sellmeyer
Gibts una schnellere/kürzere Versión como que aquí?
KompilierenMarcaSeparación
Set("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...
 
08.08.2008  
 



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í)
 
08.08.2008  
 




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.
 
08.08.2008  
 




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ón
Set("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

KompilierenMarcaSeparación
Proc Zerlege3

    Parameters t$,u$
    declare e$,f&
    f&=Addr(t$)

    whileloop 0,Len(t$)-1

        e$=e$+Char$(f&,&Loop,1)+u$

    endwhile

    Return e$

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  
 



Zerlege3 hay ya, como viel Tiempo benötigt Su "Zerlege4" en el Ggs. para Zerlege3 Jac?
 
08.08.2008  
 



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.
 
08.08.2008  
 




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  
 




Respuesta


Título del Tema, max. 100 Signo.
 

Systemprofile:

Kein Systemprofil creado. [anlegen]

XProfan:

 Contribución  Font  Smilies  ▼ 

Bitte registro en una Contribución a verfassen.
 

Tema opciones

5.302 Views

Untitledvor 0 min.
RudiB.26.04.2022
Manfred Barei18.11.2018
Heiko Dix13.11.2012
Frank Vorholzer24.05.2012

Themeninformationen



Admins  |  AGB  |  Applications  |  Autores  |  Chat  |  Política de Privacidad  |  Descargar  |  Entrance  |  Ayuda  |  Merchantportal  |  Pie de imprenta  |  Mart  |  Interfaces  |  SDK  |  Services  |  Juegos  |  Búsqueda  |  Support

Ein Projekt aller XProfan, el lo son!


Mi XProfan
Privado Noticias
Eigenes Ablageforum
Temas-Merkliste
Eigene Beiträge
Eigene Temas
Zwischenablage
Cancelar
 Deutsch English Français Español Italia
Traducciones

Política de Privacidad


Wir uso Cookies sólo como Session-Cookies wegen el technischen Notwendigkeit y en uns hay no Cookies de Drittanbietern.

Wenn du hier en unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung de Informationen en unseren Cookies en XProfan.Net a.

Weitere Informationen a unseren Cookies y dazu, como du el Kontrolle darüber behältst, findest du en unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Yo möchte no Cookie