Newsgroup: it.comp.macintosh
Titolo: AppleScript...Help!! (LUNGO)

ho trovato uno script che mi permette di cambiare i commenti delle
finestre info...
per come e' stato fatto, lo script e' molto funzionale...
cliccandolo mostra la finestra per la scelta dei files o delle cartelle,
oppure dragghendroppando le cartelle o files... e analizza tutti i files
contenuti nelle cartelle o sotto-cartelle...
il problema di questo script e' che non permette di definire il commento
da inserire....
ho fatto diverse prove...ma non ci sono riuscito....
in fondo dovrei solo definire una variabile tipo:
display dialog "Dialogo" defaul answer "quello che voglio"
set CommentoDaInserire to text returned of result
la cosa "sembra" facile....ma :o1
vi posto lo script..che poi puo' essere utile a tutti anche cosi...
so che non dovrei postare dei file binari...ma non vedevo come
altrimenti fare..per cui scusate...
il file e' .sit.hqx ed e' solo il testo dello script (meno di cosi' non
ci sono riuscito) per un totale di 2.187 byte...
lo posto in un altro mex...cosi chi non lo vuole non lo scarica :o)
sarei grato se mi aiutaste ad includere il codice necessario per
definire il commento da inserire....
ho chiesto aiuto a Maxo che gentilmente mi aveva inviato uno script che
riusciva a definire il commento...pero non riusciva ad analizzare i
files contenuti in cartelle e non aveva la possibilita' di selezionare
le cartelle cliccando sullo script....
pero' non siamo riusciti (tutto il lavoro l'ha fatto Maxo...io ho solo
guardato..) a definire il giusto codice...
grazie Maxo :o)
altra cosa...
ma una variabile..come caspiterina funziona ??
cioe' se io scrivo:
on MettiCommento(ilCommento)
codice_vario_per_definire_ilCommento
end MettiCommento
come faccio a richiamare questa variabile in un handler?
nelle prove fatte, quando dicevo allo script di definire il commento con
la variabile, questi mi diceva che la variabile non era definita...
ho anche provato a definirla internamente...tipo
set ilCommento to "stringa"
ma diceva sempre che non era definita la variabile...
non potevo definire la variabile nell'handler che definiva il commento
del file..per cui cercavo solo di richiamarla....
beh..scusate se sono stato lungo....
Ciao  :o)
-- 
Ridi e il Mondo ridera' con te. Piangi e avrai bisogno di un fazzoletto.
---
mailto:
xx...@iname.com
 / 
xx...@freemail.it
Sostituisci "xxxxx" con "pscss" per rispondere via mail

(This file must be converted with BinHex 4.0)
<encoded_portion_removed>
1TH4p9qMb0J0U+5-#!`H9pa`I@'YHJ`e+$Kj1YKk!jl4SEJDa$R8!`18!!!:

 Ciao  :o)
Ciao
-- 
    zzz...Ghiro...zzz

 come faccio a richiamare questa variabile in un handler?
