Fischer-Bayern.de
 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen   RegistrierenRegistrieren 
 ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

error in Skriptablauf einlegen ohne Dialog

 
Dieses Forum ist gesperrt, du kannst keine Beiträge editieren, schreiben oder beantworten.   Dieses Thema ist gesperrt, du kannst keine Beiträge editieren oder beantworten.    Fischer-Bayern.de Foren-Übersicht -> AppleScript-Forum
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
spirigwi
•----->
•----->


Anmeldedatum: 10.07.2003
Beiträge: 1517
Wohnort: Olten-CH

BeitragVerfasst am: 16.01.2005 - 15:37    Titel: error in Skriptablauf einlegen ohne Dialog Antworten mit Zitat

Gibt es eine alternative für error-Dialog?
ich möchte einen error in ein von aussen aufzurufendes Skript einbauen
einfach so in einen Skriptvarianten-Zweig, dann bleibt wunschgemäss das ganze Skript beim error stecken nach:

error -- – 8753 zugefügt 22h13: wunschgemäss!

Nun aber die Frage: kann ich mit error auch ein Skript unterbrechen mit der Funktion error, jedoch den dazu erzeugten Dialog "an error has occured" vermeiden? oder überhaupt eine Dialogmeldung an der Stelle des :
error -- -2753
vermeiden und trotzdem die Funktion eines errors generieren.

Geht das überhaupt?
Embarassed Ps für Spötter: einer der häufigsten Ursachen von Mammutsätzen ist die mangelnde Sprachkenntnis! Ich möchte euch mal schwimmen sehen wenn ihr wie ich als schweizer in einer Fremdsprache so schwierige Fragen stellen müsstet... Fratze schneiden
_________________
 Skript-Fan => ein � -Fan =>Scr¿¿-KongFuSius_Kurpfusius


Zuletzt bearbeitet von spirigwi am 16.01.2005 - 23:13, insgesamt einmal bearbeitet
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden AIM-Name
Snow
Administrator
Administrator


Anmeldedatum: 21.11.2000
Beiträge: 1946
Wohnort: Deiningen

BeitragVerfasst am: 16.01.2005 - 16:31    Titel: Antworten mit Zitat

Hallo Willy,

ein Skript kannst du doch immer abbrechen, wenn im 'on error'-Teil 'return' angegeben ist:

try
    error
on error
    return -- bricht das Skript ohne Fehlermeldung ab
end try


Falls du selbstbestimmte Fehler abfangen möchtest:

try
    error number -50000
on error errmsg number errNr
    log errNr
    
if errNr = -50000 then
        display dialog "Mein selbstgenerierter Fehler ist aufgetreten."
        --
return -- oder eine alternative Anweisung
    else -- falls ein anderer Fehler auftritt
        return
    end if
end try


Ist's das, was du suchst?
_________________
Peter
-
Fischer-Bayern.de|Shadetreemicro.com
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen AIM-Name
spirigwi
•----->
•----->


Anmeldedatum: 10.07.2003
Beiträge: 1517
Wohnort: Olten-CH

BeitragVerfasst am: 16.01.2005 - 18:52    Titel: Antworten mit Zitat

Snow hat Folgendes geschrieben:

Ist's das, was du suchst?

Das gute an schlecht formulierten Fragen im deinem Forum ist doch dass man von euch ungewollt eine ganze Menge super-Tipps mitgeliefert bekommt. Danke Snow!

Aber meine Frage(s. Warnung im ersten posting betr. Formulierungskünste)
ist die:

das Skript möchte ich gerade nicht mit return abschliessen lassen an der error-Stelle sondern wirklich mit error

Klar wenn ich es mit try aufrufe kriege ich keinen Dialog beim absichtlich erzeugten error und das wäre die Lösung um nicht die Error-Meldung lesen zu müssen.

Wenn ich aber das Skript direkt anlaufen lasse wird es mir an der error-Stelle eine Meldung liefern, diese will ich vermeiden. Aber wie?
In unserm Land sagt man dem: Batze UNDS Weggli:
ERROR JA UND DIALOG=( Komentar dazu) NEIN

oder wie geht das schon wieder mit dem runden Quadrat?

Ich wäre natürlich glücklich schon wenn man die Frage verstünde
Embarassed
_________________
 Skript-Fan => ein � -Fan =>Scr¿¿-KongFuSius_Kurpfusius
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden AIM-Name
Snow
Administrator
Administrator


Anmeldedatum: 21.11.2000
Beiträge: 1946
Wohnort: Deiningen

