String auslesen

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
Milchshake
Beiträge: 166
Registriert: 30.01.2006 17:47
Wohnort: Zwischen dem Sessel und dem Computer

String auslesen

Beitrag von Milchshake »

Hi,
was ist am folgendem Code falsch?

Code: Alles auswählen

String$ = "11|22|33"

Procedure Ausgabe(String$)
 AddGadgetItem(1, -1, String$)
 SetActiveGadget(1)

EndProcedure

Procedure RString(String$,Sektor)
If Differenz = 0
Differenz = 1
EndIf 

If Sektor > Test
For Test = 0 To Sektor
Cound = FindString(String$,"|",Differenz)
Differenz + Cound
Cound = 0
Test + 1
Next
EndIf 

If Sektor = Test 
Count = FindString(String$,"|", Differenz) ;Gibt zurück, wo das nächste | liegt
EndIf 

Zwischenspeicher$ = Mid(String$,Differenz,Count)

Zahl = Val(Zwischenspeicher$)

Ausgabe("Differenz: "+Str(Differenz))
Ausgabe("Count: "+Str(Cound))
Ausgabe("Zahl:: "+Str(Zahl))




EndProcedure 



OpenWindow(1,0,0,400,300,"Chat", #PB_Window_MinimizeGadget|#PB_Window_ScreenCentered)
 CreateGadgetList(WindowID(1))
  EditorGadget(1, 5, 5, 390, 260, #PB_Editor_ReadOnly)
    AddKeyboardShortcut(1, #PB_Shortcut_Return, 3)
Repeat 
Event = WindowEvent()

   Select EventMenu()
    Case 3
     RString(String$,1)
    EndSelect 

Until Event = #PB_Event_CloseWindow
Es geht darum, den String auszulesen.
Vielleicht bedarft es an einer kurzen erklärung.

11|22|33 <- Sektor1|Sektor2|Sektro3

0 ist Sektor1
1 ist Sektor2
usw...

Wenn ich null bei RString eingebe, funktionier es tadelos,
aber sobald ich 1 oder mehr eingebe, funktioniert es nicht mehr.

Bitte um Hilfe...Danke^^
Hab jetzt PB 4.02
Muhahaha!!!!
DarkDragon
Beiträge: 6291
Registriert: 29.08.2004 08:37
Computerausstattung: Hoffentlich bald keine mehr
Kontaktdaten:

Beitrag von DarkDragon »

StringField() schon probiert?
Angenommen es gäbe einen Algorithmus mit imaginärer Laufzeit O(i * n), dann gilt O((i * n)^2) = O(-1 * n^2) d.h. wenn man diesen Algorithmus verschachtelt ist er fertig, bevor er angefangen hat.
Benutzeravatar
gnasen
Beiträge: 578
Registriert: 01.08.2007 14:28
Computerausstattung: PB 4.60

Beitrag von gnasen »

Code: Alles auswählen

test.s = "1|22|333|4444|"

For a=1 To CountString(test, "|")
  
  Debug StringField(test, a, "|")
  
Next
Und DarkDragon, kannst du in die Zukunfst posten?

Verfasst am: Heute um 16:06:50

dabei haben wir es erst 15:49 :lol:

Blöde Sommerzeit oder was auch immer das verursacht!
Benutzeravatar
#NULL
Beiträge: 2238
Registriert: 20.04.2006 09:50

Beitrag von #NULL »

die zeitangaben im forum kannst du im profil ändern.
my pb stuff..
Bild..jedenfalls war das mal so.
Benutzeravatar
Milchshake
Beiträge: 166
Registriert: 30.01.2006 17:47
Wohnort: Zwischen dem Sessel und dem Computer

Beitrag von Milchshake »

Danke :D
Hab jetzt PB 4.02
Muhahaha!!!!
Benutzeravatar
Xaby
Beiträge: 2144
Registriert: 12.11.2005 11:29
Wohnort: Berlin + Zehdenick
Kontaktdaten:

Beitrag von Xaby »

Ansonsten in deinem Ursprungscode:

>>>
If Differenz = 0
Differenz = 1
EndIf
<<<

Das kann der Grund sein, wieso es bei 1 funktioniert und sonst nicht.
Du überprüfst ja nur, wenn eine Null drin steht.
Also statt IF, einfach Differenz+1

Dann wird es immer um eins erhöht.

Tja, und sonst halt StringField() :mrgreen:
Kinder an die Macht http://scratch.mit.edu/
Antworten