Seite 1 von 2

if block wird ignoriert

Verfasst: 07.02.2010 20:37
von vimike
Hallo!
Ich habe einem Buttongadget einen Wert mit Setgadgetdata zugewiesen. Beim Schalten wird jedoch der erste if Block ignoriert und es geht gleich beim zweiten weiter.

Code: Alles auswählen

If Event= #PB_Event_Gadget


 Gadgetnummer=EventGadget()

X=GetGadgetData(EventGadget())
 If  Gadgetnummer=0 And   X=1
;SetGadgetText(Ergebnis3,A$)

If ReadFile(7,"C:\Dokumente und Einstellungen\Anne\Desktop\TextRPG\TextRPG-Texte\Anfang.txt")

While Eof(7)=0
C$=C$+ReadString(7)

Wend

CloseFile(7)
SetGadgetText(Ergebnis3,C$)
EndIf





 SetGadgetData(0,2) 
 
 
 EndIf 
 
das ist der If Block.
Das ganze Listing ist schon bei 151 Zeilen, etwas zu lang um es hier zu posten.

__________________________________________________
Quote-Tags entfernt und Code-Tags hinzugefügt
07.02.2010
RSBasic


Okay

Code: Alles auswählen


A$=""





;Fenster erstellen
If OpenWindow(1,0,0,400,300,"Tales of Limaena",#PB_Window_SystemMenu |#PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget | #PB_Window_SizeGadget | #PB_Window_TitleBar  )
WindowID=WindowID(1)
Ergebnis1=UseGadgetList(WindowID(1))
Ergebnis3=TextGadget(#PB_Any,0,0,400,200,B$,#PB_Text_Border)

 ButtonGadget(0,10,210,20,20,"A"):SetGadgetData(0,1)
 ButtonGadget(5,40,210,20,20,"B")





;Anfangstext laden
If ReadFile(0,"C:\Dokumente und Einstellungen\Anne\Desktop\TextRPG\TextRPG-Texte\Begin.txt")

While Eof(0)=0
B$=B$+ReadString(0)
Wend

CloseFile(0)
EndIf 

;Anfangstext ausgeben

SetGadgetText(Ergebnis3,B$)

SetGadgetColor(Ergebnis3,#PB_Gadget_BackColor ,RGB($FF,$FF,$FF))

 Repeat
Event =WaitWindowEvent()


 
 

 If Event= #PB_Event_Gadget


 Gadgetnummer=EventGadget()

X=GetGadgetData(EventGadget())
 If  Gadgetnummer=0 And   X=1
;SetGadgetText(Ergebnis3,A$)

If ReadFile(7,"C:\Dokumente und Einstellungen\Anne\Desktop\TextRPG\TextRPG-Texte\Anfang.txt")

While Eof(7)=0
C$=C$+ReadString(7)

Wend

CloseFile(7)
SetGadgetText(Ergebnis3,C$)
EndIf





 SetGadgetData(0,2) 
 
 
 EndIf 
 


 


Gadgetnummer=EventGadget()
X=GetGadgetData(EventGadget())
If Gadgetnummer =0 And X=2

SetGadgetText(Ergebnis3,A$)

If ReadFile(2,"C:\Dokumente und Einstellungen\Anne\Desktop\TextRPG\TextRPG-Texte\Text2.txt")

While Eof(2)=0
D$=D$+ReadString(2)
Wend

CloseFile(2)
SetGadgetText(Ergebnis3,D$)
EndIf 


 SetGadgetData(5,2)
SetGadgetData(0,3) 

 

EndIf 






If Gadgetnummer =5 And X=2

SetGadgetText(Ergebnis3,A$)

If ReadFile(30,"C:\Dokumente und Einstellungen\Anne\Desktop\TextRPG\TextRPG-Texte\Text30.txt")

While Eof(30)=0
G$=G$+ReadString(30)
Wend

CloseFile(30)
SetGadgetText(Ergebnis3,G$)
EndIf 




EndIf 




If Gadgetnummer =0 And X=3


SetGadgetText(Ergebnis3,A$)

If ReadFile(3,"C:\Dokumente und Einstellungen\Anne\Desktop\TextRPG\TextRPG-Texte\Text3.txt")

While Eof(3)=0
E$=E$+ReadString(3)
Wend

CloseFile(3)
SetGadgetText(Ergebnis3,E$)
EndIf 

;Anfangstext ausgeben


EndIf 
 
 
EndIf 
 
 Until Event = #PB_Event_CloseWindow
EndIf 
__________________________________________________
Quote-Tags entfernt und Code-Tags hinzugefügt
07.02.2010
RSBasic

Re: if block wird ignoriert

Verfasst: 07.02.2010 20:45
von HeX0R
Bei 151 Zeilen muss die Board-Software nur müde lächeln, also poste am besten mal alles.

Re: if block wird ignoriert

Verfasst: 07.02.2010 20:54
von Kaeru Gaman

Code: Alles auswählen

Gadgetnummer=EventGadget()

X=GetGadgetData(EventGadget())
nicht zweimal die Funktion benutzen, sondern beim zweiten mal die Variable.

Re: if block wird ignoriert

Verfasst: 07.02.2010 21:00
von STARGÅTE
@vimike

ich verste nicht was du meinst ... und der Code ist schwer testbar wenn einem die txt's fehlen

@Kaeru Gaman
EventGadget() bleibt solange kein WindowEvent() aufgerufen wurde erhalten, er kanns auch auch mehrfach benutzen.
WindowEvent() hingegen sollte nur einmal benutzt werden und dann der Wert gespeichert werden.

Re: if block wird ignoriert

Verfasst: 07.02.2010 21:08
von vimike
Die Textdateien sind schwer möglich mitzuliefern. Laut VariableViewer wird die Datei korrekt eingelesen nur nicht angezeigt. Aus irgendeinem Grund geht der Programmablauf gleich zum nächsten if Block.
@ Kaeru Gaman
Sorry, aber aus dem kurzen Post kann ich so nichts machen.
aber danke für die Antwort

Re: if block wird ignoriert

Verfasst: 07.02.2010 21:12
von jojo1541
Er meint, dass du die Variable beuntzen sollst...

Statt:

Code: Alles auswählen

Gadgetnummer=EventGadget()

X=GetGadgetData(EventGadget())
dass hier:

Code: Alles auswählen

Gadgetnummer=EventGadget()

X=GetGadgetData(Gadgetnummer)

Re: if block wird ignoriert

Verfasst: 07.02.2010 21:15
von Kaeru Gaman
aus dem kurzen Post kann ich so nichts machen.
doch.
lesen.

ich hab den Teil deines Codes zitiert, der blödsinnig ist.
entweder, du speicherst den Rückgabewert von EventGadget in einer Variablen und verwendest diese dann,
oder du verwendest nur die Funktion und verzichtest auf die Variable.
Beides zusammen ist unnütz.


Textdateien kann man genauso posten, wie man code postet.
... wenn man Code-Tags verwendet, nicht Quote.


und welche If-Blöcke du wie meinst solltest du vielleicht auch dazu schreiben.
welcher wird übergangen, zu welchem wird gesprungen? du hast da ne Menge Ifs drin.

Re: if block wird ignoriert

Verfasst: 07.02.2010 21:23
von Kaeru Gaman
also, dein Problem ist hier:

Code: Alles auswählen

  Gadgetnummer=EventGadget()
  X=GetGadgetData(EventGadget())
  If  Gadgetnummer=0 And   X=1
    SetGadgetData(0,2)
  EndIf

  Gadgetnummer=EventGadget()
  X=GetGadgetData(EventGadget())
  If Gadgetnummer =0 And X=2
    ; zweites If
  EndIf
erst änderst du per SetGadgetData auf 2, direkt danach holst du noch mal X=GetGadgetData, das ist jetzt logischer weise die 2 die du millisekunden zuvor gesetzt hast.

.... mach nur einmal ganz am Anfang

Code: Alles auswählen

  Gadgetnummer=EventGadget()
  X=GetGadgetData(Gadgetnummer)
am besten Teilst du das auch per Cases auf, also

Code: Alles auswählen

  Gadgetnummer=EventGadget()
  Select Gadgetnummer
dann läufst du nicht Gefahr, im Selben Durchlauf zwei Zweige auszuführen.

Re: if block wird ignoriert

Verfasst: 07.02.2010 21:30
von vimike
das was Kaeru Gaman als blödsinnig bezeichnet ist mein erster Versuch eine Programmsteuerung zu entwickeln nach dem Motto ein Klick auf ein Buttongadget und die Textanzeige im Fenster springt zum nächsten Text

Re: if block wird ignoriert

Verfasst: 07.02.2010 21:32
von Kaeru Gaman
Hallo Schatzi!

da steht deine Lösung schon da, also mach dir nicht ins Hemd weil ich dich nicht mit Feenstaub pudere, sondern nimms wie ein Mann und sag DankeSchön für die Hilfe.