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

Anmeldedatum: 28.12.2001 Beiträge: 23
|
Verfasst am: 29.12.2001 - 00:08 Titel: Probleme mit Droplets bei AppleSkriptStudio |
|
|
Das neue AppleSkriptStudio ist in der Tat umwerfend, wie hier auch schon zu lesen war. Aber was nützt der schönste Interface-Builder, wenn ich mein Skript nicht ans Laufen kriege: der on-open-Handler liefert hauptsächlich die Fehlermeldung: NSInternalScriptError (8). Dasselbe kurze Test-Skript, kompiliert unter SkriptEditor für OSX, läuft dagegen problemlos. Hat jemand eine Idee, woran das liegen könnte?
Dirk |
|
Nach oben |
|
 |
Snow Administrator


Anmeldedatum: 21.11.2000 Beiträge: 1946 Wohnort: Deiningen
|
Verfasst am: 29.12.2001 - 01:51 Titel: Probleme mit Droplets bei AppleSkriptStudio |
|
|
Ich habe mal eben den anderen Weg probiert und den Scriptcode eines bereits fertigen Droplets in ein Project-Builder-Droplet eingesetzt.
Build succeeded
Ausführung: fehlerfrei
Kann also kein generelles Problem sein. _________________ Peter
-
Fischer-Bayern.de|Shadetreemicro.com |
|
Nach oben |
|
 |
DickerZeh •-->

Anmeldedatum: 28.12.2001 Beiträge: 23
|
Verfasst am: 29.12.2001 - 18:54 Titel: Probleme mit Droplets bei AppleSkriptStudio |
|
|
Lieber Snow,
danke für's Ausprobieren. Vielleicht sitzt der Fehler tatsächlich mal wieder vor dem Bildschirm statt dahinter, aber ich mache eigentlich nix Besonderes. Ganz kurz und einfach: Ich eröffne ein neues Droplet-Projekt, füge deinen Beispiel-Code aud diesem Forum für ein Droplet ein:
on open x
Ý if class of x is string then
Ý set the_type to class of x as text
Ý display dialog the_type buttons "OK" default button 1
Ý display dialog ((count words in x) as text) & " words. " buttons "OK" default button 1
Ý else if class of x is alias then
Ý set the_type to class of x as text
Ý display dialog the_type buttons "OK" default button 1
Ý display dialog ( "File path: " & x as text) buttons "OK" default button 1
Ý else if class of x is list then
Ý set the_type to class of x as text
Ý display dialog the_type buttons "OK" default button 1
Ý repeat with i in x
Ý tell me to open contents of i
Ý end repeat
Ý end if
end open
und lösche natürlich den original on-open-handler. Danach builde (*SchlechterDeutsch*) ich das Script, lasse ein paar Files auf das Programmsymbol fallen und bekomme immer den Fehler: NSInternalScriptError (8).
Wenn es bei dir klappt, was machst du anders?
Noch eine Frage: wie debugge ich überhaupt ein Droplet, wenn ich über diese erste Hürde hinweg bin? Wie übergebe ich Dateien oder Ordner an das Script und starte dennoch den Debugger?
Bin dankbar für Hilfe!
Dirk |
|
Nach oben |
|
 |
Snow Administrator


