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

FM 4.1 Scriptverwaltung / Inhalt eines Scripts...auslesen

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


Anmeldedatum: 01.02.2002
Beiträge: 18

BeitragVerfasst am: 21.05.2003 - 14:54    Titel: FM 4.1 Scriptverwaltung / Inhalt eines Scripts...auslesen Antworten mit Zitat

Hallo zusammen,

ich würde gern meine Scripts mit FileMaker 4.1 verwalten und möchte sie dazu per Droplet in einzelne FM-Datenbank-Felder einlesen (Name der Datei, Pfad, Inhalt als Text, etc.).

Frage: Wie kann man den Inhalt eines Scripts / Droplets und den Text des jeweiligen Beschreibungsfeldes auslesen?

Immer vorausgesetzt, dass das jeweilige Script editierbar ist, möchte ich natürlich die Handarbeit "Öffnen in SkriptEditor, alles auswählen, kopieren, in FM-Felder einsetzen" automatisieren.

Kann mir da jemand einen Rat geben?
Schönen Gruß
Claus
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Snow
Administrator
Administrator


Anmeldedatum: 21.11.2000
Beiträge: 1946
Wohnort: Deiningen

BeitragVerfasst am: 21.05.2003 - 20:16    Titel: Antworten mit Zitat

Hallo Claus,

mit Dialog Director 0.7 wird auch die OSAX "Resource Utilities" geliefert. Damit kannst du den Script-Text aus einer Script-Resource auslesen.

Nach einigen Versuchen bin ich zu folgender funktionierenden Variante gekommen:

on run
set f to choose file
set rf to res open f
try
set x to (res get rf id 128 type "scpt") as styled text

on error number n
res close rf
error number n
end try
res close rf
set the clipboard to x
end run


Hier habe ich das mitgelieferte Beispiel "Get Res.as" entsprechend abgewandelt.

Ich hoffe, das hilft dir weiter.

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


Anmeldedatum: 01.02.2002
Beiträge: 18

BeitragVerfasst am: 23.05.2003 - 16:09    Titel: Snow! Danke! Antworten mit Zitat

Snow! Danke!

Wieder einmal beweist sich, welche Seele von Mensch das AS-Forum betreibt!

Ein Angebot:

Wenn mir die geplante FM/AS-Programmierung gelingen sollte, kann ich die entsprechende FM-Basidatei zur Scriptarchivierung nebst Script über das Forum anbieten.
Der Download könnte über das Forum oder aber per Link zu meiner Seite erfolgen.
Was meinst Du dazu?

Und noch eine Frage / Bitte:
Dein Script habe ich entsprechend angepasst; es läuft, zwar sehr langsam, aber “et loift”;
was ich mal wieder nicht gebacken bekomme, ist die Programmierung als Droplet, auf das man einen Ordner zieht, wobei alle Scripts / Droplets innerhalb dieses Ordners und der weiteren Unterordner berücksichtigt werden.
Kannst Du da noch etwas tun?

Schönen Tach
Claus




on open theList
   
   --on open
   tell application "Finder"
      activate
      set fileList to selection
      --hier die zu öffnende FM-Datenbank angeben
      open file "AppleScript-Archiv" of folder ¬
         "AppleScript" of folder "Apple Extras" of folder ¬
         "Applications (Mac OS 9)" of startup disk
      set FMdatenbank to "AppleScript-Archiv"
      
      with timeout of 6000 seconds
         
         repeat with thisItem in fileList
            set thisItem to thisItem as alias
            set rf to res open thisItem
            try
               set BeschreibungTxt to (res get rf id 1128 type "TEXT") as styled text
            end try
            try
               set ScriptTxt to (res get rf id 128 type "scpt") as styled text
            on error number n
               res close rf
               error number n
            end try
            res close rf
            
            set the scriptName to the name of thisItem
            set derPfad to thisItem as string
            tell application "FileMaker Pro"
               activate
               tell document FMdatenbank
                  tell (create new record at end)
                     try
                        copy scriptName to cell "Scriptname"
                     end try
                     try
                        copy BeschreibungTxt to cell "Beschreibung"
                     end try
                     try
                        copy ScriptTxt to cell "Scripttext"
                     end try
                     try
                        copy derPfad to cell "Pfad"
                     end try
                     go to last record
                  end tell
               end tell
            end tell
            
         end repeat
      end timeout
      
   end tell
