[GastForen Programmierung/Entwicklung AppleScript Wissenswertes über das Eventprotokoll

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

Wissenswertes über das Eventprotokoll

Hans Haesler
  
Beiträge gesamt: 5826

13. Jun 2003, 22:14
Beitrag # 1 von 1
Bewertung:
(649 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
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
Code
Im Eventprotokoll erscheinen nicht alle Werte. Jene der Events: ja; jene der Variablen: nein. Dies kann man mit dem obenstehenden Beispiel verfolgen. Mit dem Befehl 'set picPath to (get file path) as string' wird der Variablen 'picPath' der Pfad des Bildes zugewiesen. Im Protokoll steht aber nur das Resultat von '(get file path)'. Wenn der Wert von 'picPath' auch erscheinen sollte, dann erreicht man dies mit dem Einschieben von 'log picPath'. Das Resultat wird zwischen Klammern und Sternen angezeigt. Hier ein Ausschnitt aus dem Eventprotokoll: 

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
X