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

rekursiven (sich selbst aufrufenden) Handler STOPPEN

 
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: 07.12.2004 - 14:57    Titel: rekursiven (sich selbst aufrufenden) Handler STOPPEN Antworten mit Zitat

"Frage ans Forum
wie kann man an der so markierter Stelle:
"
--xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
"einen Handlerabbruch durch den user setzen dass wenn er merkt dass sowieso nichts geht(ZB Ethernet- Stecker noch ausgezogen) ZB mit CODE_Punkt den handler unterbrechen kann? "
--on run
my F14()
--end run
on F14()
set APA1 to "AllAbrechner.APA"
tell application (my FM()) to activate --ohne öffnet nicht! 4sec
tell application "FileMaker Pro"
--my FM() geht nicht da folg. Befehle FM spezifisch
try
--using terms from .. noch nicht probiert, ginge das?
go to layout "PERIODE" of window APA1 --gleichzeitig überprüft so ob file offen
on error
set PFAD to ((first item of (list disks)) as string) & ":" & ¬
" ALLE_öffner:AllAbrechner.APA"
open file PFAD --für FILE! --oder Alias
--xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
return my F14() --erneuter Handleraufruf
--damit nochmals oben anfängt wenn File noch nicht offen
"Suche nach Ideen wie man hier elegant einen AnwenderAbbruch einfügen könnte"
--xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
end try
set STARTNAME to (first item of (list disks)) as string
if STARTNAME = "mcchef" or STARTNAME = "mclicht" then
set bounds of window APA1 to {624, 37, 1027, 582} --PERIODE••
else
set bounds of window APA1 to {403, 41, 806, 586} --PERIODE••
end if
tell database APA1
activate
go to window APA1
end tell
end tell
end F14

--###########################
on FM()
set PFAD to ((first item of (list disks)) as string) & ":" & ¬
"Programme:FileMaker Pro 5.5:FileMaker Pro"
end FM


oder etwas präzieser formuliert nach Goethes Zauberlehrling:
"...und die Geister, die er rief...."@spirigwi
"In die Ecke Besen seids gewesen"@Snow, @Folker-HILFE!

Gruss und Dank im voraus Willy
_________________
 Skript-Fan => ein � -Fan =>Scr¿¿-KongFuSius_Kurpfusius
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden AIM-Name
Folker
•---->
•---->


Anmeldedatum: 11.12.2000
Beiträge: 649
Wohnort: Holsteinische Schweiz

BeitragVerfasst am: 08.12.2004 - 10:29    Titel: Antworten mit Zitat

Hallo Willy,

so in aller Kürze und vielleicht nicht sonderlich elegant? Einfach eine Zählvariable x einfügen. Beim Scriptstart auf 0 setzen, bei jeder Rekursion um 1 erhöhen set 'x to (x + 1)', dann eine Bedingung formuliern 'if (x >= 3) then error "Zuviele Fehlversuche, prüfen Sie usw..." number -31960
_________________
Gruß,
Folker Brandt
=============================
Systemberatung · Datenbanken · Webdesign
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Snow
Administrator
Administrator


Anmeldedatum: 21.11.2000
Beiträge: 1946
Wohnort: Deiningen

BeitragVerfasst am: 08.12.2004 - 21:04    Titel: Antworten mit Zitat

Hallo Willy,

mal sehen, ob ich das richtig verstanden habe. Im 'on error'-Teil rufst du den Handler erneut auf, falls die Datei noch nicht geöffnet ist. Wenn nun der Benutzer feststellt, dass ein Öffnen gar nicht möglich ist (aus welchem Grund auch immer), sitzen wir in einer Endlosschleife.

Ein Anwenderabbruch erzeugt die Fehlernummer -128. Diese brauchst du eigentlich nur abzufangen und darauf zu reagieren.

Vereinfachtes Beispiel:

doJob()

on doJob()
try
delay 3
tell application "Finder" to open file "Macintosch HD:Documente:ExistiertNicht"
on error number errNr
if errNr = -128 then
display dialog "Vom Benutzer abgebrochen"
return
end if
my doJob()
end try
end doJob


