Seite 1 von 1
FindString
Verfasst: 16.03.2009 21:14
von Marc-21
Hi habe ein problem mit findstring wenn ich einen text suche hat er das ergebnis beim zweiten durchlauf das ergebnis schon vor der suche . Wie kann mann das ändern. PureBasic 4.2
Code: Alles auswählen
MessageRequester("",f$) ; beim ersten mal nix, und bei zweiten mal Ergebnis schon da
If a=0
e$ = WebGadget_PageText(#Int)
DH$ = "Noch"
DCH$ = "Sekunden"
P1 = FindString(e$, DH$, P2)+4
If P1
P2 = FindString(e$,DCH$, P1)
If P2
Else
EndIf
Else
EndIf
f$ = Mid(e$, P1, P2-P1)+"sec"
Danke
Re: FindString
Verfasst: 16.03.2009 21:26
von Kiffi
Hai Marc-21,
ohne jetzt genauer hingeschaut zu haben:
If P1 wird immer zutreffen, weil Du immer 4 zu dem Ergebnis addierst (unabhängig davon, ob gefunden oder nicht)
versuch es mal so:
Vielleicht ist das schon des Rätsels Lösung
Grüße ... Kiffi
Verfasst: 16.03.2009 21:41
von AND51
Würde vielleicht helfen, wenn du einen Beispielstring posten könntest.
Dann wissen wir, wie er vom Muster her aussieht und was du für Strings darin suchst.
Dann können wir dir vielleicht nämlich gleich deinen Code vereinfachen.
Verfasst: 16.03.2009 21:49
von Kaeru Gaman
> habe ein problem mit findstring wenn ich einen text suche hat er das ergebnis beim zweiten durchlauf das ergebnis schon vor der suche . Wie kann mann das ändern.
dein satz ist nicht verständlich...
meinst du mit "durchlauf" deine beiden suchbefehle?
außerdem ist dein code zumindest SO unvollständig, dass das EndIf zu dem oberen "If a" fehlt.
fehlt da noch mehr?
ich habe fast den verdacht, dass du das ganze in irgendeiner schleife oder sonstwas hast,
weil du den kommentar "bei zweiten mal Ergebnis schon da" oben am messagerequester stehen hast.
außerdem startest du die erste suche bei der ergebnisposition der zweiten suche,
sieht also so aus als ob du da mehrfach durchwillst...
ist das der Fall?
dann ist nicht das ergebnis schon da, sondern in f$ steht immer noch das ergebnis vom letzten mal.
... und wenn das tatsächlich der Fall ist, dann schreib sowas doch bei der Frage bitte mit hin!
eine unverständlich formulierte Frage und ein unvollständiger code ist nicht gerade das,
was dir sinnvolle und hilfreiche antworten einbringt.
@AND
versuch nicht, ihm seinen Code zu "vereinfachen", mach das lieber mit seinen Fragesätzen.
Verfasst: 16.03.2009 22:14
von Marc-21
Kaeru hat recht habe mich nicht richtig ausgedrückt
Code: Alles auswählen
Select event_g
Case #button1 ; Enter
;Url$ = GetGadgetText(#Url)
c = FindString(Url$,g$,1)
MessageRequester("",Url$)
If c = 1
StatusBarText(#statbar,0,g$)
Delay(2000)
EndIf
Url$ = "C:\WebBrowser\tmpp3.html"
WebGadget(#Int,0,0,0,0,Url$)
StatusBarText(#statbar,0,"Seite wird geladen")
WebGadget_Busy()
StatusBarText(#statbar,0,"Seite ist geladen")
c$ = GetGadgetItemText(#Int,1)
a = FindString(c$,a$,1)
b = FindString(c$,b$,1)
MessageRequester("",Str(a))
MessageRequester("",f$)
If a=0
e$ = WebGadget_PageText(#Int)
DH$ = "Noch"
DCH$ = "Sekunden"
P1 = FindString(e$, DH$, P2)+4
If P1
P2 = FindString(e$,DCH$, P1)
If P2
Else
EndIf
Else
EndIf
f$ = Mid(e$, P1, P2-P1)+"sec"
;MessageRequester("",f$)
StatusBarText(#statbar,0,"Noch"+f$+" bis zum Download")
OpenConsole()
ConsoleTitle("ESC-Abbruch")
sec = Val(f$)
min = 0
timer = ElapsedMilliseconds()
Repeat
KeyPressed$ = Inkey()
If ElapsedMilliseconds() > timer
; ****************
timer + 1000
; ****************
sec -1
PrintN(Str(sec)+" sec bis zum Download")
Select EvID
Case #PB_Event_Gadget
EvID=EventGadget()
Select EvID
EndSelect
EndSelect
EndIf
Until sec = 00 Or KeyPressed$ = Chr(27)
If KeyPressed$ = Chr(27)
StatusBarText(#statbar,0,"Abbruch")
EndIf
StatusBarText(#statbar,0,"Download-Startet")
CloseConsole()
Else
If b=0
CH$ = "es in"
CCH$ = "uten wieder"
P1 = FindString(c$, CH$, P2)+10
If P1
P2 = FindString(c$,CCH$, P1)-4
If P2
Else
EndIf
Else
EndIf
d$ = Mid(c$, P1, P2-P1)
StatusBarText(#statbar,0,"Download Limit erreicht "+d$+" Minuten bitte warten")
EndIf
EndIf
das ist der code wenn mann enter klickt sucht er nach den string und beim zweiten mal enter klicken ist in f$ das ergebins immer noch vorhanden und er sucht nicht mehr wie kann mann das verhindern.
Danke
Verfasst: 16.03.2009 22:21
von Kaeru Gaman
indem man vor der suche f$ löscht indem man f$="" einsetzt...
... und wenn man deinen ganzen code betrachtet, solltest du wirklich auch beachten, was Kiffi zu dem P1=+4 geschrieben hat.
... und mal ein bissel sinnvoll einrücken, dann kann man die gliederung besser erkennen ...
Verfasst: 17.03.2009 18:09
von Marc-21
Danke schön werde es versuchen