Das Eventprotokoll ist ein zusätzliches Fenster (mit Befehl-E öffnen) des Skripteditors, in welchem beim Abspielen eines Scripts die Befehle und deren Resultate aufgezeichnet werden.
Wer (wie zum Beispiel Goar ;-) fleissig das Eventprotokoll benutzt, um Probleme besser zu verstehen, der hegt ab und zu den Wunsch, diese Aufzeichnungen auf einen bestimmten Abschnitt des Scripts zu beschränken.
Es kann nämlich recht mühsam sein, durch die Zeilen zu scrollen bis man den Teil erreicht, welcher einen interessiert. Es kann aber auch geschehen, dass der Beginn des Protokolls fehlt, weil das Fassungsvermögen beschränkt ist (maximal 20'000 Zeichen).
Abhilfe bringen die Befehle 'stop log' und 'start log'. Wenn das Fenster des Eventprotokolls geöffnet ist, dann werden beim Start des Scripts sofort die Events aufgezeichnet. Wenn, z.B., das Script mit geprüftem und bewährtem Code beginnt, dessen Resultate nicht interessant sind, dann muss man den Befehl 'stop log' ganz an den Anfang des Scripts setzen. Unmittelbar vor dem Abschnitt, welcher Probleme macht, wird mit 'start log' das Schreiben des Protokolls aktiviert.
Umgekehrt verfährt man am Schluss: sobald man dem Code wieder vertraut, kann mit 'stop log' das Aufzeichnen gestoppt werden.
Hier der schematische Aufbau. Anstelle der Kommentare muss man sich eine Menge echten, funktionierenden Code vorstellen. Der Übersicht halber (und vor allem aus Platzgründen) verzichte ich auf ein aussagekräftigeres Beispiel. Aber dieses kleine Snippet funktioniert:
---
stop log
tell document 1 of application "QuarkXPress 4.11"
--
-- Der Beginn des Scripts (aus Platzgründen hier nicht wiedergegeben),
-- ist "sauber" und soll deshalb nicht im Eventprotokoll erscheinen
--
-- Ab der nächsten Zeile wird aufgezeichnet
start log
repeat with i from 1 to count of picture boxes
tell picture box i
tell image 1
if bounds is not {0, 0, 0, 0} then
set picPath to (get file path) as string
log picPath -- dadurch erscheint der Wert von 'picPath' im Protokoll
end if
end tell
end tell
end repeat
stop log -- Ab hier wird nicht mehr aufgezeichnet
--
-- Das Ende des Scripts ist ebenfalls geprüfter Code (auch dieser wird
-- aus Platzgründen hier nicht wiedergegeben). Das Protokollieren würde
-- eventuell nur die wichtigen ersten Zeilen verdrängen.
--
end tell
get bounds of image 1 of picture box 6 of document 1
--> {0, 0, 492, 347}
get file path of image 1 of picture box 6 of document 1
--> alias "Macintosh HD:demo:RT_images:RT41:RT_05_choix_jour:RT41_05_MA01.jpg.lay"
(*Macintosh HD:demo:RT_images:RT41:RT_05_choix_jour:RT41_05_MA01.jpg.lay*)
---
Die "Events" sehen aus wie Befehlszeilen. Deren Resultaten wird ein Pfeil vorangestellt: -->
Der Test 'if bounds is not {0, 0, 0, 0} then' löst offensichtlich den Befehl 'get bounds of image 1 ...' aus. Und, wie schon gesagt, die Resultate von 'log'-Befehlen werden von '(*' und '*)' eingerahmt.
Ganz wichtig: sämtliche 'log'-Befehle müssen aus dem fertigen Script entfernt werden (oder mindestens mit vorangestellten '--' auskommentieren). Sonst bremsen diese Zeilen die Ausführung spürbar, auch wenn das Fenster des Eventprotokolls geschlossen ist.
Hans Haesler, hsa@ringier.ch