Seite 1 von 1

Fehler in Code, aber warum?

Verfasst: 10.11.2007 20:54
von PureBasic4.0
Hi Leute,

ich bin am verzweifeln. Folgender Code:

Code: Alles auswählen

  Protected Text$
  For a = 1 To CountProxy
    Text$ = GetGadgetItemText(#Proxylist,a-1)
    Pos1 = FindString(Text$,"@",0)
    Debug "Pos of @: "+Str(Pos1)
    If FindString(Text$,"http://",0)
      Text$ = Right(Text$,Len(Text$)-7)
    EndIf    
    Debug Text$
    If Pos1
      Pos2 = FindString(Text$,":",0)
      Debug "Pos of : 1: "+Str(Pos2)
      If Not Pos2
        Continue
      Else
        Pos3 = FindString(Text$,":",Pos1)
        Debug "Pos of : from Pos1: "+Str(Pos3)
        Pos4 = FindString(Text$,":",Pos2)
        Debug "Pos of : from Pos2: "+Str(Pos4)
        User$ = Left(Text$,Pos2-1)
        Pass$ = Mid(Text$,Pos2+1,Pos4-1)
        IP$ = Mid(Text$,Pos1+1,Pos3-Pos1-1)
        Port$ = Right(Text$,Len(Text$)-Pos3)
        Debug "User: "+User$
        Debug "Pass: "+Pass$
        Debug "IP: "+IP$
        Debug "Port: "+Port$
        Debug "---------------"
      EndIf
    Else
      ;...
    EndIf
Next
Wenn ich in #Proxylist z.B.: folgendes eingebe:
http://user:pass@1.2.3.4.5:329
user2:pass2@11.22.33.44.55:5943
user55:pass66@111.222.333.444.555:593
wird bei dem ersten Eintrag die Position des @ Zeichens aus unerfindlichen Gründen falsch gefunden, was sich auf das gesamte Ergebnis auswirkt. Die IP ist dann nur noch .5

Ich hoffe, ihr könnt mir helfen! :allright:

Danke,
PureBasic4.0

Verfasst: 10.11.2007 20:57
von Fluid Byte
Ausführbarer code bitte.

Re: Fehler in Code, aber warum?

Verfasst: 10.11.2007 21:45
von michel51
PureBasic4.0 hat geschrieben:Hi Leute,

ich bin am verzweifeln. Folgender Code:

Code: Alles auswählen

  Protected Text$
  For a = 1 To CountProxy
    Text$ = GetGadgetItemText(#Proxylist,a-1)
    Pos1 = FindString(Text$,"@",0)
    Debug "Pos of @: "+Str(Pos1)
    If FindString(Text$,"http://",0)
      Text$ = Right(Text$,Len(Text$)-7)
    EndIf    
    Debug Text$
    If Pos1
      Pos2 = FindString(Text$,":",0)
      Debug "Pos of : 1: "+Str(Pos2)
      If Not Pos2
        Continue
      Else
        Pos3 = FindString(Text$,":",Pos1)
        Debug "Pos of : from Pos1: "+Str(Pos3)
        Pos4 = FindString(Text$,":",Pos2)
        Debug "Pos of : from Pos2: "+Str(Pos4)
        User$ = Left(Text$,Pos2-1)
        Pass$ = Mid(Text$,Pos2+1,Pos4-1)
        IP$ = Mid(Text$,Pos1+1,Pos3-Pos1-1)
        Port$ = Right(Text$,Len(Text$)-Pos3)
        Debug "User: "+User$
        Debug "Pass: "+Pass$
        Debug "IP: "+IP$
        Debug "Port: "+Port$
        Debug "---------------"
      EndIf
    Else
      ;...
    EndIf
Wenn ich in #Proxylist z.B.: folgendes eingebe:
http://user:pass@1.2.3.4.5:329
user2:pass2@11.22.33.44.55:5943
user55:pass66@111.222.333.444.555:593
wird bei dem ersten Eintrag die Position des @ Zeichens aus unerfindlichen Gründen falsch gefunden, was sich auf das gesamte Ergebnis auswirkt. Die IP ist dann nur noch .5

Ich hoffe, ihr könnt mir helfen! :allright:

Danke,
PureBasic4.0
Versuch mal

Code: Alles auswählen

 Pos1 = FindString(Text$,"@",1)
bei allen "Findstring-Aufrufen.
Die Suche beginnt bei Position "1" und NICHT bei "0".

Verfasst: 10.11.2007 23:56
von AND51
> wird bei dem ersten Eintrag die Position des @ Zeichens aus unerfindlichen Gründen falsch gefunden
Bitte mach deinen Code nochmal neu und benutze dieses Mal StringField()!
Damit geht vieles besser!

Damit kannst du Strings wie "user55:pass66@111.222.333.444.555:593" einfacher aufsplitten (erst beim @ Zeichen, dann jeweils nochmal bei den :Doppelpunkten: ).

Code: Alles auswählen

adresse$="user55:pass66@111.222.333.444.555:593"

teil1$=StringField(adresse$, 1, "@")
teil2$=StringField(adresse$, 2, "@")

user$=StringField(teil1$, 1, ":")
pass$=StringField(teil1$, 2, ":")
ip$=StringField(teil2$, 1, ":")
port$=StringField(teil2$, 2, ":")

Debug teil1$
Debug teil2$

Debug user$
Debug pass$
Debug ip$
Debug port$
Bitte gib mal Feedback. :)

Verfasst: 11.11.2007 13:20
von PureBasic4.0
Danke, AND51. An StringField hatte ich gar nicht gedacht :lol: . Durch meinen Versuch, C++ zu lernen, bin ich wohl etwas von der PureBasic-Schiene abgekommen.
Immerhin habe ich eines mitbekommen: C++ find ich viel zu schwer. Ich werde mit PB weitermachen

Verfasst: 11.11.2007 13:27
von AND51
> An StringField hatte ich gar nicht gedacht
Bitte. Ich kann dir nur empfehlen, jedes mal, wenn du ein Problem lösen willst, vorher in das entsprechende Kapitel in der Hilfe zu schauen, ob es nicht einen passenderen Befehl gibt.
Hier hätte ich z. B. mal in das String-Kapitel der Hilfe geschaut, dann hätte ich es vermutlich gefunden, denn die meisten Befehle sind ja selbsterklärend.

Ich empfehle dir, dir so eine Art "Rundum-Blick" anzueignen, sodass dir bei einem Problem gleich mehere Befehle einfallen, die das Problem lösen könnten, so mach ich das auch immer.