Zahlen aus String

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

 

JanK

Betreff: Zahlen aus String

BeitragFr, Jan 20, 2006 19:34
Antworten mit Zitat
Benutzer-Profile anzeigen
Also ich hab das in der Forensuche nicht gefunden Embarassed .
Also ich hab einen String: "1,20,36,400,52" und aus diesem möcht ich die einzelnen Zahlen raus haben also z.B.
S1$ = "1"
S2$ = "20"
S3$ = "36"
S4$ = "400 "
S5$ = "52"
Wichtig! Die Zahlen änder sich in der Länge und so.
Also, dass oben sind nur Beispielzahlen.
Ich habe keine Zeit, mich zu beeilen.
The Pollux Conflict || The Pollux Renegades || Lipstick-live.de

d-bug

BeitragFr, Jan 20, 2006 19:46
Antworten mit Zitat
Benutzer-Profile anzeigen
Also, hier hat es eine Funktion um einen Teil des Strings zurück zu geben. Musst eben nur wissen, an welcher Position und wie viele Zahlen in dem String sind !

Das Ergebniss dann einfach mit value% = Int(Stringvariable) in eine Integervariable umwandeln

Viel Spass damit !
 

JanK

BeitragFr, Jan 20, 2006 19:52
Antworten mit Zitat
Benutzer-Profile anzeigen
Ok ich versuchs mal
Ich habe keine Zeit, mich zu beeilen.
The Pollux Conflict || The Pollux Renegades || Lipstick-live.de

Spikespine

BeitragFr, Jan 20, 2006 19:53
Antworten mit Zitat
Benutzer-Profile anzeigen
ich habe auch mal sowas gemacht. Hier mal die für dich leicht veränderte version:

Code: [AUSKLAPPEN]
Type S
   Field st$
End Type
Global S.S

txt$ = "1,20,36,400,52"
splitstring(txt$)
WaitKey
End

Function splitstring(txt$)

   z1 = 1
   z2 = Instr(txt$,",")
   Repeat
      
      If z2 > 0 Then
         S.S = New S
         S\st$ = Mid(txt$,z1,z2-z1)
      Else
         S.S = New S
         S\st$ = Right(txt$,len(txt$)-z1+1)
         Exit
      EndIf      
      
      z1 = z2+1
      z2 = Instr(txt$,",",z2+1)
      
   Until KeyHit(1)
   
   For S.S = Each S
      a = a + 1
      
      Print "S"+a+" = '"+S\st$+"'"
   Next
   
End Function
End
Athlon 64 3700+ | 1024 MB RAM | GeForce 7900 GT | Blitz2D, Blitz3D, BlitzPlus, BlitzMax
 

fliege

BeitragFr, Jan 20, 2006 20:23
Antworten mit Zitat
Benutzer-Profile anzeigen
hab auch sowas:
Code: [AUSKLAPPEN]

Function parse_parameter(art = 1, parameter)
   pos = 1
   If parameter > 1 Then
      For atpara = 1 To parameter-1
         parapos = Instr(g_n_command$, ",",pos)
         pos = parapos + 1

      Next
   EndIf
   If art = 1 Then
      Repeat
         number$ = Mid(g_n_command$, pos,1)
         If (Asc(number$) > 47 And Asc(number$) < 58) Or number$ = "."
            zahl$ = zahl$+number$
            pos = pos + 1
         Else
            g_n_para_number$ = zahl$
            Exit
         EndIf
      Forever
   EndIf
   If art = 2
      Repeat
         Char$ = Mid(g_n_command$, pos,1)
         If Asc(Char$) = 34 And startedtext = 1 Then g_n_para_string$ = Sting$ : Exit
         If Asc(Char$) = 34 And startedtext = 0 Then startedtext = 1
         If Asc(Char$) <> 34 And startedtext = 1 Then Sting$ = Sting$ + Char$
         pos = pos + 1
      Forever
   EndIf
End Function

du musst den string in der globalen "g_n_command" speichern...und dann hast du eine variable g_n_para_number$ und ein g_n_para_string$ - auch globale. also funktionierts so:

Code: [AUSKLAPPEN]

g_n_command$ = "1,30,2,4556,12.3"
parse_parameter(1,1) ;Die erste 1 bedeuted das Zahlen zurückgegeben werden sollen
zahl1 = int(g_n_para_number$)
parse_parameter(1,2) ; Die 2 bedeutet das der 2. Parameter ausgegeben werden soll
zahl2 = int(g_n_para_number$)


Hoffe es hilft dir

Fliege
Wer weiß was kommt.. ?
 

JanK

BeitragFr, Jan 20, 2006 20:39
Antworten mit Zitat
Benutzer-Profile anzeigen
@ fliege :
Bei mir kommt nur 0 Raus Question hab ich was Falsch gemacht?
Code: [AUSKLAPPEN]
g_n_command$ = "1,30,2,4556,12.3"
parse_parameter(1,1) ;Die erste 1 bedeuted das Zahlen zurückgegeben werden sollen
zahl1 = int(g_n_para_number$)
Print zahl1
parse_parameter(1,2) ; Die 2 bedeutet das der 2. Parameter ausgegeben werden soll
zahl2 = int(g_n_para_number$)
Print zahl2
WaitKey


Die anderen Test ich jetzt mal
Ich habe keine Zeit, mich zu beeilen.
The Pollux Conflict || The Pollux Renegades || Lipstick-live.de
 

JanK

BeitragFr, Jan 20, 2006 21:01
Antworten mit Zitat
Benutzer-Profile anzeigen
Ok ich hab des von Spikespine genommen Very Happy danke für eure Hilfe
Ich habe keine Zeit, mich zu beeilen.
The Pollux Conflict || The Pollux Renegades || Lipstick-live.de
 

fliege

BeitragFr, Jan 20, 2006 22:29
Antworten mit Zitat
Benutzer-Profile anzeigen
du musst:
- g_n_command$
- g_n_para_number$
- g_n_para_string$

also globale definieren, dann sollte es funktionieren...
Wer weiß was kommt.. ?

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group