[GastForen Programmierung/Entwicklung AppleScript wie schleife abbrechen?

  • Suche
  • Hilfe
  • Lesezeichen
  • Benutzerliste
Themen
Beiträge
Moderatoren
Letzter Beitrag

wie schleife abbrechen?

Anonym
Beiträge gesamt: 22827

20. Mär 2009, 15:52
Beitrag # 1 von 6
Bewertung:
(4995 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
hallo zusammen,

wie kann ich eine solche endlosschleife nach einer bestimmten zeit, , z.b. 180 sec,  abbrechen?

--schleife die so lange läuft, bis die datei vorhanden ist
                try
                    set neueBildDatei to neueBildDatei as alias
                on error
                    repeat until return = true
                        try
                            set neueBildDatei to neueBildDatei as alias
                            exit repeat
                        end try
                    end repeat
                end try
X

wie schleife abbrechen?

Hans Haesler
  
Beiträge gesamt: 5826

20. Mär 2009, 21:28
Beitrag # 2 von 6
Beitrag ID: #422954
Bewertung:
(4994 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Hans,

es kommt darauf an, wie Dein Script eingesetzt werden soll.

Wenn als Progrmm gestartet, dann könnte man eine 'on idle'-Konstrution benutzen, welche alle x Sekunden im Handler prüft, ob die Datei vorhanden ist.

Falls aber das Script ab Script-Menü (oder so) gestartet wird, dann muss man "rustikaler" vorgehen. Zum Beispiel so:
---
(* schleife die so lange läuft, bis die datei vorhanden ist *)
-- die aktuelle Zeit
set curDate to current date
try
   set neueBildDatei to neueBildDatei as alias
on error
   -- solange wiederholen, als die Differenz von (_jetzt_ aktuelle Zeit) minus (die zu Beginn gestoppte) um fünf Sekunden "kleiner" ist
   repeat while (current date) - curDate is less than 5
      try
         set neueBildDatei to neueBildDatei as alias
         exit repeat
      end try
      -- Pause von einer Sekunde
      delay 1
   end repeat
end try
---
Die Pause von einer Sekunde (= delay 1 ) bewirkt, dass mit current date die aktuelle Zeit nur sieben Mal festgestellt wird.

Wenn man den Befehl delay 1 auskommentiert, dann wird die aktuelle Zeit 647 Mal notiert. Und entsprechend dürfte auch die Bremswirkung auf andere Aufgaben ausfallen.

Hier werden absichtlich nur 5 Sekunden eingesetzt, damit die Demo schneller beendet ist. Für das richtige Script also die 5 durch die gewünschte Zahl ersetzen. Und auch den Wert von delay massiv erhöhen.

Gruss, Hans


als Antwort auf: [#422953]

wie schleife abbrechen?

Anonym
Beiträge gesamt: 22827

21. Mär 2009, 00:00
Beitrag # 3 von 6
Beitrag ID: #422955
Bewertung:
(4994 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
also, wenn's nicht so ganz genau auf die sekunde ankommt wäre das mein vorschlag:

set neueBildDatei to (path to "desk") & "neu.gif" as text
set pause to 2
set dauer to 60
--schleife die so lange läuft, bis die datei vorhanden ist
set x to 0
repeat until return = true or x >= dauer
   try
      set neueBildDatei to neueBildDatei as alias
      return neueBildDatei
      exit repeat
   end try
   delay pause
   set x to x + pause
end repeat


als Antwort auf: [#422953]

wie schleife abbrechen?

Anonym
Beiträge gesamt: 22827

21. Mär 2009, 00:11
Beitrag # 4 von 6
Beitrag ID: #422956
Bewertung:
(4994 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
sorry. das mit der zeit von hans ist natürlich besser. also so:

set neueBildDatei to (path to "desk") & "neu.gif" as text
--schleife die so lange läuft, bis die datei vorhanden ist
set {pruefpause, pruefdauer, pruefstart} to {10, 180, current date}
repeat while return = false or (current date) - pruefstart < pruefdauer
&#160;&#160;&#160;try
&#160;&#160;&#160;&#160;&#160;&#160;set neueBildDatei to neueBildDatei as alias
&#160;&#160;&#160;&#160;&#160;&#160;return neueBildDatei
&#160;&#160;&#160;&#160;&#160;&#160;exit repeat
&#160;&#160;&#160;end try
&#160;&#160;&#160;delay pruefpause
end repeat


als Antwort auf: [#422953]

wie schleife abbrechen?

Anonym
Beiträge gesamt: 22827

21. Mär 2009, 10:33
Beitrag # 5 von 6
Beitrag ID: #422957
Bewertung:
(4994 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
hallo,

es wird ab menü gestartet. eine abwandlung deines indesignscriptes zur freistellererkennung von dir hans. die bildinfos der platzierten (in dem falle) rohbilddaten werden ausgelesen, in eine xml-datei gesichert, rohbild und xml-datei an agfas intelliTune übergeben, dort bearbeitet (crop, maß, auflösung, farbkorrektur, scharfzeichnen) und in einen ausgangsordner gesichert ...

--hier kommt ihr beiden ins spiel! besten dank für beide lösungen!!! :)
--werde sie erst am montag testen können ...

... wenn die datei also im ausgangsordner von iT liegt, wird sie von indesign cs 2 gegen die rohdatei ausgetauscht und im maßstab 101 % platziert (um blitzer zu vermeiden)

und, oh wunder: die erste version funktioniert sogar ;-)


als Antwort auf: [#422953]

wie schleife abbrechen?

Hans Haesler
  
Beiträge gesamt: 5826

21. Mär 2009, 15:07
Beitrag # 6 von 6
Beitrag ID: #422958
Bewertung:
(4994 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Holgi,

Deine erste Lösung – welche die Pausen addiert – ist doch absolut in Ordnung.

Einzig die beiden "return" sind nicht notwendig. Und das Prüfen, ob das Bild vorhanden ist, kann zu alias neueBildDatei gekürzt werden.
---
set neueBildDatei to (path to "desk") & "neu.gif" as text
set pause to 2
set dauer to 60
--schleife die so lange läuft, bis die datei vorhanden ist
set x to 0
repeat until x is greater than or equal to dauer
   try
      alias neueBildDatei
      exit repeat
   end try
   delay pause
   set x to x + pause
end repeat
---
Sobald alias neueBildDatei keinen Fehler ergibt, wird der nächste Befehl, der Ausstieg aus der Schleife, ausgeführt.

Gruss, Hans


als Antwort auf: [#422953]
X