Fischer-Bayern.de
 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen   RegistrierenRegistrieren 
 ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

Delay/Sleep-Alternative

 
Neues Thema eröffnen   Neue Antwort erstellen    Fischer-Bayern.de Foren-Übersicht -> AppleScript-Studio Forum
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
pwprotokoll
•->
•->


Anmeldedatum: 16.09.2007
Beiträge: 5

BeitragVerfasst am: 17.09.2007 - 10:44    Titel: Delay/Sleep-Alternative Antworten mit Zitat

Hier handelt es sich um einen Follow-Up von jenem Thread. Der alte Thread kann gelöscht werden. Freue mich über jede Art von Hilfestellung. Vielen Dank.

Zitat:
Hi,

vorerst einmal ein großes Kompliment. Finde dieses Forum wirklich Spitze und lese schon eine Weile mit. Bei Problemen musste ich einfach nur mal ne kurze Weile suchen oder im Tutorial nachschauen - habe immer nützliche Antworten gefunden.

Zu meinem jetzigen Problem konnte ich leider seit ein paar Tagen keine Lösung finden. Wäre total super, wenn ich hier ne brauchbare Antwort finden würde. Dann will ich mal:

Ich bin momentan an einem Programm, dass eine bestimmte Funktion nach einer gewissen Zeit ausführen soll. Diese Zeit wird vom Benutzer angegeben und der sog. "Timer" wird mithilfe eines Buttons gestartet. Den eigentlichen Timer bis zum Ausführen der Aktion konnte ich mittels des "delay"- oder dem "sleep"-Befehls erreichen. So weit, so gut. Nun dient der Button, mit dem der Timer gestartet wird, als ein An- und Aus-Schalter. Drücke ich Start, beginnt der Timer - sollte es sich der User jedoch nochmal anders überlegen, soll er doch bitte den gleichen Button (während des laufenden Timers mit "Stop" betitelt) drücken können. Problem ist hier allerdings, dass das Window beim delay- und sleep-Befehl regelrecht gefreezed ist und ich keine Möglichkeit habe, den Stop-Button zu drücken.

Deshalb meine Frage: Gibt es irgendeine Alternative zu delay oder sleep, die mich den Ablauf eines Code-Abschnittes für eine gewisse Anzahl von Sekunden (oder whatever) pausieren lässt, jedoch noch Benutzereingaben zulässt und das Fenster nicht komplett freezed?


Vielen Dank für eure Antworten,

pwprotokoll
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
chebfarid
•-->
•-->


Anmeldedatum: 10.02.2007
Beiträge: 106
Wohnort: Milano

BeitragVerfasst am: 17.09.2007 - 19:00    Titel: Re: Delay/Sleep-Alternative Antworten mit Zitat

pwprotokoll hat Folgendes geschrieben:
Deshalb meine Frage: Gibt es irgendeine Alternative zu delay oder sleep, die mich den Ablauf eines Code-Abschnittes für eine gewisse Anzahl von Sekunden (oder whatever) pausieren lässt, jedoch noch Benutzereingaben zulässt und das Fenster nicht komplett freezed?


Ciao,
Du kannst alternativ einen Repeatloop laufen lassen, der die aktuelle Systemzeit mit der Wartezeit vergleicht und Dein Programm solange in den Wartezustand versetzt. Mit dem von Dir genannten Button kannst Du dann wenn gewuenscht den Loop unterbrechen.
Damit das klappt, musst Du in den Repeatloop die Zeile
Code:
return true
einbauen, damit das Skript die Initiative zurueckbekommt und nicht durch den Loop miteingefroren wird. (Es geht auch mit "Return 0" oder "Return 'Gurkensalat') Wink

Ganz einfaches Beispiel mit einem Textfenster und einem Button:
Code:
property textPause : "Dieses Fenster ist momentan in Pause..."
property textContinue : "Hier bin ich wieder!"
property sekundenPause : 30 -- seconds

on clicked theObject
   if name of theObject = "freezeButton" then
      if title of the button "freezeButton" of window "main" is "Pause" then
         my pauseApp()
      else
         my continueApp()
      end if
   end if
end clicked

on pauseApp()
   set fd to (current date) + sekundenPause
   repeat
      if (current date) < fd then
         set contents of text view "theText" of scroll view "textBox" of window "main" to (textPause)
         set editable of text view "theText" of scroll view "textBox" of window "main" to false
         set title of button "freezeButton" of window "main" to "Weiter"
         return true
      else
         my continueApp()
         exit repeat
      end if
   end repeat
end pauseApp

on continueApp()
   set contents of text view "theText" of scroll view "textBox" of window "main" to textContinue
   set editable of text view "theText" of scroll view "textBox" of window "main" to true
   set title of button "freezeButton" of window "main" to "Pause"
end continueApp


Good scripting
Farid
_________________
Abends lustig morgens triste
Das ist Leben von Artiste
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
pwprotokoll
•->
•->


Anmeldedatum: 16.09.2007
Beiträge: 5

BeitragVerfasst am: 18.09.2007 - 08:54    Titel: Antworten mit Zitat

Hi chebfarid,

vielen vielen Dank für deine Hilfe. Die gleiche Idee mit dem Vergleichen der Zeit kam mir auch vor wenigen Tagen, dennoch dachte ich, dass ich den Timestamp mit einer riesigen Prozedur formatieren müsste, damit ich diese zwei Werte ordentlich vergleichen kann. Aus diesem Grund hatte ich mir die Idee wieder schnell ausm Kopf geschlagen.

Du zeigst, dass es anders geht. Wirklich vielen vielen Dank, werde das heute Abend umgehend testen. Ich berichte dann mal, ob es funktioniert.

EDIT: Habe es gestern Abend mit der o.g. Methode versucht und musste feststellen, dass es nichts half. Durch die Schleife war das Teil wohl so beschäftigt, dass ich während der Schleife wieder nicht die Möglichkeit hatte, den Button zu drücken. Der Zeitabgleich funktioniert jedoch tadelos, lediglich das ganze abbrechen ist mir nicht möglich.

Meine vereinfachte Methode sieht in etwa so aus:


Code:
set theDate to (current date) + theMinutes * minutes
repeat while (current date) < theDate
end repeat


theMinutes ist vom Typ number und wird vorher initialisiert. Nach der Schleife (der eigentlichen Wartezeit), sollen weitere Anweisungen folgen. Die Schleife mit einem Button-Klick zu beenden ist mir auch hier nicht möglich, da das Window wieder gefreezed ist.

Liegt der Fehler bei mir und meinem Beispiel? Mit obigem Beispiel von dir, chebfarid, lief es ebenfalls nicht. Vielen Dank für eure Antworten.



Vielen Dank und viele Grüße,

pwprotokoll
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Fischer-Bayern.de Foren-Übersicht -> AppleScript-Studio Forum Alle Zeiten sind GMT + 2 Stunden
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.


Powered by phpBB © 2001, 2002 phpBB Group
Deutsche Übersetzung von phpBB.de


AppleScript für absolute Starter