Wait initialisieren

Programmierung unter AOO/LO (StarBasic, Python, Java, ...)

Moderator: Moderatoren

Benutzeravatar
Krangel
**
Beiträge: 35
Registriert: Di, 22.04.2014 12:23
Wohnort: 3. Planet

Wait initialisieren

Beitrag von Krangel »

Hi,
gibt es eine Möglichkeit den Wait Befehl vor der Ausführung zu initialisieren?

Code: Alles auswählen

Dim halt As Boolean

Sub Mouse_left_down
   doc = ThisComponent
   Cell = Doc.Sheets(0).GetCellRangeByName("A1")
   halt = 0
     i = 0
      Do  
      	i = i + 1
   		 Cell.Value = i
   		 wait 500
   	          REM Mein Makro ausführen
      Loop until Halt = true
   
   
End Sub

Sub Anhalten()
   halt = 1
End Sub
Der Code zählt die Zelle A1 hoch, solange die Schaltfläche gedrückt ist.
Wird sie kurz losgelassen und innerhalb der Zeit des Wait Befehls wieder gedrückt, läuft die Schleife als ob kein Wait vorhanden wäre.

Grüße
Stephan
********
Beiträge: 12368
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: Wait initialisieren

Beitrag von Stephan »

gibt es eine Möglichkeit den Wait Befehl vor der Ausführung zu initialisieren?
nein, weil der Begriff initialisieren hier garnicht passt
Wird sie kurz losgelassen und innerhalb der Zeit des Wait Befehls wieder gedrückt, läuft die Schleife als ob kein Wait vorhanden wäre.
ja, weil das Makro zum zweiten Male gestartet wird, denn das erneute Drücken der Schaltfläche löst den Start aus.

Lösung dafür ist simpel, verhindere das das Makro nochmal startet wenn es schon läuft, d.h. stelle fest das keine vorherige Instanz mehr läuft.

z.B. so:

Code: Alles auswählen

Dim halt As Boolean
Dim laufe_schon As Boolean

Sub Mouse_left_down
   If laufe_schon = True Then
	   	Exit Sub
	   Else
	   	laufe_schon = 1
   End If
   doc = ThisComponent
   Cell = Doc.Sheets(1).GetCellRangeByName("A1")
   halt = 0
     i = 0
      Do  
         i = i + 1
          Cell.Value = i
          wait 500
                REM Mein Makro ausführen
      Loop until halt = true
   laufe_schon = 0
   
End Sub

Sub Anhalten()
    halt = 1
End Sub
Gruß
Stephan
Benutzeravatar
Krangel
**
Beiträge: 35
Registriert: Di, 22.04.2014 12:23
Wohnort: 3. Planet

Re: Wait initialisieren

Beitrag von Krangel »

Hi,
ich dachte wait funktioniert ähnlich wie eine for next Schleife nur in der Zeit genauer.
Mit der for next Schleife funktioniert der Code wie gewünscht. Ihr werdet mir aber wohl sagen, dass das so unsauberer Programmierstil ist.
Grüße
Stephan
********
Beiträge: 12368
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: Wait initialisieren

Beitrag von Stephan »

ich dachte wait funktioniert ähnlich wie eine for next Schleife nur in der Zeit genauer.
ja, verstehe. Wirklich interessanter Gedanke, habe ich so noch nie gesehen, weil für mich die Absicht innerhalb der Schleife etwas tun zu wollen etwas Anders ist als Warten, d.h. "Nichtstun" trägt zwar "Tun" im Namen aber unterscheidet sich doch irgendwie von allem anderen Arten des Tuns.
Ihr werdet mir aber wohl sagen, dass das so unsauberer Programmierstil ist.
mmh, wahrscheinlich würde man das so sehen. Im Konkreten hätte ich dafür aber keine wirklich substanziellen Argumente, denn sofern For-Next hier funktioniert (ich habs nicht selbst getestet) scheint es mir nicht schlechter als meine Lösung, weil ich keinen Ansatz für eine Begründung sehe.
Damit meine ich das man dafür ob man z.B. For-Next oder Do-Loop verwendet immer konkrete Argumente ins Feld führen kann, jedoch zum Zwecke des Wartens es mir eigentlich egal zu sein scheint wie man die Zeit vertrödelt.
(Nahezu würde ich mich auf theoretischer Ebene sogar eher für For-Next als Wait entscheiden, weil For-Next allgemein verbreiteter sein dürfe, d.h. ohne Wait kann Basic leichter als ohne For-Next auskommen.)



Gruß
Stephan
Benutzeravatar
Krangel
**
Beiträge: 35
Registriert: Di, 22.04.2014 12:23
Wohnort: 3. Planet

Re: Wait initialisieren

Beitrag von Krangel »

Hi,
hier die drei Varianten in zum Vergleich. For next funktioniert wie gedacht. Stephans Vorschlag braucht noch eine Meldung für den Anwender, da gewartet wird bis wait beendet und Taste losgelassen ist.
Grüße
Dateianhänge
test schaltfläche.ods
(12.99 KiB) 97-mal heruntergeladen
Antworten