Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
spirigwi •----->


Anmeldedatum: 10.07.2003 Beiträge: 1517 Wohnort: Olten-CH
|
Verfasst am: 22.11.2004 - 02:12 Titel: AppleScript-STOPPER=AS ANHALTEN an beliebiger Stelle gesucht |
|
|
EDIT 21.1.07 Zweck: kurz und bündig
Frage:
Eigentlich suche ich eine simple Form um in längst einmal fabrizierten und sehr komplizierten Skripten mit Subscripten(Handlern) nachträglich an beliebiger Stelle des Skriptes oder eines aufgerufenen Handlers noch einen STOPPER einbauen zu wollen.(Also auch innerhalb eines Handlers soll dieser STOPPER funktionieren und das ganze Skript anhalten)
Detaillierte Frage und Antwort (nach Folkers geduldiger Hilfe) am Schluss des posting positioniert. _________________ Skript-Fan => ein � -Fan =>Scr¿¿-KongFuSius_Kurpfusius
Zuletzt bearbeitet von spirigwi am 21.01.2007 - 15:00, insgesamt 4-mal bearbeitet |
|
Nach oben |
|
 |
Folker •---->


Anmeldedatum: 11.12.2000 Beiträge: 649 Wohnort: Holsteinische Schweiz
|
Verfasst am: 22.11.2004 - 10:45 Titel: |
|
|
Moin Willy,
huh - ich habe bisher nur überflogen - sollte es so sein, dass Du noch darauf gestossen werden musst: Du kannst selber error-msg erzeugen ...
try
set x to 3
set y to 3
set z to (x ^ y)
---Ach nö - keine Lust mehr
error "Ich habe keine Lust mehr ..." number -31960
-- werden nicht weiter abgearbeitet
set a to "b"
set c to "d"
on error errmsg number errnum
display dialog errmsg
end try
Aber ich versuche so neben meiner Arbeit da mal in Ruhe (Widerspruch! ) durchzusteigen. Wenn es Sinn macht, bietet AS ja meist mindestens 1 Möglichkeit ... _________________ Gruß,
Folker Brandt
=============================
Systemberatung · Datenbanken · Webdesign |
|
Nach oben |
|
 |
spirigwi •----->


Anmeldedatum: 10.07.2003 Beiträge: 1517 Wohnort: Olten-CH
|
Verfasst am: 22.11.2004 - 15:28 Titel: |
|
|
Folker so promte Antwort! Danke
Also das stimmt alles was du schreibst:
Folker hat Folgendes geschrieben: | darauf gestossen werden musst: Du kannst selber error-msg erzeugen ...
error "Ich habe keine Lust mehr ..." number -31960
|
" Nun weiss ich ZB nicht ob man sich nun die Nummer -31960 auswendig lernen sollte für diese error Technik
EDIT 25.1.07: da ich es nun kapiert habe, kann ich auch ganz kurze Fragen stellen. _________________ Skript-Fan => ein � -Fan =>Scr¿¿-KongFuSius_Kurpfusius
Zuletzt bearbeitet von spirigwi am 25.01.2007 - 22:58, insgesamt 3-mal bearbeitet |
|
Nach oben |
|
 |
Folker •---->


Anmeldedatum: 11.12.2000 Beiträge: 649 Wohnort: Holsteinische Schweiz
|
Verfasst am: 22.11.2004 - 16:02 Titel: |
|
|
Hallo,
ja, Du kannst ja "try on error" auch verschachteln!
ZB. so
try
say "Guten Tach"
set tVar to mach_meldung() of me
if tVar is 0 then
error "Benutzer nicht mehr da!" number -128
else if tVar is 1 then
error "Benutzer bricht ab" number -128
else if tVar is 2 then
error "Benutzer ist nicht sicher!" number -31960
end if
-- tVar is 3
say "Auf Wiedersehen!"
on error errmsg number errnum
if errnum is not -128 then
display dialog errmsg
end if
end try
on mach_meldung()
try
set theButtonList to {"Abbruch", "Vielleicht", "Jawoll"}
set temp to the button returned of (display dialog "Moin" buttons theButtonList default button 3 with icon 1 giving up after 5)
set theButtonNr to get_replyNr(theButtonList, temp, 0)
on error errmsg number errnum
if errnum = (-128) then
set theButtonNr to 1
else
error errmsg number errnum
end if
end try
return theButtonNr
-- mögl. Ergebnisse: 0 bei gave up oder 1 bei Abbruch oder 2 und 3
end mach_meldung
on get_replyNr(theL, theButton, x)
repeat with i from 1 to (count items of theL)
log i
if theButton is item i of theL then
set x to i
exit repeat
end if
end repeat
return x
end get_replyNr
Ob das jetzt genau Dein Problem löst? Aber vielleicht ein Ansatz?
PS: Die Nr 31960 ist willkürlich gewählt! Ich weiß nicht, ob diese Nr. mittlerweile von Apple belegt ist - vor Jahren war das nicht der Fall, ist i.d.R. auch wurscht - nur ich wusste, dass bei -31960 und ff. meine eigenen errmsg kamen ... _________________ Gruß,
Folker Brandt
=============================
Systemberatung · Datenbanken · Webdesign
Zuletzt bearbeitet von Folker am 22.11.2004 - 16:15, insgesamt einmal bearbeitet |
|
Nach oben |
|
 |
