| 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 |  | 
	
		|  | 
	
		|  |