in cima allo script, metti
global nomevariabile
oppure 
property nomevariabile
se vuoi che vanga definita una volta per tutte al momento 
in cui compili e non ogni volta che lo script gira.
ciao! :-)
-- 
Ciao,        \+----------+  "La risposta e ` dentro di te...
   Vittorio --| : )    o |      ...MA E` SBAGLIATA!!!"
             /+----------+  - = 
http://fly.to/risorse/
 = -

>  Un commento diverso per ogni file?
no...un commento unico ogni gruppo di files che seleziono...
uno insomma ogni volta che faccio girare lo script..


tanks.. :o)


(This file must be converted with BinHex 4.0)
<encoded_portion_removed>
!!)lK!!!:

On Sun, 26 Sep 1999 09:37:02 +0200, 
br...@flashnet.it
 (Vittorio
Barabino) wrote:
| (This file must be converted with BinHex 4.0)
| :&N0[E@ePER4,D@aXCA)JG'9iG#jcDA3!8dP84&0*9#%"!!!!"J!!!!!!Eca6593
per questo c'e' it.binari.*
(meta' degli utenti non riusciranno a leggerlo, temo)
Oha

On Sat, 25 Sep 1999 16:24:17 +0200, 
xx...@freemail.it
 (cucciolo)
wrote:
| (This file must be converted with BinHex 4.0)
| :&N0[E@ePER4,D@aXCA)JG'9iG#jcDA3!8dP8090*9#%!N!3'&`#3"$5F8h4eCQC
per questo c'e' it.binari.*
Oha

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

 (meta' degli utenti non riusciranno a leggerlo, temo)
A France', ma non dire stronzate... tutti quelli che hanno un Mac e
internet sanno cos'e` un file in binhex... mettere il listato e` piu`
difficile: incolla nello script editor, ecc.


i passaggi per scrivere la stringa sono gli stessi....
Scusa, Vittorio (rispondo qui perche' non ho aperto il .sit.hqx sotto
win)... ma che bisogno hai di prefs?
Non potevi semplicemente utilizzare delle property?


 Non potevi semplicemente utilizzare delle property?
E` vero... chissa` perche' non l'ho fatto... :-?
---- questo salva le preferenze in una property (grazie Marco!!)
global theComment
property ThePref : ""
on ProcessAFile(theFile)
set theFileInfo to info for theFile
if folder of theFileInfo then
ScanAFolder(theFile)
else
tell application "Finder"
set comment of theFile to theComment
end tell
end if
end ProcessAFile
on ScanAFolder(theFolder)
set fileNames to list folder theFolder
repeat with aFile in fileNames
set theFile to (theFolder as string) & contents of aFile
ProcessAFile(alias theFile)
end repeat
end ScanAFolder
on SavePref(someComment)
set ThePref to someComment
end SavePref
on GetPref()
return ThePref
end GetPref
on open of filesList
set defa to (my GetPref())
try
set theComment to the text returned of (display dialog ¬
"Scrivi il nuovo commento:" default answer defa)
on error
quit
end try
repeat with aFile in filesList
ProcessAFile(contents of aFile)
end repeat
my SavePref(theComment)
end open
on run
set defa to (my GetPref())
try
set theComment to the text returned of (display dialog ¬
"Scrivi il nuovo commento:" default answer defa)
on error
quit
end try
set X to "OK"
repeat while X = "OK"
set theFolder to choose folder with prompt "Seleziona la cartella:"
ScanAFolder(theFolder)
set temp to display dialog ¬
"Vuoi selezionare un'altra cartella? " buttons {"OK", "Esci"} ¬
default button "OK"
set X to button returned of temp
if button returned of temp is "Esci" then
quit
end if
end repeat
my SavePref(theComment)
end run
----


property ThePref : ""
ROFL ;o)))
Anche "theComment" sta benissimo come property, non c'e' alcun bisogno
di farla global. Aspetta do' un'occhiata a tutto lo script...
----8<---------8<---------8<---------8<---------8<-----
property theComment: ""
on ProcessAFile(theFile)
  set theFileInfo to info for theFile
  if folder of theFileInfo then
    ScanAFolder(theFile)
  else
    tell application "Finder" to ¬
      set comment of theFile to theComment
  end if
end ProcessAFile
on ScanAFolder(theFolder)
  set fileNames to list folder theFolder
  repeat with aFile in fileNames
    set theFile to (theFolder as string) & contents of aFile
    ProcessAFile(alias theFile)
  end repeat
end ScanAFolder
on open of filesList
  try
    set theComment to the text returned of (display dialog ¬
      "Scrivi il nuovo commento:" default answer theComment)
  on error
    quit
  end try
  repeat with aFile in filesList
    ProcessAFile(contents of aFile)
  end repeat
end open
on run
  try
    set theComment to the text returned of (display dialog ¬
      "Scrivi il nuovo commento:" default answer theComment)
  on error
    quit
  end try
  repeat while true
    set theFolder to choose folder with prompt ¬
      "Seleziona la cartella:"
    ScanAFolder(theFolder)
    set temp to display dialog ¬
      "Vuoi selezionare un'altra cartella? " ¬
      buttons {"OK", "Esci"} ¬
      default button "OK"
    if button returned of temp is "Esci" then return
  end repeat
end run
----8<---------8<---------8<---------8<---------8<-----
Come ti sembra?
Per impostare il valore di una property e' sufficiente un semplice
assegnamento.


 Ciao  :o)
 Ciao.
-- 
    zzz...Ghiro...zzz

 di farla global. 
