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

Anmeldedatum: 07.05.2001 Beiträge: 175
|
Verfasst am: 19.09.2002 - 17:17 Titel: Script-Datei per Script anlegen |
|
|
Hallo Leute
Ich möchte meine properties in eine Scriptdatei auslagern und per load script ansprechen. Falls die Datei nicht existiert, soll sie angelegt werden. Soweit klappt das auch, nur wird offensichtlich keine Script-Datei angelegt sondern ein unbekanntes Dokument ( "Script doesn't semm to belong to AppleScript"-Fehler). Die Zeile:
make new file at folder pref with properties {name:prefD, file type:"osas", file creator:"ToyS"}
Was tun?
Jens |
|
Nach oben |
|
 |
Jens Hoffmann •--->

Anmeldedatum: 07.05.2001 Beiträge: 175
|
Verfasst am: 19.09.2002 - 17:25 Titel: Script-Datei per Script anlegen |
|
|
Habe gerade festgestellt, dass der craetor "ttxt" ist, wieso nimmt der nicht "ToyS"?
Grüße Jens |
|
Nach oben |
|
 |
Folker •---->


Anmeldedatum: 11.12.2000 Beiträge: 649 Wohnort: Holsteinische Schweiz
|
Verfasst am: 19.09.2002 - 17:34 Titel: Script-Datei per Script anlegen |
|
|
Moin Jens,
store script ist der gewünschte Befehl.
script test
property eins : 1
property zwei : 2
end script
set temp to (choose folder) as string
store script test in file (temp & "test.scpt") replacing yes
copy (load script ((temp & "test.scpt") as alias)) to the_S
get the_S's eins
Viel Spaß!
Gruß,
Folker _________________ Gruß,
Folker Brandt
=============================
Systemberatung · Datenbanken · Webdesign |
|
Nach oben |
|
 |
Folker •---->


Anmeldedatum: 11.12.2000 Beiträge: 649 Wohnort: Holsteinische Schweiz
|
Verfasst am: 20.09.2002 - 09:36 Titel: Script-Datei per Script anlegen |
|
|
Moin Jens,
kleiner Nachtrag: Du wolltest natürlich eine Möglichkeit die Properties sozusagen als Preferences zu generieren - da ist mein Rat wenig hilfreich! Nur so viel, Du kannst meines Wissens keine Scriptdatei so anlegen wie wir es von z.B. Textdateien gewohnt sind - Du kannst selbstverständlich Textdateien anlegen, der creator type ist "ToyS" für Apple's Scripteditor ("VIZF" für Smile). Es lassen sich ja nicht nur Texte im eigentlichen Sinne speichern, sondern auch Textdateien 'as list' - ich denke das ist eher das was Du willst?
ScriptObjects (bzw. Librarydateien) müssen natürlich schon irendwo vorhanden sein Ö
Gruß,
Folker _________________ Gruß,
Folker Brandt
=============================
Systemberatung · Datenbanken · Webdesign |
|
Nach oben |
|
 |
Jens Hoffmann •--->

Anmeldedatum: 07.05.2001 Beiträge: 175
|
Verfasst am: 20.09.2002 - 10:19 Titel: Script-Datei per Script anlegen |
|
|
Hallo Folker
Zitat: | Du wolltest natürlich eine Möglichkeit die Properties sozusagen als Preferences zu generieren | Genau und mit store ist das für mein Vorhaben viel praktischer. Allerdings will es bei meinem Script nicht so klappen, ich krieg' die Fehlermeldung "Can't get file ..." beim on error. Dein Script funzt tadellos, ich komm' nicht drauf:
---
property pref : path to preferences folder
property prefD : "ProjectsData"
set prefPfad to (pref & prefD) as string
script props
property AktuellesProjekt : ""
property itms : {}
property roots : {}
property serverURL : {}
property SitePath : {}
property DefaultPage : {}
property Templates : {}
property Workfolder : {}
property DefaultPageInit : "index.html"
end script
tell application "Finder"
if not (file prefPfad exists) then
try
store script props in file (prefPfad) replacing yes
on error msg number num
display dialog msg & " " & num
end try
end if
end tell
---
Danke und Grüße Jens |
|
Nach oben |
|
 |
Folker •---->


Anmeldedatum: 11.12.2000 Beiträge: 649 Wohnort: Holsteinische Schweiz
|
Verfasst am: 20.09.2002 - 10:44 Titel: Script-Datei per Script anlegen |
|
|
Der Finder will kein "script storen" - entweder via 'tell me to store Ö' oder
tell app "Finder" to set t_Bool to (file prefPfad exists)
if not (t_Bool) then
Ö
Gruß,
Folker _________________ Gruß,
Folker Brandt
=============================
Systemberatung · Datenbanken · Webdesign |
|
Nach oben |
|
 |
