Medio (Livello "sono in gamba")

no movie - just text {general}

Come conoscere il numero assegnato al Cd dal sistema

Se realizziamo un Cd dobbiamo decidere se far partire
l'eseguibile direttamente dal Cd stesso oppure
se installarlo sull'hard disk dell'utente.

Mentre su piattaforma Macintosh sono rari i Cd che
installano l'eseguibile sul disco rigido dell'utente, su piattaforma
Windows è consuetudine includere nel Cd un installer
che copia l'eseguibile sul disco rigido, crea l'icona del Cd e
inserisce nel menu di avvio il nostro programma.

Questa scelta in verità presenta qualche vantaggio,
non ultimo la velocità di avvio del programma.

Se decidessimo di seguire questa consuetudine ci si
presenterebbe un problema: conoscere la lettera assegnata
dal sistema al nostro Cd.

Mentre su piattaforma Macintosh il Cd mantiene il nome
che noi gli abbiamo attribuito, su Windows il sistema decide
quale lettera assegnare al Cd. Questo avviene in base alle
periferiche installate per cui la lettera non sarà mai uguale per
ogni utente.

Se installiamo il programma sul disco rigido dell'utente
abbiamo quindi bisogno di uno script che ci permetta di conoscere
la lettera attribuita dal sitema al Cd.

Lo script realizzato ci permette
di conoscere la lettera (o il nome) del Cd, di sapere se il
programma è stato avviato da Cd o da disco rigido e
quindi di regolarci di conseguenza.

Una sola avvertenza:
sul Cd ci deve essere presente una cartella (directory) con un
nome non comune (ad esempio "abcdef" con dentro un file
anch'esso con un nome non comune (es. kxywz.abc).



===> COME FUNZIONA
Controlliamo insieme la struttura di questo scirpt:

1) controlliamo se il nostro Cd sta girando su Mac o su Windows

on startMovie
  if the machineType = 256 then
    Windows
  else
    Macintosh
  end if
end

2) se stiamo girando su Mac controlliamo se il nome del 
disco da cui stiamo avviando il programma corrisponda 
al nome del nostro Cd. Se il nome
corrisponde vuol dire che l'utente ha avviato 
il programma dal Cd, se non
corrisponde, vuol dire che stiamo avviando
 il programma dal disco rigido.

on Macintosh
  if (drive() = #NomeDelCd) then   
-- sostituire #nomeDelCd con il nome del
nostro CD
    go movie (the pathName & #nomedelFileDiAvvio)  
--sostituire #nomedelFileDiAvvio con il file d'inizio del Cd
    exit
  else
    set dove = "nomeDelCd:nomedelFileDiAvvio" 
-- sostituire i nomi
    go movie dove
  end if
end


3) questa funzione ci permette di sapere il nome 
del disco da cui è stato
avviato il programma

on drive
  set delim = the itemDelimiter
  set the itemDelimiter = ":"
  set qDrive = item 1 of the pathName
  set the itemDelimiter = delim
  return qDrive
end


4) Se stiamo girando su piattaforma Windows dobbiamo 
prima sapere se il
programma  è stato avviato da Cd o da 
disco rigido, poi nel caso il programma
fosse stato lanciato da disco rigido conoscere il nome della lettera
assegnata dal sitema al Cd.

on Windows
  set x = driveWIN()
  if x = "" then
    go to movie (the pathName & #nomeDelFileDiAvvio) 
-- sostituire il nome
del file
    exit
  else
    set dove = x & ":\nomeDelFileDiAvvio"  -- sostituire il nome del file
    go movie dove
  end if
end

5) questa funzione sfrutta la funzione 
di Lingo getNthfileNameInFolder che
permette di conoscere i nomi dei file 
contenuti in una data cartella.
Tramite questa funzione possiamo sapere 
se esiste un drive con una cartella
di nome  "abcdef" con dentro un file di 
nome kxywz. Se si verificano queste
condizioni possiamo ricavarci la lettera del Cd.

on driveWIN
  repeat with i = 68 to 91  -- le lettere da C a Z in codice ASCII
    set nome = getNthfileNameInFolder(numToChar (i) & ":\abcdef\",1)
    if char 1 to 5 of fname = "kxywz" then exit repeat
  end repeat

  if i < 91 then
    set lettera = numToChar(i)
  else
    set lettera = ""
  end if

  return lettera
end

By Tonino - digitaly.com 1999