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


Anmeldedatum: 10.07.2003 Beiträge: 1517 Wohnort: Olten-CH
|
Verfasst am: 14.01.2006 - 10:24 Titel: Skript-Aend. script aus script AUFRUF + variablen SPEICHERN |
|
|
re-EDIT 5.3.06: Objekt-Beschreibung für die Skript-Aenderung :
hier kann man ev einen SKRIPTE-Sammlers oder SKRIPTE-Bibliothek durchdiskutieren basierend auf Snows Vorschlägen zu iScripts Skripte-Sammler-projekt:
@iScript ad :
iScript hat Folgendes geschrieben: | Verfasst am: 11.01.2006 - 11:16 Titel: script aus script aufrufen + variablen übergeben: |
ich meinte ich herauszulesen dass du nach property-Konstruktion suchen würdest unter NUTZUNG der SPEICHERUNGS-Fähigkeit von propertys:
Zuerst Dein Skript @iScript :
oooooooooooooooooooooooooooooooooDamitDieScriptZeilenNichtUmbrochenWerdenooooderpfad
iScript hat Folgendes geschrieben: | on open Gedroppt
tell application "Finder"
set derpfad to ((item 1 of Gedroppt) as text)
set dername to ((name of folder derpfad) as text)
--Bedingung, welches SubScript startet
if dername contains "a" then run script SubScriptA of me with parameters {dername, derpfad}
if dername contains "b" then run script SubScriptB of me with parameters {dername, derpfad}
end tell
end open
-- Und hier die "Unter-Scripts"
script SubScriptA
on run {dername, derpfad}
display dialog "Der a-Ordner heißt" & dername & return & "Pfad: " & derpfad
end run
end script
script SubScriptB
on run {dername, derpfad}
display dialog "Der b-Ordner heißt" & dername & return & "Pfad: " & derpfad
end run
end script |
Hier sehe ich zumindest 2 augenfällig ungelöste Fragen:
Zitat: | 1) dieses als Skripte-Sammler konzipierte Skript hat keine Vorrichtung zu SPEICHERUNG von Variablen-Daten, welche auch von EXTERN generiert/ und abgelesen werden können
2) So wie der DIALOG hier ausformuliert ist wird er zwangsläufig früher oder später im Hintergrund blinken was in etwa einer ERROR-Meldung gleichkäme, die überigens ebenfalls ungewollt auftreten wird nach user-Druck auf "Abbrechen" resp. "Abbruch" und den ganzen Skritp-Ablauf durcheinander hauen wird (="verwirren").
|
nun: Bau-gleiches Skript, aber:
1) mit global/handlern gelöst
2) Zusatzfunktion mit einer property: Zitat: | global dername, derpfad
--neu:
property VorDrop : "Intern belegter Variablen-Wert"
on open Gedroppt
tell application "Finder"
set derpfad to ((item 1 of Gedroppt) as text)
set dername to ((name of folder derpfad) as text)
--Bedingung, welches SubScript startet
if dername contains "a" then my SubScriptA()
if dername contains "b" then my SubScriptB()
-- VorDrop lesen:
my PropertyLeser()
end tell
end open
-- Und hier die "Unter-Scripts"
on SubScriptA()
display dialog "Der a-Ordner heißt" & dername & return & "Pfad: " & derpfad
end SubScriptA
on SubScriptB()
display dialog "Der b-Ordner heißt" & dername & return & "Pfad: " & derpfad
end SubScriptB
(* neu: handler, welcher ZB von extern(!) aufgerufen würde, vorgängig der "Drop-Aktion" um die Property mit einem Variablen-Wert zu belegen, welcher durch die "Drop-Aktion" wieder aufgerufen werden soll, um den Variablen-Wert zu lesen.*)
on PropertyLeser()
display dialog "Hat sich der Variablen-Wert verändert durch vorgängige Belegung durch externes Skript, welches diesen handler aufgerufen hat ?
Ergebnis: " & VorDrop
end PropertyLeser
end |
leider ist der Variablen-Wert für VorDrop trotz property nicht speicherbar weil ich schlicht nicht mehr weiss wie man das macht, was ja ein Manko bedeutet in Bezug auf deine Frage:
iScript hat Folgendes geschrieben: | Aufruf von Scripten aus Scripten heraus, und die Übergabe/Speicherung von properties von einem Script zum anderen |
_________________ Skript-Fan => ein � -Fan =>Scr¿¿-KongFuSius_Kurpfusius
Zuletzt bearbeitet von spirigwi am 06.03.2006 - 01:27, insgesamt 14-mal bearbeitet |
|
Nach oben |
|
 |
Snow Administrator


Anmeldedatum: 21.11.2000 Beiträge: 1946 Wohnort: Deiningen
|
Verfasst am: 14.01.2006 - 13:34 Titel: |
|
|
@ Willy
Ich habe deinen Beitrag vom ursprünglichen Thema abgetrennt, weil du damit schon wieder in eine ganz andere Richtung davon ziehst.
iScript hatte ja geschrieben, dass es nicht in Frage kommt, seine Einzelskripte in verschiedene Handler zu verpacken, da die Einzelskripte ebenfalls Handler enthalten. - Und Handler innerhalb von Handlern geht eben nicht.
Zu deinem Problem mit der Speicherung der Property:
Du wunderst dich, dass sich der Wert nicht ändert? - Du gibst im ganzen Skript auch nirgends eine Anweisung zur Änderung der Property.
Zitat: | PS: weisst du, @iScript, wie man den Dialog so ausformulieren und aufrufen muss, sodass er auch auf OSX ausnahmslos ohne Zutun des users automatisch in den Vordergrund rückt? (und nicht einfach wie jetzt ZB im Dock herumblinkt ) ? |
Hierfür gibt's 'activate'! _________________ Peter
-
Fischer-Bayern.de|Shadetreemicro.com |
|
Nach oben |
|
 |