BeitragVerfasst am: 16.01.2005 - 19:09    Titel: Antworten mit Zitat

Willy, es gibt doch nur zwei Möglichkeiten einen Fehler zu behandeln:

1. abfangen und übergehen - dann läuft das Script weiter
2. abfangen und behandeln

Wenn du also die Fehlermeldung nicht haben willst, der Fehler aber nicht ignoriert werden soll, bleibt ja nur Alternative 2.

Fang den Fehler ab und lass dann das Script tun, was dir beliebt - es muss ja nicht return sein.

Du kannst den Fehler ja z.B. auch in ein Logfile schreiben lassen oder ähnliches. Oder unterschiedliche Handler aufrufen ...

Die einzige Möglichkeit, ein Skript wirklich mit einem Fehler abzubrechen, ist einen Anwenderabbruch zu simulieren:

error number -128

Das entspricht dem Verhalten des Cancel-Buttons in einem Standard-Dialog. Dies ist auch der einzige Fehler, der keinen Fehler-Dialog erzeugt.

Wenn ein Skript als Programm gespeichert ist, kommt noch 'quit' in Frage.
_________________
Peter
-
Fischer-Bayern.de|Shadetreemicro.com
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen AIM-Name
spirigwi
•----->
•----->


Anmeldedatum: 10.07.2003
Beiträge: 1517
Wohnort: Olten-CH

BeitragVerfasst am: 16.01.2005 - 20:00    Titel: Antworten mit Zitat

Snow hat Folgendes geschrieben:

1. abfangen und übergehen - dann läuft das Script weiter
2. abfangen und behandeln

Wenn du also die Fehlermeldung nicht haben willst, der Fehler aber nicht ignoriert werden soll, bleibt ja nur Alternative 2.


Jetzt weiss ich warum meine Frage nicht verstanden wird, sie scheint zu absurd:
Snow hat Folgendes geschrieben:

der Fehler aber nicht ignoriert werden soll

er soll vor allem vom AS nicht weiter behandelt werden mittels einer Meldung wäre mein Wunsch sondern das AS sollte sich klaglos an der error-Skriptstelle verabschieden aber dem aufrufenden Skript einen error liefern, GENERIERN FüR..weitere Fromulierungen gesucht..darum Beispiel:
my Skript1()
on Skript1()
tell application "Finder"
try
my Skript2()
on error
--nur wenn Skript2() einen error erzeugt wird Skript2() angehalten und es geht hier weiter
display dialog "so kann ich an der error Meldung, die aus dem Skript2 stammen würde, trotz error im Skript2 vorbeikommen. Skript2 kann so also errors erzeugen ohne entspr. Dialog" default answer ¬
"[error] im Skript2 brauche ich aber für Skript 1 damit ich überhaupt hier hin komme (=unumständlichste Methode wenn man sich beide Skipts als sog. MAMMUTSKRIPTE vorstellt, kennst du ein solches in deinem Forum Snow? eine Horrorvorstellung..)"
end try
end tell
end Skript1

--my Skript2() --ohne die [--]--> direkter Aufruf von Skript2
on Skript2()
--zugegeben so füdliblutt macht dies Skript keinen Sinn kann aber sinnvoll eingesetzt werden
error " Skript2 möchte ich ebenfalls direkt aufrufen können mit
my Skript2()Wenn ichs aber aufrufe direkt, muss ichs lesen.
Was muss ich tun, dass es mir den error erzeugen lässt aber diesen Text und vor allem gar keinen Text zeigt nach direkt my Skript2()?
"
end Skript2

_________________
 Skript-Fan => ein � -Fan =>Scr¿¿-KongFuSius_Kurpfusius
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden AIM-Name
Snow
Administrator
Administrator


Anmeldedatum: 21.11.2000
Beiträge: 1946
Wohnort: Deiningen

BeitragVerfasst am: 16.01.2005 - 20:27    Titel: Antworten mit Zitat

Du hast keine verschiedenen Skripte oder Skriptobjekte, sonder nur verschiedene Handler. Jetzt ist mir schon klar, warum du kein 'return' gebrauchen kannst. Ein 'return' im zweiten Handler würde das gesamte Skript abbrechen und Handler 1 käme nicht mehr weiter zum Zug.

Wie wäre es mit folgender Lösung:

run Skript1

script Skript1
    try
        run my Skript2
    on error errmsg
        display dialog errmsg
        --
und mach' weiter
        
beep 3
    end try
end script