Folker •---->


Anmeldedatum: 11.12.2000 Beiträge: 649 Wohnort: Holsteinische Schweiz
|
Verfasst am: 22.11.2004 - 16:07 Titel: |
|
|
Nachtrag: Der "gave up" Parameter taucht nur auf, wenn ich ein "giving up after" definiere - brauche ich in der obigen Lösung aber nicht - der "button returned" ist in dem Fall ja leer und mit der Funktion zur gedrückten Button-Nr. erhalten wir in dem Fall eine 0 zurück - also nix gedrückt worden ...
Ach ja, und das Verschachteln kannst Du demonstrieren/simulieren indem Du die Zeile:
error "Programmcrash der übelsten Sorte" number 1
im Handler "mach_meldung() in die Zeile vor on error errmsg number errnum setzt ...
set theButtonNr to get_replyNr(theButtonList, temp, 0)
error "Programmcrash der übelsten Sorte" number 1
on error errmsg number errnum
if errnum = (-128) then
Ja, und das wichtigste zum Schluss (hätte das nicht an den Anfang gehört?) Wenn wir den Button Abbruch z.B. Stoppen! nennen, dann braucht es im "mach_meldung()" Handler nicht die Frage nach errnum -128 - AS hat da nämlich so manches vorkonfiguriert, also ein Knopf im deutschen mit Abbruch generiert den Fehler "User cancelled" (ebenso wie "Cancel") - aber mit Interface Guidelines ist es natürlich eleganter - man muss es nur wissen ...  _________________ Gruß,
Folker Brandt
=============================
Systemberatung · Datenbanken · Webdesign |
|
Nach oben |
|
 |
Folker •---->


Anmeldedatum: 11.12.2000 Beiträge: 649 Wohnort: Holsteinische Schweiz
|
Verfasst am: 22.11.2004 - 18:39 Titel: |
|
|
Gerade nochmal durchgelesen - da ist mir noch einer durchgerutscht:
Bei
on get_replyNr(theL, theButton, x)
repeat with i from 1 to (count items of theL)
log i
if theButton is item i of theL then
set x to i
exit repeat
end if
end repeat
return x
end get_replyNr
darf das "log i" rausgenommen werden - ich brauchte das nur, um im Event-Protokoll die Variable i auszulesen - das hilft im Übrigen bei der Script-Programmierung enorm, sich Inhalte von Variablen "loggen" zu lassen - manch Fehler fällt da schnell ins Auge!
Hm, mit dem Code-Formatter ist es wirklich ein Spaß Scriptfragmente zu posten  _________________ Gruß,
Folker Brandt
=============================
Systemberatung · Datenbanken · Webdesign |
|
Nach oben |
|
 |
spirigwi •----->


Anmeldedatum: 10.07.2003 Beiträge: 1517 Wohnort: Olten-CH
|
Verfasst am: 22.11.2004 - 19:46 Titel: |
|
|
hier winkt einer freundlich
Edit, da sonst nichts substanzielles darin 25.1.07 _________________ Skript-Fan => ein � -Fan =>Scr¿¿-KongFuSius_Kurpfusius
Zuletzt bearbeitet von spirigwi am 25.01.2007 - 23:04, insgesamt 2-mal bearbeitet |
|
Nach oben |
|
 |
Folker •---->