spirigwi •----->


Anmeldedatum: 10.07.2003 Beiträge: 1517 Wohnort: Olten-CH
|
Verfasst am: 14.01.2006 - 15:06 Titel: |
|
|
Zitat: | run script SubScriptA of me --so läuft der inside-handler schon, aber das ganze Skript SubScriptA ebenfalls dazu
--ich weiss nicht wie man so einen einzelnen handler vom Skript her aufrufen kann, so ist sicher falsch :
EinHandlER() of me-- was hier schreiben? of script SubScriptA? Wie hiesse die Adresse für Aufruf von extern( mit load script )
script SubScriptA
property InSubScriptAProperty : "Mit property des SubScriptA"
my EinHandlER()
on EinHandlER()
display dialog "bin ein handler im script: " & InSubScriptAProperty
end EinHandlER
end script |
Das war aber nur eine Nebenfrage, die sich entwickelt hat und die ich sicherlich aus dem "AppleSkript für absolute Anfänger" oder in deinem Workshop herauslernen kann, hab nur noch nicht nachgeschaut dort, werde ich tun.
re-edit da nicht mehr nötig
Auch die noch offen Frage des activate lässt sich doch im jetzigen Stadium besser plazieren, dachte ich:
Snow hat Folgendes geschrieben: | Hierfür gibt's 'activate'! | an welcher Stelle soll ich es setzen ? _________________ Skript-Fan => ein � -Fan =>Scr¿¿-KongFuSius_Kurpfusius
Zuletzt bearbeitet von spirigwi am 06.03.2006 - 00:47, insgesamt 7-mal bearbeitet |
|
Nach oben |
|
 |
Snow Administrator


Anmeldedatum: 21.11.2000 Beiträge: 1946 Wohnort: Deiningen
|
|
Nach oben |
|
 |
spirigwi •----->


Anmeldedatum: 10.07.2003 Beiträge: 1517 Wohnort: Olten-CH
|
Verfasst am: 14.01.2006 - 16:38 Titel: |
|
|
Danke für den link
Und jetzt, wie machen? _________________ Skript-Fan => ein � -Fan =>Scr¿¿-KongFuSius_Kurpfusius
Zuletzt bearbeitet von spirigwi am 06.03.2006 - 00:48, insgesamt 4-mal bearbeitet |
|
Nach oben |
|
 |
Snow Administrator


Anmeldedatum: 21.11.2000 Beiträge: 1946 Wohnort: Deiningen
|
Verfasst am: 14.01.2006 - 17:38 Titel: |
|
|
spirigwi hat Folgendes geschrieben: | Danke für den link
Und jetzt, wie machen?
|
Was wie machen?
Ich habe dir den Link gegeben, weil ich dort beschrieben hatte, wie man Properties eines externen Scripts ändert. - Inkl. Beispielen.
Warum machst du immer alles komplizierter als es ist?
Um eine Property zu lesen, braucht es keinen Handler.
log PropertyName
So hast du's im Eventprotokoll.
display dialog PropertyName
Und so in einem Dialog.
Die Unterscripts von iScript braucht man nicht - ist anderes Thema.
Wer hier liest wird wohl herumrätseln, welchen Zweck sie beim Ändern einer Property von außen erfüllen.
end -- für OSX ?
Das braucht's gar nicht, das hast du in deinem Beispiel eingeschleppt.
Wozu einen Handler PropertyAenderER innerhalb eines Scripts, bei dem du Properties von außen ändern möchtest?
Wenn du das Prinzip bzw. die Funktionsweise mal verstanden hast, kannst du eine Technik beliebig in anderen Skripten anwenden.
Zum Verständnis braucht man aber nicht mehr als
Skript 1 -- mal eben auf dem Desktop gespeichert
property Extern : "noch nichts"
und Skript 2, das die Property Extern im soeben gespeicherten Skript 1 liest und ändert.
set ScriptOrt to (path to desktop as string) & "ExtProp.scpt"
set myInternScript to load script ScriptOrt
-- Property lesen:
display dialog myInternScript's Extern
-- Variable ändern
set myInternScript's Extern to "Jetzt is was"
-- und im externen Script wieder speichern
store script myInternScript in file ScriptOrt with replacing
Das sind nun ein paar wenige Zeilen, die ausreichend sind, um die Funktionsweise zu verstehen. Alles was darüber hinaus geht, stiftet nur Verwirrung. Also versuche bitte erst einmal, das Grundprinzip zu verstehen, anstatt viele aufgeschnappte Schnipsel in einem Scriptmonster unter zu bringen und somit jeden hier zu zwingen, völlig überfrachtete Scripte zu analysieren.
Wenn dir das obige Beispiel noch nicht anschaulich genug ist, kannst du das Skript 2 auch so schreiben:
property Zaehler : 0
set Zaehler to Zaehler + 1
set ScriptOrt to (path to desktop as string) & "ExtProp.scpt"
set myInternScript to load script ScriptOrt
-- Property lesen:
display dialog "Externer Propertywert: " & return & myInternScript's Extern
-- Variable ändern
set myInternScript's Extern to "Das Skript wurde " & Zaehler & " mal ausgeführt."
-- und im externen Script wieder speichern
store script myInternScript in file ScriptOrt with replacing
Ich hoffe, das Thema ist hiermit abgehakt.
Gruß _________________ Peter
-
Fischer-Bayern.de|Shadetreemicro.com |
|
Nach oben |
|
 |
|
|
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
|
|
|