script Skript2
    try
        error number -30000
    on error number errNr
        error number errNr
    end try
end script


Hier wird der Fehler des Skript2 im 'on error'-Teil des Skript1 ausgegeben. Hilft dir das weiter?


Und hier noch die Version mit Handlern:

Skript1()

on Skript1()
    try
        my Skript2()
    on error errmsg
        display dialog errmsg
        --
und mach' weiter
        
beep 3
    end try
end Skript1


on Skript2()
    try
        error number -30000
    on error number errNr
        error number errNr
    end try
end Skript2

_________________
Peter
-
Fischer-Bayern.de|Shadetreemicro.com
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen AIM-Name
spirigwi
•----->
•----->


Anmeldedatum: 10.07.2003
Beiträge: 1517
Wohnort: Olten-CH

BeitragVerfasst am: 16.01.2005 - 22:25    Titel: Antworten mit Zitat

Snow hat Folgendes geschrieben:
Die einzige Möglichkeit, ein Skript wirklich mit einem Fehler abzubrechen, ist einen Anwenderabbruch zu simulieren:

error number -128

Genau das mach ich im handler: Skript2()

Snow hat Folgendes geschrieben:

error number -128

Dies ist auch der einzige Fehler, der keinen Fehler-Dialog erzeugt.


Genau das hab ich gesucht!
aber: error number -128 erzeugt doch einen Fehler-Dialog(klar nicht ein Dialog sondern eine Meldung) wenn Skript2() direkt aufgerufen wird:

so nämlich: BildliMenschImProfilSprechblase__user canceled

wie dies geschwätz verhindern?

ich probiers mal mit deiner Version
Snow hat Folgendes geschrieben:
"Und hier noch die Version mit Handlern: "

Frontbericht folgt umgehend:
_________________
 Skript-Fan => ein � -Fan =>Scr¿¿-KongFuSius_Kurpfusius
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden AIM-Name
spirigwi
•----->
•----->


Anmeldedatum: 10.07.2003
Beiträge: 1517
Wohnort: Olten-CH

BeitragVerfasst am: 16.01.2005 - 23:05    Titel: Antworten mit Zitat

"ich moduliere etwas deine Handlerversion mit dieser kann ich nun einfacher zeigen:"

Handler1()

on Handler1()
try
my Handler2()
on error --errmsg
display dialog " mach' hier weiter weil Handler2() error ergibt"
-- und mach' weiter
beep 3
end try
display dialog "und: und mach' weiter"
end Handler1


on Handler2()
if 2 is not 3 then --um diesen Stuss Handler1() mitzuteilen setze ich error
error number -128
else
display dialog "2 = 3 offenbar und mach hier auch weiter"
end if
end Handler2
-- bis hier alles wunschgemäss wenn auch 2. Modell[= my Handler2() ]ohne Meldung bliebe:


my Handler2() (*soll nur zeigen dass doch eine error-Meldung aktiviert wird falls Handler2() direkt aufgerufen wird *)

"Die error-Meldung [user canceled] kann wohl zumindest einfach nicht verhindert werden?"

_________________
 Skript-Fan => ein � -Fan =>Scr¿¿-KongFuSius_Kurpfusius
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden AIM-Name
Snow
Administrator
Administrator


Anmeldedatum: 21.11.2000
Beiträge: 1946
Wohnort: Deiningen

BeitragVerfasst am: 16.01.2005 - 23:16    Titel: Antworten mit Zitat

Hi Willy,

mir ist noch eine Möglichkeit eingefallen. Mir ist zwar immer noch nicht klar, was du damit bezwecken willst, aber interressant ist das Thema ja durchaus.

Skript1()

on Skript1()
    if (my Skript2()) is false then
        display dialog "Fehler in Skript2"
    end if
end Skript1

on Skript2()
    try
        2 = 3 -- produziert Fehler
    on error
        return false
    end try
end Skript2

_________________
Peter
-
Fischer-Bayern.de|Shadetreemicro.com
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen AIM-Name
Beiträge der letzten Zeit anzeigen:   
Dieses Forum ist gesperrt, du kannst keine Beiträge editieren, schreiben oder beantworten.   Dieses Thema ist gesperrt, du kannst keine Beiträge editieren oder beantworten.    Fischer-Bayern.de Foren-Übersicht -> AppleScript-Forum Alle Zeiten sind GMT + 2 Stunden
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.


Powered by phpBB © 2001, 2002 phpBB Group
Deutsche Übersetzung von phpBB.de


AppleScript für absolute Starter