Allgemeine Fragen zur PROFAN Programmierung

Views (Heute): 249386 (10822)

| Suchen
| Zurück zur Übersicht

Autor | Thema: String auseinander nehmen?
Sascha Willecke
| Datum:29.10.01 15:23 (sascha@willecke-net.de) |
Hallo, ich habe einen string in dieser form: SX100SY100BX50BY200PU10 Nun möchte ich diesen String so zerlegen, dass ich folgendes erhalte: SX=100 SY=100 BX=50 BY=200 PU=10 Ist das möglich? Gruß Sascha
Andreas Miethe
| Datum:29.10.01 18:19 (andreas@andreas-miethe.de) |
Hallo Sasche, dafuer gibt es in Profan diverse Stringfunktionen ! Ein Beispiel : Declare S$,x%,a% Declare Search$,Find$,F$ x% = 2 S$ = "SX100SY100BX50BY200PU10" F$ = S$ Search$ = "SX,SY,BX,BY,PU" Whilenot x% = 6 'erstmal filtern und Semikolon einfuegen 'INS$ fuegt String in String ein 'INSTR ermittelt die Position 'SUBSTR$ ermittelt Teilstring Find$ = Ins$(";",F$,@Instr(Substr$(Search$,x%,","),S$)+a%) F$ = Find$ Inc a% Inc x% EndWhile Print Find$ Print X% = 1 Whilenot x% = 6 'Ergebnis = 'die ersten beiden Zeichen + '= + 'die rechstlichen Zeichen Print Mid$(Substr$(Find$,x%,";"),1,2)+\ "="+\ Mid$(Substr$(Find$,x%,";"),3,Len(Substr$(Find$,x%,";"))) Inc x% EndWhile Waitinput End
Thorsten
| Datum:29.10.01 18:44 (mrk@mrk-soft.de) |
Das gehört wohl mehr ins forum "Einsteiger", den mit ein bisssel überlegung ist das recht simpel nichtsdesto trotz:
    'string auseinandernehmen, (R) MRK-Soft 2001
    'profan 7.0

    'lokal für alle declarieren
    declare sx%, sy%, bx%, by%, pu%

    proc STW
     parameters quell$
     declare zl1$, zl2$, zl1%
     decimals 0
     zl1% = 1
     While zl1% < len(quell$)
      zl1$ = zl1$ + upper$(mid$(quell$,zl1%,1))
      zl2$ = str$(val(mid$(quell$,zl1%+1,3)))
      If equ$(zl1$,"SX")
       sx% = val(zl2$)
       add zl1%,len(zl2$)
       zl1$ = ""
      Endif
      If equ$(zl1$,"SY")
       sy% = val(zl2$)
       add zl1%,len(zl2$)
       zl1$ = ""
      Endif
      If equ$(zl1$,"BX")
       bx% = val(zl2$)
       add zl1%,len(zl2$)
       zl1$ = ""
      Endif
      If equ$(zl1$,"BY")
       by% = val(zl2$)
       add zl1%,len(zl2$)
       zl1$ = ""
      Endif
      If equ$(zl1$,"PU")
       pu% = val(zl2$)
       add zl1%,len(zl2$)
       zl1$ = ""
      Endif
     inc zl1%
     Wend
    endproc

    'und das testprogramm
    declare werte$

    werte$ = "SX101SY102BX54BY200PU10"
    STW werte$   'proc aufrufen

    print "SX",sx%
    print "SY",sy%
    print "BX",bx%
    print "BY",by%
    print "PU",pu%

    waitkey
gruss Thorsten
Sascha Willecke
| Datum:29.10.01 19:50 (sascha@willecke-net.de) |
Hallo, danke für eure schnellen antworten aber thorsten sag mal hättest du dir das nicht sparen können: "mit ein bischen überlegen...."! Ich hab überlegt aber ich habs nicht ganz so hinbekommen wir ihr! Außerdem dachte ich das es vielleicht ne kürzere und schnellere variante gibt! Gruß Sascha
Thorsten
| Datum: 30.10.01 07:34 (mrk@mrk-soft.de) |
Sascha, das war nit bös gemaint, nur mit ein bissel schauen in der Hilfe bei den String-Funktionen und dann noch ein paar eigene gedankengänge dazu hätte man drauf kommen können, die Lösung von Bernd, eine Zeile, (Definition), ist die küreste, die machbar ist. Thorsten
Bernhard Künzel
| Datum:29.10.01 20:54 (b.kuenzel@chello.at) |
Hallo Sascha, hier eine kurze Möglichkeit der Stringzerlegung für dein Problem Def Wert(2) Val(SubStr$(Upper$($(1)),2,Upper$($(2)))) Declare S$ S$="SX100SY100BX50BY200PU10" Print Wert(S$,"SX") Print Wert(S$,"sy") Print Wert(S$,"bx") Print Wert(S$,"BY") Print Wert(S$,"PU") MFG aus Innsbruck Bernhard
Jörg Sellmeyer
| Datum:30.10.01 00:58 (joerse@gmx.de) |
Hallo, Ich hab' auch noch 'ne Methode:-) declare s$ S$=translate$(translate$(translate$("SX100SY100BX50BY200PU10","SY",",SY"),"B",",B"),"P",",P") S$=translate$(translate$(translate$(s$,"X","X="),"Y","Y="),"U","U=") print s$ WhileLoop 5 print SubStr$(s$,&loop,",") Wend WaitInput Jörg

| Zurück zur Übersicht