Anmeldedatum: 21.11.2000 Beiträge: 1946 Wohnort: Deiningen
|
Verfasst am: 29.12.2001 - 20:08 Titel: Probleme mit Droplets bei AppleSkriptStudio |
|
|
Das Skript läuft bei mir auch nicht.
Leider funktionieren einige Sachen in AppleScript-Studio anders.
Einfaches Beispiel:
set the_Result to button returned of (display dialog "Just testing!" )
Das führt ebenfalls zu einem Fehler. Es ist natürlich frustrierend, wenn die einfachsten Sachen schon nicht mehr funktionieren.
Ich möchte deshalb im Praxis-Teil von ScriptMyMac.de eine entsprechende Rubrik schaffen, wo solche 'Snippets' gesammelt werden - gewissermaßen als Nachschlagewerk.
Aufruf an ALLE: Schickt mir eure Erkenntnisse per Mail
Ich werde das dann entsprechend aufbereiten.
Zum Debugging:
Da kann ich dir für AppleScript-Studio noch keine Tipps geben. Mir hat bisher das Eventprotokoll und das Ergebnisfenster wesentlich mehr geholfen. Mit dem Debugger in Project Builder kann ich ehrlich gesagt noch gar nichts anfangen.
Droplets habe ich bisher immer so debuggt, dass ich versucht habe, für den Run-Handler die gleichen Bedingungen zu schaffen wie für den Open-Handler.
Beispiel:
on run
set x to (choose file) as list
-- set x to choose folder
do_my_stuff(x)
end run
on open x
do_my_stuff(x)
end open
on do_my_stuff(x)
if class of x is string then
set the_type to class of x as text
display dialog the_type buttons "OK" default button 1
display dialog ((count words in x) as text) & " words. " buttons "OK" default button 1
else if class of x is alias then
set the_type to class of x as text
display dialog the_type buttons "OK" default button 1
display dialog ( "File path: " & x as text) buttons "OK" default button 1
else if class of x is list then
set the_type to class of x as text
display dialog the_type buttons "OK" default button 1
repeat with i in x
tell me to open contents of i
end repeat
end if
end do_my_stuff _________________ Peter
-
Fischer-Bayern.de|Shadetreemicro.com
Zuletzt bearbeitet von Snow am 24.02.2003 - 23:02, insgesamt einmal bearbeitet |
|
Nach oben |
|
 |
DickerZeh •-->

Anmeldedatum: 28.12.2001 Beiträge: 23
|
Verfasst am: 29.12.2001 - 20:52 Titel: Probleme mit Droplets bei AppleSkriptStudio |
|
|
Na, da bin ich ja beruhigt, dass der 'Fehler' doch bei ASS liegt.
Wie kriege ich denn raus, wie ich eine Dateiliste im on open handler behandeln muss?
Wenn AppleSkript für AppleSkriptStudio sich so vom bisherigen unterscheidet, bräuchte man auch eine Liste der Befehle von Apple. Hat jemand eine Quelle?
Dirk |
|
Nach oben |
|
 |
Snow Administrator


Anmeldedatum: 21.11.2000 Beiträge: 1946 Wohnort: Deiningen
|
Verfasst am: 29.12.2001 - 21:04 Titel: Probleme mit Droplets bei AppleSkriptStudio |
|
|
Tja, da hilft nur Ausprobieren!
Der Fehler in unserem Testskript war die Definition der Buttons für die Dialoge.
display dialog the_type buttons "OK" default button 1
Die Buttons in einer Liste aufführen, so wie sich das gehört, und schon läuft auch dieses Skript. Anscheinend ist AS-S nicht so fehlertolerant. _________________ Peter
-
Fischer-Bayern.de|Shadetreemicro.com
Zuletzt bearbeitet von Snow am 24.02.2003 - 23:03, insgesamt einmal bearbeitet |
|
Nach oben |
|
 |
Snow Administrator


Anmeldedatum: 21.11.2000 Beiträge: 1946 Wohnort: Deiningen
|
Verfasst am: 29.12.2001 - 21:44 Titel: Probleme mit Droplets bei AppleSkriptStudio |
|
|
Muss mich korrigieren!
set the_Result to button returned of (display dialog "Just testing!" )
Das funktioniert doch. Da muss ich wohl bei meinen Tests einen anderen Fehler drin gehabt haben. _________________ Peter
-
Fischer-Bayern.de|Shadetreemicro.com
Zuletzt bearbeitet von Snow am 24.02.2003 - 23:03, insgesamt einmal bearbeitet |
|
Nach oben |
|
 |
DickerZeh •-->

Anmeldedatum: 28.12.2001 Beiträge: 23
|
Verfasst am: 30.12.2001 - 00:16 Titel: Probleme mit Droplets bei AppleSkriptStudio |
|
|
An der Definition des Dialogs liegt es leider nicht
Selbst wenn man die Buttons weglässt (was normalerweise funktioniert), kommt es im Kontext des Testskripts zum Fehler.
Nach meinen Versuchen ist es diese Zeile:
set the_type to class of x as string
denn hier scheint schon the_type nicht korrekt belegt zu werden, wodurch es in
display dialog the_type
zu einem Fehler kommt.
Aber es gibt keine Möglichkeit, die Variable im Debugger zu überprüfen, denn ein AS-S-Droplet lässt sich offensichtlich wirklich nur als Droplet starten Wenn ich es mit deinem on-run-tipp versuche, bekomme ich nur ein aktives Droplet (in der Menüleiste) ohne jede Reaktion.
Ich kann kaum glauben, dass AS-S solche Probleme verursachen sollte!
Gruß, Dirk |
|
Nach oben |
|
 |