Snow Administrator


Anmeldedatum: 21.11.2000 Beiträge: 1946 Wohnort: Deiningen
|
Verfasst am: 20.09.2002 - 13:26 Titel: Script-Datei per Script anlegen |
|
|
Für alle, die an dieser Sache interessiert sind, habe ich 3 kleine Skriptbeispiele:
Das erste Skript legt eine kompilierte Skriptdatei mit bestimmten Werten an:
set desktop_path to (path to desktop folder) as string
set file_spec to file (desktop_path & "CompiledScript" )
makePrefs(file_spec)
on makePrefs(file_spec)
script ScriptText
property ComText : "Dieser Text sollte geändert werden."
property PosMain : { 150, 150 }
property PosAbout : { 300, 150 }
end script
store script ScriptText in file_spec with replacing
end makePrefs
Mit dem zweiten Skript wird das angelegte Skript in einem anderen Skript geladen und auf die gespeicherten Werte zugegriffen:
set desktop_path to (path to desktop folder) as string
set file_spec to file (desktop_path & "CompiledScript" )
copy (load script file file_spec) to myVoreinstellungB
set TheRecord to ¨
{ myVoreinstellungB's PosMain, myVoreinstellungB's PosAbout, myVoreinstellungB's ComText }
Jetzt noch das dritte Script, um die Werte im gespeicherten Script zu ändern:
set desktop_path to (path to desktop folder) as string
set file_spec to file (desktop_path & "CompiledScript" )
copy (load script file file_spec) to myVoreinstellung
set myVoreinstellung's PosMain to { 286, 280 }
set myVoreinstellung's PosAbout to { 160, 320 }
set myVoreinstellung's ComText to "Das ist der geänderte Text"
store script myVoreinstellung in file file_spec with replacing
Natürlich kann man alle drei Scripts auch in einem einzigen vereinen. Ich habe es nur mal so gemacht, dass man alle drei im Skripteditor öffnen kann und so im Eventprotokoll die Auswirkung jedes einzelnen Skripts genau mitverfolgen kann.
HTH _________________ Peter
-
Fischer-Bayern.de|Shadetreemicro.com
Zuletzt bearbeitet von Snow am 21.02.2003 - 17:36, insgesamt einmal bearbeitet |
|
Nach oben |
|
 |
Folker •---->


Anmeldedatum: 11.12.2000 Beiträge: 649 Wohnort: Holsteinische Schweiz
|
Verfasst am: 20.09.2002 - 14:08 Titel: Script-Datei per Script anlegen |
|
|
Kleiner Nachtrag: Wenn die einzelnen Scripte (Object + Object-Runner/User) getrennt sind ist folgendes recht komfortabel. Das Scriptobject kann in ein property geladen werden! Dann muss nur noch erfragt werden, ob property xy weiterhin das scriptobject hält und nur gegebenenfalls das Object neu laden - hat natürlich auch den Nachteil, dass bei Änderung des Scripttextes des Objects das Runner/User-Script ebenfalls neu kompiliert werden muss!
property the_S: 0 -- oder "" oder {}, ist egal
Ö
if class of the_S is not script then
copy load ÖÖ
end if
Gruß,
Folker
(Geändert von Folker um 14:09 Uhr am 20 Sep. 2002) _________________ Gruß,
Folker Brandt
=============================
Systemberatung · Datenbanken · Webdesign |
|
Nach oben |
|
 |
Jens Hoffmann •--->

Anmeldedatum: 07.05.2001 Beiträge: 175
|
Verfasst am: 20.09.2002 - 16:10 Titel: Script-Datei per Script anlegen |
|
|
Folker & Snow, erst mal Danke!
@Snow: Leider funktioniert das bei mir nicht: die Datei "CompiledScript" wird zwar angelegt und beschrieben, die properties werden dann aber nicht überschrieben. Im Eventprotokoll steht hier:
"store script ´scriptª in file "StartHD:Desktop Folder:CompiledScript" replacing yes"
während beim Anlegen noch "store script ´script ScriptTextª" aufgezeichnet wird.
@Folker: deinen letzten kleinen Hinweis habe ich nicht ganz verstanden. Was meinst du mit "ob property xy weiterhin das scriptobject hält"? Wann lässt es xy denn fallen? ;)
Grüße und ein schönes Wochenende, Jens |
|
Nach oben |
|
 |
Folker •---->