E` vero: ho imparato alcune tecniche ma penso in modo disordinato :-(
Avendolo fatto in due riprese non avevo visto che le due globali
potevano essere una cosa sola.
Grazie!!


On Mon, 27 Sep 1999 10:38:04 +0200, 
br...@flashnet.it
 (Vittorio
Barabino) wrote:
| > | (This file must be converted with BinHex 4.0)
| > | :&N0[E@ePER4,D@aXCA)JG'9iG#jcDA3!8dP84&0*9#%"!!!!"J!!!!!!Eca6593
| > (meta' degli utenti non riusciranno a leggerlo, temo)
| Ma non dire stronzate...
molti server hanno un filtro sui binari, se il messaggio contiene un
binario, viene killato.
Oha

 difficile: incolla nello script editor, ecc.
 Dai Vittorio non arrabbiarti, doveva farlo ed e' giusto che l'abbia
fatto.
 Chiedo pero' piu' precisione : it.binari.file (gruppo moderato ad
invito), senno' meta' degli utenti chiederebbero perche' sul newserver
non trovano it.binari.*  (:-))
Ciao. 
-- 
    zzz...Ghiro...zzz

> property theComment : ""
non capisco una cosa....
ma la "property" non prendeva un valore determinato solo alla
compilazione dello script?
mi ero fatto l'idea che una volta determinato il valore, questi rimaneva
sino alla rieditazione e compilazione dello script....
e cosa significa il (: "") dopo il nome della property ?
e perche' non e' consigliabile una variabile?
Ciao  :o)


 e perche' non e' consigliabile una variabile?
Perche' la variabile "vive" solo durante l'esecuzione 
dello script, mentre la property "si conserva" fra 
un'esecuzione e l'altra. Ma durante l'esecuzione 
puo` essere cambiata anch'essa, permanentemente fino 
alla prossima volta.
-- 
Ciao,        \+----------+  "La risposta e ` dentro di me...


e perche' non e' consigliabile una variabile?
Non "una variabile", ma "una variabile globale".
Le global sono proprieta' non dello script, ma del System stesso. Non
sopravvivono al reboot, ma il System finche' gira ricordera' che ad
una certa etichetta (nome variabile) e' associato un certo valore.
E, aldila' dell'inutile peso sullo stack e dell'ingerenza non
necessaria in un layer aplicativo inferiore, se becchi un'etichetta
gia' utilizzata la sovrascrivi.


Yeahhh ...  :o)
piano piano (molto piano..) comincio a capire...
sei stato chiarissimo con le spiegazioni ed esempi...
veramente grazie :o)
un ultimissima cosa...acc :o1
mi riferisco ad una frase di Balestra dove dice:
La property e' (come dice il nome) una proprieta' dello script. Viene
registrata (anche se variata) all'interno dello script nei secoli a
venire, e li' rimane a meno che non lo editi e ricompili: in quel caso
riprendera' il default.
La global e' una sorta di variabile d'ambiente, e' visibile da tutto
il MacOS e non sopravvive al riavvio: meglio non usarle se non si e'
costretti. 
cosa intende quando dice "e' visibile da tutto il MacOS" ??
da come mi dici la variabile e' una specie di magazzino provvisorio...
ci metti qualcosa che ti serve solo al momento e che poi cmq si
perdera'....
ma proprio non riesco ad immaginarmi la storia della visibilita' nel
MasOS...
ciao :o)
Cucciolo dubbioso...ma contento che oggi ha imparato qualcosa... ;o)


visibilita' nel MasOS...
utilizziamo due applicazioni script...
[Script_1]
-----8<---------8<---------8<---------8<---------8<----
global tivedo
on run
  set tivedo to "Ciao, mamma!"
end run
-----8<---------8<---------8<---------8<---------8<----
[Script 2]
-----8<---------8<---------8<---------8<---------8<----
global tivedo
on run
  display dialog tivedo
end run
-----8<---------8<---------8<---------8<---------8<----
Lanciamo l'applicazione script "Script 1", che esce subito.
A questo punto (o anche tra mezz'ora, ma prima di riavviare) lanciamo
l'applicazione script "Script 2".
Indovina cosa ci sara' scritto nel dialog? ;-)))


> Indovina cosa ci sara' scritto nel dialog? ;-)))
..ho capito..finalmente ;o)
il mio sbaglio era che includevo script e variabile (global) come una
unica cosa...cioe' finito lo script , finita la global...da cui non
capivo appunto la visibilita' nel MacOS...
grazie per la lezione.. :o)
Cucciolo di nuovo a "squola"... ;o)
