Seite 1 von 1
Mit Variablen arbeiten: Problem
Verfasst: 01.03.2006 15:21
von PB42
Hallo,
folgendes Mini-Programm erzeugt bei jedem Mausklick im Debugger die fortlaufende Ausgabe: a1, a2, a3... usw. Und nun will ich damit auch arbeiten können, indem a1, a2, a3 usw. jeweils der Zahlenwert 1 zugeordnet wird. Mit anderen Worten muß später im Programm z.B. die Abfrage möglich sein
If a1 = 1
...
endif
Der Code:
Code: Alles auswählen
OpenWindow(0,0,0,800,600,#PB_Window_SystemMenu,"")
Repeat
If eventID = #WM_LBUTTONDOWN
Zahl = Zahl + 1
Test$ = "a" + Str(Zahl)
Debug Test$
EndIf
eventID = WaitWindowEvent()
Until eventID = #PB_EventCloseWindow
Wie geht das? Danke.
PB42
Re: Mit Variablen arbeiten: Problem
Verfasst: 01.03.2006 15:40
von Kiffi
> Mit anderen Worten muß später im Programm z.B. die Abfrage möglich
> sein
> If a1 = 1
das ist so, wie Du das vorhast, nicht möglich.
Arbeite lieber mit Arrays. Dann geht sowas:
Grüße ... Kiffi
Verfasst: 01.03.2006 16:02
von PB42
Hallo Kiffi,
schön, daß Du auf Arrays kommst, denn ich dachte mir schon, daß ich da jetzt nicht mehr dran vorbeikomme. Problem: Noch nie gerafft, noch nie geschaff! Daher folgender Versuch
Code: Alles auswählen
OpenWindow(0,0,0,800,600,#PB_Window_SystemMenu,"")
Repeat
Dim a.l(43)
If eventID = #WM_LBUTTONDOWN
a.l = a.l + 1
Debug a.l(4)
EndIf
eventID = WaitWindowEvent()
Until eventID = #PB_EventCloseWindow
Wert 4 läßt sich nicht auslesen, dafür läuft der Debugger bei jedem Klick. Wie geht's richtig?
PB42[/code]
Verfasst: 01.03.2006 16:22
von roherter
Code: Alles auswählen
OpenWindow(0,0,0,800,600,#PB_Window_SystemMenu,"")
Repeat
Dim a.l(43)
If EventID = #WM_LBUTTONDOWN
b=b+1
a.l(b) = b
If b=4
Debug a.l(4)
EndIf
EndIf
EventID = WaitWindowEvent()
Until EventID = #PB_EventCloseWindow
Musste mal schauen habs nur überflogen vieleicht ist es das was du willst.
Verfasst: 01.03.2006 16:23
von uweb
So wie Du die Aufgabe beschrieben hast würde es eigentlich mit einer Variablen gehen.
Code: Alles auswählen
OpenWindow(0,0,0,800,600,#PB_Window_SystemMenu,"")
Anzahl = 1
Repeat
If eventID = #WM_LBUTTONDOWN
Test$ = "a" + Str(Anzahl)
Debug Test$
For i = 1 To 10
If Anzahl >= i
Test$ = "a" + Str(i) + " = 1"
Else
Test$ = "a" + Str(i) + " = 0"
EndIf
Debug Test$
Next
Anzahl = Anzahl + 1
EndIf
eventID = WaitWindowEvent()
Until eventID = #PB_EventCloseWindow
Wenn aber z.B. unterschiedliche Werte festgehalten werden sollen gibt es zwei andere Wege.
Bei einer vorher begrenzten Anzahl von Werten :
Code: Alles auswählen
OpenWindow(0,0,0,800,600,#PB_Window_SystemMenu,"")
#MaximaleAnzahl = 10
Anzahl = 0
Dim MyArray.l(#MaximaleAnzahl)
Debug "Programm-Fenster vor dem Debug-Fenster schließen !"
Repeat
If eventID = #WM_LBUTTONDOWN
If Anzahl < #MaximaleAnzahl
MyArray(Anzahl) = 1
Test$ = "a" + Str(Anzahl)
Debug Test$
Anzahl = Anzahl + 1
EndIf
EndIf
eventID = WaitWindowEvent()
Until eventID = #PB_EventCloseWindow
For i = 0 To #MaximaleAnzahl-1
Test$ = "a" + Str(i) + " = " + Str(MyArray(i))
Debug Test$
Next
Bei einer vorher nicht begrenzbaren Anzahl von Werten :
Code: Alles auswählen
OpenWindow(0,0,0,800,600,#PB_Window_SystemMenu,"")
NewList MyList.l()
Anzahl = 0
Debug "Programm-Fenster vor dem Debug-Fenster schließen !"
Repeat
If eventID = #WM_LBUTTONDOWN
If AddElement(MyList()) <> 0
MyList() = 1
Anzahl = Anzahl + 1
Test$ = "a" + Str(Anzahl)
Debug Test$
Else
MessageRequester("Fehler!", "Kein Speicherplatz zum Reservieren des neuen Elements", #PB_MessageRequester_Ok)
EndIf
EndIf
eventID = WaitWindowEvent()
Until eventID = #PB_EventCloseWindow
FirstElement(MyList())
For i = 1 To CountList(MyList())
Test$ = "a" + Str(i) + " = " + Str(MyList())
Debug Test$
NextElement(MyList())
Next
Verfasst: 01.03.2006 16:25
von Kiffi
> Wie geht's richtig?
1. Array ausserhalb der Repeat-Until-Schleife dimensionieren
2. Array-Element richtig zuordnen.
Code: Alles auswählen
Dim a.l(43)
OpenWindow(0,0,0,800,600,#PB_Window_SystemMenu,"")
Repeat
eventID = WaitWindowEvent()
If eventID = #WM_LBUTTONDOWN
Zahl + 1
a(Zahl)=Zahl
Debug a(Zahl)
EndIf
Until eventID = #PB_Event_CloseWindow
Grüße ... Kiffi
Verfasst: 01.03.2006 16:51
von PB42
Hallo,
jetzt weiß ich, wie man Arrays ausliest: Vielen Dank an alle, die mir geantwortet haben, das hilft mir erstmal weiter.
Gruß PB42