Anmeldedatum: 11.12.2000 Beiträge: 649 Wohnort: Holsteinische Schweiz
|
Verfasst am: 20.09.2002 - 16:15 Titel: Script-Datei per Script anlegen |
|
|
Ja gut, wenn z.B. das Script neu kompiliert wird oder eine unwahrscheinliche Korruption einsetzt (unwahrscheinlich, ist ja AppleScript und keine Politik oder wenn property xy in einem z.B. error-Handler einfach auf Grund einer Ungereimtheit vorsichtshalber auf 0 gesetzt wird - mache ich in ScriptApp's durchaus häufiger (bin wohl eher eine vorsichtige Natur ;)
Gruß und schönes WE
Folker
Achso, aber Achtung, wenn dieser error-Handler Fall einsetzt, darf nicht versucht werden das Object via store script zu sichern! Einfach ein
if class of the_S = script then store script Ö
einbauen.
(Geändert von Folker um 16:35 Uhr am 20 Sep. 2002) _________________ Gruß,
Folker Brandt
=============================
Systemberatung · Datenbanken · Webdesign |
|
Nach oben |
|
 |
Folker •---->


Anmeldedatum: 11.12.2000 Beiträge: 649 Wohnort: Holsteinische Schweiz
|
Verfasst am: 20.09.2002 - 16:30 Titel: Script-Datei per Script anlegen |
|
|
Also bei mir funzt es mit kleinen Änderungen auch unter OS X.1.5 genau wie gewünscht.
Da sähe Teil 1 so aus:
set desktop_path to (path to desktop from user domain) as string
set file_spec to (desktop_path & "CompiledScript")
makePrefs(file_spec)
on makePrefs(file_spec)
script ScriptText
property ComText : "Dieser Text sollte geändert werden."
property PosMain : {150, 150}
property PosAbout : {300, 150}
end script
store script ScriptText in file file_spec with replacing
end makePrefs
Teil 2 dann so:
set desktop_path to (path to desktop from user domain) as string
set file_spec to (desktop_path & "CompiledScript")
copy (load script file file_spec) to myVoreinstellung
set myVoreinstellung's PosMain to {100, 300}
set myVoreinstellung's PosAbout to {120, 222}
set myVoreinstellung's ComText to "Nochmals geänderter Text"
store script myVoreinstellung in file file_spec with replacing
und Teil 3
set desktop_path to (path to desktop from user domain) as string
set file_spec to (desktop_path & "CompiledScript")
copy (load script file file_spec) to myVoreinstellungB
set theRecord to ¨
{myVoreinstellungB's PosMain, myVoreinstellungB's PosAbout, myVoreinstellungB's ComText}
tell me to log theRecord
result: { {100, 300}, {120, 222}, "Nochmals geänderter Text"}
Gruß,
Folker _________________ Gruß,
Folker Brandt
=============================
Systemberatung · Datenbanken · Webdesign |
|
Nach oben |
|
 |
Snow Administrator


Anmeldedatum: 21.11.2000 Beiträge: 1946 Wohnort: Deiningen
|
Verfasst am: 20.09.2002 - 16:31 Titel: Script-Datei per Script anlegen |
|
|
Zitat: | Leider funktioniert das bei mir nicht: die Datei "CompiledScript" wird zwar angelegt und beschrieben, die properties werden dann aber nicht überschrieben. Im Eventprotokoll steht hier:
"store script 'script' in file "StartHD:Desktop Folder:CompiledScript" replacing yes"
während beim Anlegen noch "store script 'script ScriptText'" aufgezeichnet wird.
|
Das ist bei mir genauso. Wenn man das angelegte Skript öffnet, sieht man keine Änderung, sie ist aber trotzdem da.
Lass mal das Skript laufen, das die Daten wieder liest und schau dann ins Ergebnisfenster - oder mach's mit Dialog:
set desktop_path to (path to desktop folder) as string
set file_spec to (desktop_path & "CompiledScript" )
copy (load script file file_spec) to myVoreinstellungB
set TheRecord to ¨
{ myVoreinstellungB's PosMain, myVoreinstellungB's PosAbout, myVoreinstellungB's ComText }
display dialog myVoreinstellungB's ComText
Das ist zwar alles sehr seltsam, ist aber der Grund, warum ich damals zum Testen auch drei einzelne Skripts angelegt hatte.
P.S. damit es unter X läuft muss die Zeile
set file_spec to file (desktop_path & "CompiledScript" )
abgeändert werden das 'file' muss raus, sonst gibt es eine Fehlermeldung, wenn die Datei noch nicht existiert. Entsprechend muss 'file' in der Zeile
store script ScriptText in file file_spec with replacing
vor der Variablen 'file_spec' eingefügt werden. _________________ Peter
-
Fischer-Bayern.de|Shadetreemicro.com |
|
Nach oben |
|
 |
|