Seite 1 von 1

Bin ratlos wegen einer IF abfrage

Verfasst: 10.05.2007 08:45
von Tsuki-Namida
Hallo,
ich habe einen thrend erstellt und habe darinne einige if abfragen nur in die erste komme ich nicht rein obwohl ich die bedingung erfülle....

Code: Alles auswählen

Debug "Thrend läuft"
  Repeat
    If Stream$
    Debug "Stream$ = <>''''"
    
      Info$ = PeekS(CallFunction(1,"IdTag"))
      Debug Info$
      Info$ = Winamp_GetFileInfo(Stream$,length_adr) + " " + Info$
      Delay(2000)
      If Info$ <> StreamInfo$
        Debug "Info$ = <> StreamInfo$"
        StreamInfo$ = Info$
        SetGadgetText(#Info, Info$)
        
      EndIf
    EndIf
  Until a=1
das ist die if abfrage "If Stream$"
ich habe es auch schon so versucht "If Stream$ <> """

ich habe den string
Nehr mal verglichen ob er auch stimmt und dem ist so... und global ist er auch :(

Re: Bin ratlos wegen einer IF abfrage

Verfasst: 10.05.2007 09:49
von Kiffi
Magix-Soft <Kain> hat geschrieben:ich habe einen thrend erstellt
einen was?
Magix-Soft <Kain> hat geschrieben:nur in die erste komme ich nicht rein

Code: Alles auswählen

If Stream$
ja, dann ist Stream$ nicht leer.

Mensch, Magix-Soft <Kain>, das kann man auch mal eben selber überprüfen,
indem man den Inhalt von Stream$ im Debug-Fenster ausgibt. Wo ist denn
jetzt da Dein Problem.

Grüße ... Kiffi

Verfasst: 10.05.2007 09:52
von Kaeru Gaman
die abfrage "If Stream$" ist generell fragwürdig, da sie abfragt, ob der pointer ungleich null ist.
ich würde jetzt nicht meine hand dafür ins feuer legen, dass ein leerer string immer einen nullpointer hat.

mit threads und strings ist das alles nich so einfach.
hast du denn "threadsicher" eingeschaltet in den compileroptionen?
nimm lieber eine numerische flag-variable.
Kiffi hat geschrieben:...das kann man auch mal eben selber überprüfen,
indem man den Inhalt von Stream$ im Debug-Fenster ausgibt.
ganz genau.
mach das halt außerhalb des Ifs in deiner repeat-schleife.
außerdem solltest du das delay auch generell außerhalb der Ifs einbaun,
sonst brät der thread deine CPU solange die bedingung nicht erfüllt ist.

Verfasst: 10.05.2007 10:50
von Tsuki-Namida
ich habe es ja nicht nur mir "If Stream$" versucht sondern auch mir "If Stram$ <> "" "
und bei beiden geht es nicht....
den string lasse ich über das debug fenster ausgeben und zwar gleich nach dem er gefüllt wird das ist in dem treand nicht zu sehen....

und wie gesagt global ist der string auch

Verfasst: 10.05.2007 11:09
von Kiffi
Magix-Soft <Kain> hat geschrieben:den string lasse ich über das debug fenster ausgeben und zwar gleich nach dem er gefüllt wird
Nein. Gib ihn direkt vor Deiner Abfrage aus. Dann kannst Du sofort sehen,
warum die Abfrage nicht wie erwartet funktioniert und was letztendlich in
Stream$ steht.

Noch ein Tipp: Um evtl. Leerzeichen nicht zu übersehen, solltest Du den
Inhalt von Stream$ so ausgeben lassen:

Code: Alles auswählen

Debug ">" + Stream$ + "<"
Magix-Soft <Kain> hat geschrieben:das ist in dem treand nicht zu sehen....
nochmal: Es heißt Thread und nicht treand oder thrend. Gewöhn Dir an,
die Begriffe richtig zu benennen.

Und hier ein weiterer Tipp:
ich habe es ja nicht nur mir "If Stream$" versucht sondern auch mir "If Stram$ <> "" "
Deinen Postings beinhalten ziemlich viele Tippfehler. Es ist daher nicht
auszuschließen, dass Du auch in Deinem Code Tippfehler hast. Wenn Du
also Stram$ befülllst, jedoch auf Stream$ prüfst, sind schwer
lokalisierbare Fehler vorprogrammiert. Schreib deshalb in die erste Zeile
Deines Codes generell ein

Code: Alles auswählen

EnableExplicit
Das verringert die Gefahr von Tippfehlern enorm. Alles weitere kannst Du
in der Hilfe nachlesen.

Grüße ... Kiffi

Verfasst: 10.05.2007 13:14
von PureBasic4.0
Jetzt mal ne ganz "billige" Anfängerfrage: Hast du denn den String geGlobalt?

Re: Bin ratlos wegen einer IF abfrage

Verfasst: 10.05.2007 14:28
von Tsuki-Namida
Magix-Soft <Kain> hat geschrieben:ich habe den string
Nehr mal verglichen ob er auch stimmt und dem ist so... und global ist er auch :(
der String stimmt immer überhein das habe ich nach geprüft... und globaö ist er auch <siehe ersten beitrag>

Verfasst: 10.05.2007 14:51
von uweb
Vielleicht macht es Sinn das Problem zu separieren - ein möglichst kleines Dummyprogramm zu schreiben.

Wenn das Problem darin auftritt könntest Du es posten und wir könnten es nachvollziehen. Wenn das Problem darin nicht auftritt könntest Du nach den Unterschieden suchen, das Programm schrittweise erweitern und wenn dann das Problem darin auftritt ...(von vorne)

Zumindest geht es mir so, daß ich manchmal den Wald vor lauter Bäumen nicht mehr sehe. Die Methode hilft dann meistens.

Verfasst: 10.05.2007 14:53
von Thalius
Also rein theoretisch sollte das funktionieren... /:->

Debug dir mal den string ausserhalb der IF abfrage damit du ne Ahnung hast was da ankommt.

Ansonsten probiers mal mit nem:

Code: Alles auswählen

if len(Stream$) > 1
...
oder ähnlich ..

Thalius