'delay 3' habe ich nur eingebaut, damit man etwas Zeit hat, um mit Befehlstaste-Punkt dazwischen zu funken.
_________________
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: 08.12.2004 - 23:26    Titel: Antworten mit Zitat

"Hey Folker&Snow
hier error&company

ihr verwöhnt mich, eure 2 Bilder im Forum gehen jetzt als screenshot in die Trophäensammlung ein:
der eine liefert gleich für jeden AS-skripter eigentlich zum Necessaire gehörende Zählmaschine, nur ich Greenhorn weiss wieder mal nichts davon vorher und der andere überesetzt endlich meine Fragestellung ins Deutsch dazu, noch hintangehängt so ganz nebenbei, die Lösung in seccem Beispiel
doch ne feine Sache, dieses Forum, nicht wahr.

Nun kann ich endlich anknüpfen an Snows Formulierung mit mehr Problem - berschreib:

bei diesen verfluchten FileMaker-files ist manchmal ein Aufruf-ergebnis nicht sofort zu haben
und wenn er dann einfach weiter skriptet dann prasselts von Fehlermeldungen hiroglyphischer Art nur so los auf die armen user(-Innen)
sodass der user beim ersten missgrlückten Versuch(=file noch nicht offen, kann aber noch werden)
noch nicht eingesetzt werden sollte
--> daher 2. Handleraufruf
Wenns jetzt immernoch nicht geht beginnen die anderen Gründe zu spielen u.a:
- Hardware
- ein anderes FM-file steckt in einer FORTFAHREN warte - Zange
-...jedenfalls wäre an diesem Punkt das Wissen des Anwenders gefragt

Snow hat Folgendes geschrieben:

doJob()

on doJob()
try
delay 3
tell application "Finder" to open file "Macintosch HD:Documente:ExistiertNicht"
on error number errNr
if errNr = -128 then
display dialog "Vom Benutzer abgebrochen"
return
end if
my doJob()
end try
end doJob


also: [in die Worte Snows die [Formel von Folker] eingebaut]: "

--CODE-- dh man kanns gefahrlos abrattern
property x : 1 -- solche Techniken bei Folker abgeguckt
--für Lebensverlust bei Falschanwendung...keine Haftung durch den Nachahmer Bäh!
with timeout of 3 seconds
-- hier die zeitkritischen Anweisungen platzieren= Snow-Zitat
doJob() --timeout scheint keine Wirkung zu haben, falscher Ort? motzen
end timeout
on doJob()
try
delay 3 --macht nun die Sache wesentlich ungefährlicher, danke Snow
"da man ja CODE_Punkt drücken kann und damit error erzeugt(nicht gewusst ich)"
tell application "Finder" to open file "Macintosch HD:Documente:ExistiertNicht"
on error number errNr
if errNr = -128 then
display dialog "Vom Benutzer abgebrochen"
--return--auflösen weil brauche nochmals einen Versuch
--irgendwie kommt er gar nicht hier hinein,ich schwörs Snow, obige HD
--nicht zu besitzen, der Pausenschlag nach Mac würde ja schon das
--Doppelklicken auf Name verhindern..bei mir längst verlassene Nomenklatur
--AHA!!!! Ach du Schreck! durch CODE_Punkt kommt man hier hin, ach so, SUPER!!!!!!!
end if
--START-Zähler FOLKERFOLKERFOLKERFOLKERFOLKERFOLKER
set x to (x + 1) -- so gail
activate (display dialog x)
--dann eine Bedingung formuliern
if (x >= 3) then
set x to 1 --damit x -wieder auf 1 zurückgedreht wird error&company lässt grüssen
error "Zuviele Fehlversuche, prüfen Sie usw..." number -31960
end if
--END Zähler FOLKERFOLKERFOLKERFOLKERFOLKERFOLKER
activate (display dialog "sollte dialogen vor erneutem Handleraufruf")
my doJob()
end try
end doJob
"Ich danke beiden für ihren so wertvollen "
doJob --not
doppelJob -- dats it!
DOPPELDANK --Willy

_________________
 Skript-Fan => ein � -Fan =>Scr¿¿-KongFuSius_Kurpfusius
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden 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