Snow Administrator


Anmeldedatum: 21.11.2000 Beiträge: 1946 Wohnort: Deiningen
|
Verfasst am: 30.12.2001 - 02:10 Titel: Probleme mit Droplets bei AppleSkriptStudio |
|
|
Also bei mir haben die richtigen Definitionen bei den Dialogen geholfen.
display dialog the_type buttons { "OK" } default button 1
Allerdings läuft das Skript nur jedes zweite Mal richtig.
Zum Debugging:
Ich vergaß zu schreiben, dass meine geschilderte Methode in AS-S auch nicht funktioniert. Das war eben nur die Vorgehensweise, die ich bisher angewendet hatte.
In AS-S setzt du an allen kritischen Punkten Breakpoints. Dann auf das Symbol "Hammer & Spraydose" klicken oder Befehlstaste & Y drücken oder aus dem Menü "Build" die Option "Build and Debug" auswählen.
Daraufhin startet der Debugger. Sonst tut sich allerdings nicht viel. Das Droplet erscheint aber im Dock. Du kannst jetzt Dateien darauf ziehen. Dann rührt sich auch der Debugger.
Mit den Informationen, die er mir liefert bin ich allerdings auch noch nicht so ganz zufrieden. Aber vielleicht gibt's ja noch mehr zu entdecken.
Mal sehen. _________________ Peter
-
Fischer-Bayern.de|Shadetreemicro.com
Zuletzt bearbeitet von Snow am 24.02.2003 - 23:04, insgesamt einmal bearbeitet |
|
Nach oben |
|
 |
DickerZeh •-->

Anmeldedatum: 28.12.2001 Beiträge: 23
|
Verfasst am: 30.12.2001 - 16:30 Titel: Probleme mit Droplets bei AppleSkriptStudio |
|
|
Jupp, jetzt klappt's auch bei mir, danke!
Seltsam ist, dass der display dialog-Befehl z.T. auch ohne Angabe eines Buttons klappt: display dialog Variable.
Aber in den entscheidenden Fällten tat es nur die vollständige Variante.
Zum Debugging: Ich stand wohl auf dem Schlauch: klar kann man die Dateilisten auch auf den Icon im Dock schieben, danke für den Tipp. So klappt es , ...meistens. Seltsamerweise überspringt der Debugger manchmal einfach die Breakpoints, obwohl sie alle aktiviert sind.
Überhaupt: das mit AS-S kompilierte Skript übergeht eine nicht funktionierende Variablenzuweisung (z.B. wegen Typen-Konflikts) ohne Murren, erst wenn die Variable weiterverarbeitet oder z.B. angezeigt werden soll, kommt die Fehlermeldung, weil die Variable angeblich nicht existiere. Ich habe das Gefühl, dass v1.0 von ASS noch nicht perfekt funktioniert.
Dirk |
|
Nach oben |
|
 |
Snow Administrator


Anmeldedatum: 21.11.2000 Beiträge: 1946 Wohnort: Deiningen
|
Verfasst am: 01.01.2002 - 01:39 Titel: Probleme mit Droplets bei AppleSkriptStudio |
|
|
Jetzt stehe ich vor dem gleichen Problem:
set x to path to desktop from user domain
Das funktioniert, wenn man es so in ein AS-S Projekt einbaut.
set y to desktop
set x to path to y from user domain
Das klappt auch noch.
Sobald ich aber 'desktop' in einer Liste stehen habe und es daraus verwenden will, klappt es nicht mehr.
"Finder got an error: Can't make desktop into an item"
Hierzu muss ich noch sagen, dass ich die Liste in einem tell-Block, der an den Finder gerichtet ist, erstelle.
tell application "Finder"
set dieListe to { apple menu, desktop, fonts, usw. }
end tell
Ohne diesen tell-Block wird das Projekt gar nicht kompiliert.
Eine Lösung ist leider noch nicht in Sicht. _________________ Peter
-
Fischer-Bayern.de|Shadetreemicro.com |
|
Nach oben |
|
 |
