2016-07-27 3 views
0

Ich habe ein total dummes Problem, das mich verrückt macht. Ich muss auf einen Knoten in einer PLIST-Datei zugreifen, und wenn es ein Problem gibt, möchte ich einen Dialog mit dem 'Stop'-Symbol anzeigen. Hier ist der Code:Applescript & Display-Dialog mit Symbol Stop & System Events

tell application "System Events" 
    tell property list file (plistFile as text) 
     try 
      tell contents 
       set backupDayTemp to value of property list item plistElementBackupDay of property list item chosenBackupDisk 
      end tell 
     on error m number n from f to t partial result p 
      if n = -1728 then 
       display dialog "Can't find " & plistElementBackupDay & " key for disk " & chosenBackupDisk & " in plist file." buttons {"Damn", "Oh dear"} default button "Damn" with title myName with icon stop 
       return 
      else 
       -- otherwise, pass the error on 
       error m number n from f to t partial result p 
      end if 
     end try 
    end tell 
end tell 

Es scheint, der Compiler denkt Systemereignisse sind derjenige, der das Token verstehen sollte „Stop“, da es in fetter blauer Schrift ist, nicht der lila Kursivschrift, dass es normalerweise in wäre und wann. der error handler wird ausgeführt Ich bekomme die Meldung "System Events hat einen Fehler bekommen: Die Eigenschaft list file [path to file] versteht die" stop "Nachricht nicht".

Meine Frage ist: Wie in aller Welt sage ich Systemereignisse, dass das Token nicht dafür ist? Ich habe versucht, eine tell me to vor der display dialog setzen, aber das hat nicht geholfen. Ich habe auch versucht using terms from application "Standard Additions", aber wenn ich es ausführen, werde ich nur gebeten, das Wörterbuch für Standard Additions zu finden.

Meine Haare zerreißen !!!

+0

tell application „Finder“ Dialog anzuzeigen .... mit Symbol Stopp, löst das Problem, es sei denn, natürlich, dass es den Fokus Ihrer Anwendung auf den Finder ändert. – pbell

Antwort

0

Die einfachste Lösung ist, den Fehler setzen sich aus der Anwendung der Handhabung sagt Block

try 
    tell application "System Events" 
     tell property list file (plistFile as text) 
      tell contents 
       set backupDayTemp to value of property list item plistElementBackupDay of property list item chosenBackupDisk 
      end tell 
     end tell 
    end tell 
on error m number n from f to t partial result p 
    if n = -1728 then 
     display dialog "Can't find " & plistElementBackupDay & " key for disk " & chosenBackupDisk & " in plist file." buttons {"Damn", "Oh dear"} default button "Damn" with title myName with icon stop 
     return 
    else 
     -- otherwise, pass the error on 
     error m number n from f to t partial result p 
    end if 
end try 
+0

Danke ... am Ende wurde ich verzweifelt und legte den 'display dialog'-Kram in einen Handler, den ich dann anrufe. Ich wollte die Fehlerbehandlung nicht weiter hinausschieben, akzeptiere aber, dass es wahrscheinlich keinen Grund gibt, dies nicht zu tun. – skiaddict1