end open
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Snow
Administrator
Administrator


Anmeldedatum: 21.11.2000
Beiträge: 1946
Wohnort: Deiningen

BeitragVerfasst am: 23.05.2003 - 17:26    Titel: Antworten mit Zitat

Hallo Claus,

ich habe das Skript jetzt erst mal so verändert, dass man eine oder mehrere Dateinen darauf ziehen kann.

Den Teil
"tell application "Finder"
      activate
      set fileList to selection
..."

kannst du dir eigentlich sparen. Die Referenzen zu den Dateien werden ja beim "droppen" an das Skript übergeben und landen in der Variablen "theList".
Es ist auch nicht gut, den ganzen Teil, der die Scripting Addition "Resource Utilities" betrifft, innerhalb des Tell-Blocks an den Finder zu platzieren. Dann werden die Befehle nämlich zuerst an den Finder geschickt, der stellt dann fest, dass er gar nichts damit anfangen kann und dann werden sie erst an die Scripting Addition weitergeleitet.

Den FileMaker-Teil habe ich auch etwas umgestaltet. Mit diesem Vorgehen habe ich bereits gute Erfahrungen gemacht.
Das Skript läuft meiner Meinung nach schneller, wenn man keinen "activate"-Befehl an FileMaker schickt. Genaue Zeitmessungen müsste ich allerdings erst noch vornehmen.

Hier mal das geänderte Skript:

property FMdatenbank : ""
property BaseName : ""

on open theList
   if FMdatenbank = "" then
      set FMdatenbank to choose file with prompt "Wo befindet sich die Datei \"AppleScript-Archiv\"?"
      set BaseName to name of (info for FMdatenbank) as string
   end if
   
   
   with timeout of 6000 seconds
      
      repeat with thisItem in theList
         set thisItem to thisItem as alias
         set rf to res open thisItem
         try
            set BeschreibungTxt to (res get rf id 1128 type "TEXT") as styled text
         on error
            set BeschreibungTxt to ""
         end try
         try
            set ScriptTxt to (res get rf id 128 type "scpt") as styled text
         on error number n
            set ScriptTxt to ""
            res close rf
            error number n
         end try
         res close rf
         tell application "Finder"
            set the scriptName to the name of thisItem
            set derPfad to thisItem as string
         end tell
         
         tell application "FileMaker Pro"
            --activate
            if not (layout 1 of database BaseName exists) then
               open alias FMdatenbank
            else
               go to layout 1
               go to (create new record at end)
               set x to current record
               set cell "Scriptname" of x to scriptName
               set cell "Beschreibung" of x to BeschreibungTxt
               set cell "Scripttext" of x to ScriptTxt
               set cell "Pfad" of x to derPfad
            end if
            
         end tell
         
      end repeat
   end timeout
   
end open


Wenn du es jetzt wirklich so gestalten möchtest, dass man einen Ordner darauf ziehen kann, solltest du dir mal meinen Artikel "Rekursive Handler" ansehen und versuchen, das Skript mit dem dortigen Template zu kombinieren.

Viel Spass beim Tüfteln
Gruß
_________________
Peter
-
Fischer-Bayern.de|Shadetreemicro.com
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen AIM-Name
Snow
Administrator
Administrator


Anmeldedatum: 21.11.2000
Beiträge: 1946
Wohnort: Deiningen

BeitragVerfasst am: 23.05.2003 - 17:40    Titel: Antworten mit Zitat

Ich habe gerade einen Schwachpunkt der "Resource Utilities" entdeckt.
Wenn ein Script mit einer Leerzeile beginnt, kommt die Fehlermeldung: "Can't make 'script' into an item."

Diesen Fehlernummer sollte man abfangen und dem User dann entsprechend mitteilen, dass er die Leerzeile am Skriptanfang erst entfernen muss.
_________________
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