MiDan23 Gast
|
Verfasst am: 20.08.2002 - 16:00 Titel: Probleme mit Droplets bei AppleSkriptStudio |
|
|
Als ob das alle Probleme gewesen wären ...
Ich habe mit dem Project-Builder ein AppleScript-Droplet-Projekt gestartet und nur diesen Code geschrieben :
on run t
display dialog "RUN"
quit
end run
on open t
display dialog "OPEN"
quit
end open
Als Droplet funktioniert die Sache wie erwartet, aber wenn ich dieses Droplet driekt starte, kommt nur das DROPLET-Menü und das wars ...
Den Trick mit dem "on launched"-Handler habe ich auch ausprobiert ... ohne Erfolg ...
Den Code im AppleScript-Editor eingefügt, als Programm gespeichert :
Alles läuft wie eine Eins ...
Wenn ich eine einfache Möglichkeit wüsste, um einen netten Konfig-Dialog direkt mit AppleScript zu erstellen, wäre mir auch geholfen ... |
|
Nach oben |
|
 |
Snow Administrator


Anmeldedatum: 21.11.2000 Beiträge: 1946 Wohnort: Deiningen
|
Verfasst am: 20.08.2002 - 16:24 Titel: Probleme mit Droplets bei AppleSkriptStudio |
|
|
Also der "on run"-Handler bringt gar nichts.
Es kann nur mit dem "on launched" funktionieren. Diese Funktion muss aber einem Objekt zugewiesen sein. Deshalb beginnt der Handler ja auch mit:
on launched theObject
Damit dürfte aber auch klar sein, dass man zuerst ein Dialogfenster im Interface-Builder erstellen muss, damit man dies mit dem "on launched"-Handler verknüpfen kann. Mit einer Meldung durch "display dialog" kann es nicht gehen, da hier diese Verknüpfung fehlt.
Droplet-Applet-Artikel
Gruß _________________ Peter
-
Fischer-Bayern.de|Shadetreemicro.com
Zuletzt bearbeitet von Snow am 24.02.2003 - 23:05, insgesamt einmal bearbeitet |
|
Nach oben |
|
 |
MiDan23 Gast
|
Verfasst am: 20.08.2002 - 21:15 Titel: Probleme mit Droplets bei AppleSkriptStudio |
|
|
Ich brings immer noch nicht fertig ...
Scheinbar bin ich für AppleScript zu blöd ... vielleicht sollte ich wieder zu TCL/TK zurück ...
"on launched" wird generell ignoriert. Wie weise ich diese funktion einem Objekt zu ?
Im Info-Fenster unter "Applescript" ist nichts von "launched" zu sehen ...
(Sorry wenn ich nerve, wahrscheinlich habe ich mir für mein erstes AppleScript-Projekt was "zu grosses" rausgesucht ..." |
|
Nach oben |
|
 |
MiDan23 Gast
|
Verfasst am: 20.08.2002 - 22:23 Titel: Probleme mit Droplets bei AppleSkriptStudio |
|
|
UND ES GEHT DOCH ...
... und zwar folgendermassen :
1) Project Builder starten und ein neues AppleScript-Droplet-Projekt anfangen
2) Unter "Ressources" ein Doppleklick auf "MainMenu.nib" um den Interface Builder zu starten
3) Im Fenster "MainMenu.nib" unter "Instances" "File's owner" anklicken und das Info-Fenster öffnen (Menü Tools -> Show Info)
4) Im Info-Fenster oben auf "AppleScript" gehen
5) Bei den Event-Handlern auf den Pfeil vor "Application" klicken
6) Jetzt kann man den idle-Handler deaktivieren wenn man ihn nicht braucht (ASS fügt den Code sonst selbst wieder ein)
7) Und man kann den launched-Handler aktivieren !
8) Wenn man jetzt unten auf "Edit Script" klickt und folgenden Code eingibt :
on open theObject
display dialog "OPEN"
quit
end open
on launched theObject
display dialog "LAUNCHED"
end launched
erhält man ein Programm, das folgendes tut :
1) Wenn man es per Doppelklick startet, erscheint der "LAUNCHED"-Dialog
2) Man kann das Programm mittels Menü-Befehl beenden ...
3) ... oder etwas aufs Icon "fallen lassen". Dann erscheint der "OPEN"-Dialog und das Programm wird beendet.
4) Wenn man, ohne es per Doppelklick zu starten, etwas aufs Icon "dropt", erscheint zuerst der "OPEN"-Dialog, gefolgt vom "LAUNCHED"-Dialog und das Programm wird beendet. |
|
Nach oben |
|
 |
|