Anmeldedatum: 11.12.2000 Beiträge: 649 Wohnort: Holsteinische Schweiz
|
Verfasst am: 22.11.2004 - 20:01 Titel: |
|
|
Hallo Willy,
also vermute ich mal, dass Du noch mit einem OS vor X unterwegs bist - right? Denn Apple's ScriptEditor (Vers. 2.0 v43) beherrscht Suchen und Ersetzen und Alles Ersetzen usw.
Der Kompilierfehler wg. zu langer Zeile taucht bei mir nicht auf - geht wie 'ne 1, habe ich extra ausprobiert. Ich werde mich bemühen, zu lange Zeilen sauber zu umbrechen
Ja, die Nomenklatur von Handlern und Variablen ist eine über lange Jahre gewachsene Geschichte - werde den div. Editoren-Herstellern für Suchen/Ersetzen Features danken
Weißt - ich sitze als "Exot" in einer 4ma mit lauter Kreativen um mich herum. Die stehen dann öfter mal mit ausgedruckten "Farbklecksen" vor mir und sind begierig zu erfahren, wie ihre neueste Komposition auf den Betrachter wirkt - wenn ich sage, wie ein bunter Farbklecks aber ganz nett, sind die meist etwas weniger freundlich - will sagen, was andere mit Photoshop und Konsorten in die Dateien zaubern, da steh ich mit offenem Mund daneben und frage mich, wie kommen die auf so etwas  _________________ Gruß,
Folker Brandt
=============================
Systemberatung · Datenbanken · Webdesign |
|
Nach oben |
|
 |
spirigwi •----->


Anmeldedatum: 10.07.2003 Beiträge: 1517 Wohnort: Olten-CH
|
Verfasst am: 22.11.2004 - 20:08 Titel: |
|
|
EDIT betr.OS9:
Noch auf OSX - CLASSIC kann man "now-menu", ein Kontrollfeld-Programm, einrichten und dann Tastatur-kürzel einfach neben einen Menupunkt setzen und damit "verewigen". Könnt Ihr das mit OS >9? _________________ Skript-Fan => ein � -Fan =>Scr¿¿-KongFuSius_Kurpfusius
Zuletzt bearbeitet von spirigwi am 25.01.2007 - 23:08, insgesamt einmal bearbeitet |
|
Nach oben |
|
 |
Folker •---->


