Newsgroup: it.comp.macintosh
Titolo: [AS] piccolo problema

vorrei utilizzare una property per memorizzare una determinata
applicazione da aprire con lo script e riproponibile tramite il display
dialog....
pero' non ci riesco... :o(
riesco a salvare il path del file..ma come faccio a dirgli di aprire il
file?
che poi sara' sicuramente una cavolata....sento che ci sono vicino
ma...non lo afferro ;o)
il funzionamento dello script e' che dovrebbe (tramite un dialogo)
aprire una applicazione che scelgo...ma diversa ogni volta che riavvio
lo script...
pero' potrebbe essere in alcuni casi l'applicazione usata
precedentemente...
ecco il perche' della property...
e poi dovrei trasformare il path nel nome dell'applicazione per proporlo
nel dialogo....
Vittoriooooo....
Marcoooooooo....
;)
ho provato sulla mailig di AS...ma in questo momento ho qualche
problemino...
ciao...
-- 
 Sostituisci "xxxxx" con "pscss" per rispondere via mail

 problemino...
Per crudelta` mentale, ti rispondo nella mailing list... (cosi` impari).
-- 
Ciao,        \+----------+  "La risposta e` dentro di te...
   Vittorio --| : )    o |      ...MA E` SBAGLIATA!!!"
             /+----------+
+-----------------------------------------------------------+
|  - = (  ENCICLOPEDIA DIGITALE DELLA FANTASCIENZA  ) = -   |
| 
http://www.fantascienza.com/edf/
 (con motore di ricerca!) |
+-----------------------------------------------------------+

 cerchero' un'altra donna dentro ai sogni di Tarzan...

> Per crudelta` mentale, ti rispondo nella mailing list... (cosi` impari).
non e' un problema..visto che riesco a riceverla perfettamente :o)
il prob e' nell'inviare....
ciao..


 -- In questa seconda ipotesi salva readonly
ciao
ben risentito  :o)
perche' si deve salvare come read only nel secondo caso?
noto che non chiami il Finder per aprire l' app toPath...ma non capisco
ne il perche' e ne se questa cosa c'entra...
e poi come specifico il file?
ok che memorizzo il path su una variabile...
ma dovendo cambiare file?
ciao...


ma dovendo cambiare file?
Io metterei un controllino iniziale. In genere mi avvalgo dei Jon's
Commands e uso, all'avvio:
if "Option" is in (keys pressed) then ¬
  set path_to_app to (choose file ...) as text


 Ricordi il "double tell trick"?
ne avevamo parlato tempo fa ed io avevo capito che sarebbe rimasta nella
variabile sino alla prossima compilazione dello script...
la cosa del run-only mi e' proprio sfuggita...
ricapitolando..
nella property rimane il valore solo se e' run only ?
oddio..no...
pero' non ci sto capendo piu' nulla...
ho degli script che usano la property..
ora; il path dell'applicazione viene considerato come una stringa...
perche' non rimane zitto e buono come tutti gli altri valori?
scusate le fesserie...
per "double tell trick" intendi quell'esempio che mi hai fatto
illustrandomi la differenza tra property, variabile e globale?
un'altra cosina...
mi serviva crearte una pausa ed ho trovato lo scripting "WaitTiks"...
nessun problema..ma sarebbe possibile creare questa pausa senza
ulteriori scripting che non siano del sistema?
ho usato:
property tempo:"3"
set tempo to display dialog "quanti secondi?" default answer "tempo"
WaitTicks (tempo * 60)
il ticks e' 1/60 di secondo per lo scripting...


WaitTicks (tempo * 60)
Ci sarebbe il sistema di farlo con on idle... Vuoi davvero sapere
come? Ma ti avviso: e' macchinoso e contorto.


 definite.
A Marco, nun fare sempre il romanista :), siamo quasi in vacanza, dai...
lo script che deve fare stefano mica ha bisogno di essere mosso da un
computer all'altro... e quindi il tuo discorso non serve... anche se
avesse l'abitudine di muovere le applicazioni da una cartella all'altra,
tramite l'alias il file applicazione verrebbe rintracciato lo stesso...
il tuo caso sarebbe utile solo nei rari casi in sui un'applicazione
viene spostata da un volume all'altro, cancellando la copia vecchia.


 viene spostata da un volume all'altro, cancellando la copia vecchia.
si..infatti...
e poi per quello che mi serve "deve" chiedermi l'applicazione da
lanciare "ogni" volta che lancio lo script...
la property e' solo per "ricordargli" l'ultimo path nel caso usassi
l'ultima applicazione...
pero' il discutere di queste cose puo' aiurami a capire la filosofia di
AS...
sempre nei miei limiti pero'.... ;o)
considera poi che sono incasinatissimo nel mio lavoro...ho una marea di
mex arretrati sia sulle news che sulle maililing...
per cui ho deciso di eliminare quasi tutti i gruppi delle news tenendo
questo ed un altro e seguendo (sempre per il tempo) quanto possibile su
AS..
e ritornare in "pari" con la tua mailing ;o)
ciao :)


 come? Ma ti avviso: e' macchinoso e contorto.
beh..cosiderando che non conosco il significato del comando "idle"..
direi proprio di si ;o)
a occhio e croce direi che riporti il momento in cui la macchina non
lavora...
pero' non mi immagino come sfruttarlo per dirgli "Aspetta 3 secondi"...
per esempio..
non potrei sfruttare la data tipo:
set x to (("l'ora attuale"...non so come dirglielo) + 3)
loop
if x = (ora attuale)
beep
end if
end loop
potrebbe funzionare una cosa fatta cosi'?
scusate il "loop"...ma non so il comando giusto..
ho fatto un esempio tipo FMP ;o)
ciao..


viene spostata da un volume all'altro, cancellando la copia vecchia.
E che ti costa considerare un simile caso o casi analoghi?
Niente, quindi li considero e campo tranquillo.
E mi stupisce che proprio tu mi faccia di queste obiezioni: ormai,
dopo tanto tempo passato insieme a discquisire di AppleScript,
dovresti sapere che il mio approccio e' di tipo informatico e non da
spippolatore in cerca della soluzione particolare. Tendo quindi ad
ottimizzare, e a limitare allo stretto indispensabile le precondizioni
deboli e i vincoli sotto i quali un dato algoritmo funzionera'.


pero' non mi immagino come sfruttarlo per dirgli "Aspetta 3 secondi"...
In modo macchinoso, appunto; se vuoi ottenere:
[stuff 1]
[pausa di 3 sec]
[stuff 2]
Farai una cosa del tipo:
property passo
on run
  set passo to 1
end run
on idle
  if passo = 1 then
    my stuff1()
    return 3
  else
    my stuff2()
    tell me to quit
  end if
end idle
on quit
  continue quit
end quit
on stuff1
  --stuff1
  set passo to 2
end stuff1
on stuff2
  --stuff2
end stuff2
E, ovviamente, salvi perche' non esca al termine.


[snip]
MMmmm..
si..penso di averlo capito....
nel tuo esempio metti anche l'handler "on quit"...
e nell'handler "continue quit"
perche"?
non basta "tell me to quit" per dire all'applet di quittare?
poi, mentre mi stavo gustando delle piccole prove, mi e' uscito:
property x : ""
set x to 1
on idle
   if x = 1 then
      return 3
      set x to 2
      beep
   else
      tell me to quit
   end if
end idle
pero' non funziona...
ne il beep e ne il quit...
avevo fatto degli altri esempi simili e funzionavano...
non riesco a comprendere l'errore che c'e' qui...
nell' esempio:
property x : ""
on idle
set i to button returned of (display dialog x buttons Č
{"OK", "Annulla"} default button 1
if i = "Annulla"
tell me to quit
end if
beep
set x to (x+1)
return x
end idle
qui si crea un loop sempre piu' lungo (return x (x+1)), sara' stupido ma
in questo caso funzionava sia il quit che il beep...
ma non sono simili?
dov'e' la differenza?
ciao....


 modo non necessario alla macchina, ai suoi path ed alle sue OSAX.
Questo e` OK, ma per le grosse applicazioni fatte per il mercato, che
hanno bisogno di tante ore di lavoro e quindi devono essere utili a
tantissime persone per ripagare il lavoro necessario. 
Il concetto di scripting o di prg ad alto livello e` stato introdotto
proprio per permettere, velocemente e a tutti, di fare anche soluzioni
ad personam, che non devono per forza cercare di funzionare sulle
macchine degli altri.


 ne il beep e ne il quit...
Credo che sia perche non specifichi qualcosa come "return 5" alla fine
di idle... allora di default il valore e` 30 (secondi), e quindi fa beep
ma non te ne accorgi perche' non aspetti abbastanza. 


in questo caso funzionava sia il quit che il beep...
Appunto


 ma non te ne accorgi perche' non aspetti abbastanza. 
hai proprio ragione....
cambiando in:
property x : ""
set x to 1
on idle
   if x = 1 then
      set x to 2
      beep
      return 3
   else
      tell me to quit
   end if
end idle
lo script funziona correttamente..
correttamente per modo di dire visto che volevo solo creare una pausa ed
eseguire un'azione (beep)...
se infatti metto il "beep" subito dopo il "return 3" lo script si quitta
dopo la pausa ma non esegue il beep...
se volessi usare questa forma..come dovrei fare allora?
nel primo caso l'azione (beep) viene eseguita subito dopo l'avvio dello
script che si quitta dopo la pausa...
ma se voglio eseguire il beep dopo la pausa?
ciao..


 wrote:

--------
property TargetTime : 0 
--TargetTime e` un integer (che rappresenta data e ora)
--lo creo come property perche' deve essere usato da 
--entrambi gli handler
on run --nell'handler run inizializzo la variabile
set TargetTime to ((current date) + 3)
end run
on idle
if (current date) is less than TargetTime then
return 1 --controllo ogni 1 secondi
else --il tempo e` arrivato
beep
tell me to quit
end if
end idle
--------
In generale, per "pausare" qualcosa, ti devi sempre riferire
all'orologio del computer: fare x = x + 1 non occupa un tempo 
apprezzabile... poffare (!!), mica usiamo i computer a manovella 
di una volta... 
L'applet prima esegue l'handler run (che userai per inizializzare 
tutte le condizioni per l'idle), poi esegue l'idle. Il "result" 
(l'ultimo risultato) dell'idle, che e` un integer, ci da` il 
tempo in secondi per quanto l'idle "dormira`" (per es. 5 secondi). 
Poi l'idle si "svegliera`" di nuovo, fara` le sue cose e cosi` via.


On Wed, 22 Dec 1999 13:17:50 +0100, 
br...@flashnet.it
(Vittorio Barabino) wrote:
:)(l'ultimo risultato) dell'idle, che e` un integer, ci da` il 
:)tempo in secondi per quanto l'idle "dormira`" (per es. 5 secondi). 
non conosco AS, ma facendo cosi' non si da' un grosso
carico di lavoro al silicio?
Oha
"Ci sono tre tipi di persone al mondo: quelle che sanno contare, 
e quelle che non ne sono capaci."

 carico di lavoro al silicio?
No, perche' per i 5 secondi il processore esegue gli altri processi, non
l'applescript. E` proprio questa la differenza fra un idle e fare dei
cicli di repeat.


 carico di lavoro al silicio?
No, il silicio non si muove. Son gli elettroni che faticano. :)
-- 
Le patch per i comportamenti "devianti" di Outlook:
per Mac         
http://fly.to/risorse/
 
per Windows     
http://www.freeweb.org/computer/SourceNet/Outlook.htm
Le FAQ di it.comp.macintosh   
http://kecco.eden.it/faq/

 di una volta... 
ha ha ha... ^__^
da dove ti e' uscito quel "poffare" ??
mi hai fatto tornare in mente un fumetto che leggevo mooolto tempo fa
dove appunto un personaggio usava quest'espressione...
non l'avevo piu' sentita da allora ;o)
tornando alle cose..ehm..serie..
non capisco quello che vuoi dire circa il tempo apprezzabile..
x = x + 1 non e' per calcolare il tempo...
ho visto che in "on idle" lui crea una specie di loop controllando e
rieseguendo le istruzioni nell'handler..
quella x to 1 e' solo per quittarlo, potevo anche dirgli:
set x = "marameo"
on idle
  if x = "marameo" then
      set x to "miao"
eccetera eccetera...
scusami ...
ma proprio non capisco a cosa vuoi riferirti..
abbi pazienza..conosci i miei livelli :o)