Anmeldedatum: 11.12.2000 Beiträge: 649 Wohnort: Holsteinische Schweiz
|
Verfasst am: 22.11.2004 - 21:05 Titel: |
|
|
Zitat: | Könnt Ihr das mit OS über 9? |
Äh, ehrlich, ich weiß es net Habe ich auch unter OS 7,8,9 nicht genutzt, wobei ich gerade OS X in Bezug auf Tastaturkürzel als besser empfinde als die "alten" Mac OSs. Dazu muss ich aber auch sagen, dass z.Zt. der Umbruch in unserer Agentur stattfindet, also von OS 9 auf X. Und ich bin SAUFROH endlich das 9er loszuwerden (bin selbst jetzt seit 10.1.3 - seit Jahren nahezu nur noch auf X unterwegs)! Wenn ich mal kurz an die zugegebenermaßen schwer malträtierten Kisten (die Kreativen "doktorn" mal gerne an x00 MB PhotoShop-Dateien 'rum) herangehe, friert mir die Kiste bei jedem 2. mal ein - muss an meiner Ausstrahlung liegen
Aber ja, unter 9 gibt es nahezu nix besseres als Smile. War immer mein bevorzugter Editor. Unter X war das Scripten dann anfänglich nicht so prickelnd, vieles ging nicht, anderes wirkte buggy. Da habe ich lange Zeit AS etwas weniger betrieben (etwas mehr mit Unix auseinandergesetzt), aber mittlerweile läuft es unter X klasse und vor allem schnell. Und wo ich so lange ausgesetzt habe und ja eigentlich auch wieder "Anfänger" bin , reicht mir Apples Editor vollauf - ich finde es im Gegenteil sehr angenehm, dass der Editor nicht so viiiiel bietet wie Smile - lässt mir mehr Konzentration für die Aufgaben. Außerdem finde ich die gleiche Umgebung auf den anderen Agentur-Rechnern direkt nach der OS-Installation vor und muss nicht Sorge tragen, dass diese oder jene Scripting Addition wirklich installiert wurde bzw. mit den Rechten des Praktikanten auch ausgeführt werden darf .  _________________ Gruß,
Folker Brandt
=============================
Systemberatung · Datenbanken · Webdesign |
|
Nach oben |
|
 |
spirigwi •----->


Anmeldedatum: 10.07.2003 Beiträge: 1517 Wohnort: Olten-CH
|
Verfasst am: 22.11.2004 - 21:11 Titel: |
|
|
EDIT war viel zu lange _________________ Skript-Fan => ein � -Fan =>Scr¿¿-KongFuSius_Kurpfusius
Zuletzt bearbeitet von spirigwi am 25.01.2007 - 23:09, insgesamt einmal bearbeitet |
|
Nach oben |
|
 |
spirigwi •----->


Anmeldedatum: 10.07.2003 Beiträge: 1517 Wohnort: Olten-CH
|
Verfasst am: 22.11.2004 - 22:10 Titel: |
|
|
EDIT war viel zu lange _________________ Skript-Fan => ein � -Fan =>Scr¿¿-KongFuSius_Kurpfusius
Zuletzt bearbeitet von spirigwi am 25.01.2007 - 23:10, insgesamt einmal bearbeitet |
|
Nach oben |
|
 |
Folker •---->


Anmeldedatum: 11.12.2000 Beiträge: 649 Wohnort: Holsteinische Schweiz
|
Verfasst am: 22.11.2004 - 22:14 Titel: |
|
|
Hallo Willy,
obacht! Niemals aus "leichtfertigen" Gründen "error" nutzen. Error bedeutet Fehler (wobei die Definition natürlich Auslegungssache bleibt ) - und im Hinblick auf die Verständlichkeit eines Scriptes sollte "error" einen Fehler kennzeichnen. Wenn ich heute meine ersten Scriptexperiemente sichte, ist mir heute vieles unverständlich. Auch Dritte sollen diese Scripte vielleicht in Jahren lesen und verstehen können.
Fehlernummern: Je kürzer, je besser! Aber nach Möglichkeit an Apples "Vorrat" ausrichten - also ein "gave up" kann in bestimmten Situationen als "User cancelled" gedeutet werden ("Wollen Sie Ihre Festplatte löschen?" buttons {"Abbruch", "Ja Sofort!"} - also immer gerne die -128 auch ohne das irgend Einer auf Abbruch klickt. Eigene Nummern habe ich, wie schon gesagt, auf alle Nummern > 31960 gelegt (dürfen ja auch positiv sein). Diese waren zu der Zeit frei, d.h. Apple benutzte diese Nummern nicht. Dann kann ich schon zur Laufzeit anhand der Nummer erkennen, ob ein "artfremdes" Problem besteht oder ob ein kalkuliertes Risiko wie berechnet auftaucht (und vor allem welches! und wo! im Script)
Der ScriptEditor rennt Scripte mit Befehl-R auf jeden Fall los! Dann gibt es im Fenster auf Wunsch auch noch die Tool-Bar mit Button "Ausführen". Und das Kontext-Menü im Script-Fenster ist ein absoluter Hit ...
Doch icon beeinflussen geht latürnich! icon 0, 1, 2 - (stop/note/caution) - weiter können installiert sein - in OS 9 hilft ResEdit zum nachgucken im System, welche icons (mit welchen Nummern) als Resource vorhanden sind.
Deine Lektion 2 - sehe gerade, Du bist mir zuvor gekommen, naja dieser Text hier ist ja lang genug  _________________ Gruß,
Folker Brandt
=============================
Systemberatung · Datenbanken · Webdesign |
|
Nach oben |
|
 |
Folker •---->


Anmeldedatum: 11.12.2000 Beiträge: 649 Wohnort: Holsteinische Schweiz
|
Verfasst am: 22.11.2004 - 22:24 Titel: |
|
|
Lektion 2 - da ist noch ein Bug!
on error errmsg number errnum
if errnum = (-128) then
set theButtonNr to 1
else
error errmsg & " Error Number ist: " & errnum number errnum
end if
end try
So würde ich es lieber scripten:
error "aaaaaaaaaaaaaaaa ist keine Variable!" number -31960
on error errmsg number errnum
if errnum = (-128) then
set theButtonNr to 1
else
set errmsg to (errmsg & " Error Number ist: " & (errnum as string))
(* wobei, falls wir den folgenden Aufruf "error" an die ¬
nächsthöhere Ebene eines try on error "weiterspielen", ¬
das zusammenrechnen "(errmsg & " Error Number ist: " & (errnum as string))" ¬
nicht hier im Script machen müssen - das bleibt der obersten Ebene ¬
des Scripts vorbehalten ...*)
error errmsg number errnum
end if
end try
return theButtonNr
_________________ Gruß,
Folker Brandt
=============================
Systemberatung · Datenbanken · Webdesign |
|
Nach oben |
|
 |
spirigwi •----->


Anmeldedatum: 10.07.2003 Beiträge: 1517 Wohnort: Olten-CH
|
Verfasst am: 23.11.2004 - 15:18 Titel: |
|
|
EDIT 21.1.07 um ASSER nicht unnötig zu belasten lasse ich:
Danke Folker, hier mal die "LANGFASSUNG" von LEKTION 3
"Ich Kurpfuscher!!!!!!!! gottseidank existiert kein smili darüber " _________________ Skript-Fan => ein � -Fan =>Scr¿¿-KongFuSius_Kurpfusius
Zuletzt bearbeitet von spirigwi am 21.01.2007 - 15:08, insgesamt 4-mal bearbeitet |
|
Nach oben |
|
 |
|