Newsgroup: it.comp.lang.visual-basic
Titolo: Codice per visualizzare immagini da CD-ROM

Ciao a tutti, vi propongo il seguente problema:
Ho creato un videocatalogo in VB6 perfettamente funzionante, il problema č
che vorrei poter decidere durante l'installazione di mantenere le immagini
(3800 circa) su CD.
Se qualcuno fosse cosě gentile da darmi qualche indicazione su come far si
che il programma cerchi la cartella immagini da CD, senza che debba
specificare durante la fase di installazione un percorso univoco (io, ad
esempio, ho un dvd, un masterizzatore cd e un masterizzatore dvd, vorrei
potermi permettere di inserire il cd su uno qualsiasi di questi drive),
gliene sarei infinitamente grato.

 gliene sarei infinitamente grato.
beh, scusa, non ho capito. Durante il setup non installi le immagini nella
dir di installazione, ma le lasci su CD.
Ad ogni avvio, fai scegliere all'utente la lettera da cui vuole leggere le
immagini, così se ha più di un CD come te lo fai scegliere. Poi basta,
prendi la lettera e leggi da lì.
consiglio: salvati la lettera da qualche parte (file ini o registro), così
ad ogni avvio ti puoi ricordare la lettera che aveva selezionato l'ultima
volta....al massimo lo puoi forzare se ti accorgi in qualche modo che il CD
è vuoto, oppure non è il tuo (magari leggendo la label)......
good coding!!!
(non fare cross-posting, è Male)
-- 
Damiani Liborio Igor
http://www.igordamiani.it
Nella finestra Debug di VB:
Nome="igor":? Nome & Chr$(64) & Nome & "damiani" & Chr$(46) & "it"
Che tu sia maledetto, SWEN...

 gliene sarei infinitamente grato.
Per fare qualcosa di automatico puoi provate un sistema del genere:
'in un modulo
Public Declare Function GetDriveType Lib "kernel32" Alias "GetDriveTypeA" _
 (ByVal nDrive As String) As Long
Public Const DRIVE_CDROM = 5
ora, in fase di avvio di programma, vai a cercare tutte le unita' CD (per
estensione vengono considerate anche DVD e masterizzatori)
Dim i       As Long
Dim drive   As String
Dim res     As Long
For i = Asc("A") To Asc("Z")
    drive = Chr$(i) & ":\"
    res = GetDriveType(drive)
    If res = DRIVE_CDROM Then
        'E' un unita' "CD like", a questo punto verifichi l'esistenza
        'di un file o cartella significativa, gestendo l'eventuale errore
per
        'le unità senza disco... se trovi la cosa giusta, memorizzi il
percorso
        'base in una variabile globale che userai da qui in avanti,
altrimenti,         'esaurite tutte le unita', segnali il problema
    End If
Next
per ottimizzare leggermente gli avvii successivi puoi memorizzare da qualche
parte l'ultimo percorso valido, in modo da testarlo per primo la prossima
volta e usare il ciclo qui sopra solo se la prima verifica fallisce.
Ciao
-- 
Luca Dormio - 
luca....@tin.it
________________________________
"Marty, non stai ragionando in maniera quadridimensionale"
Dr. Emmett L. Brown

 prendi la lettera e leggi da lě.
Quello che vorrei evitare č proprio questo. Mi servirebbe una procedura per
far si che il programma non faccia troppe domande all'utilizzatore (al
masssimo una finestra che chieda genericamente di inserire il cd). Parecchie
persone che utilizzano il videocatalogo sanno a malapena accendere il
computer. Devo rendere loro la vita piů facile possibile altrimenti squilla
il telefono tutto il giorno...

 Ad ogni avvio, fai scegliere all'utente la lettera da cui vuole leggere le


 Ciao
bravo, pensavo proprio a questo. Magari una bella list-view con icone grandi
con l'elenco delle unità CD che hai rilevato, con una bella icona e la label
di ciascun CD. Se il tuo cd lo masterizzi con la label PHOTO, sarà ben
riconoscibile dagli altri, così anche il più utonto capisce al volo qual'è
il cd corretto.....
good coding!!!


 il cd corretto.....
In realta' quello che intendevo era proprio di non visualizzare nulla; dato
che Marco conosce a priori la struttura del suo CD (come dici tu l'etichetta
di volume, ma anche quali cartelle e/o file fissi esistono sempre ecc..),
una volta individuate le caratteristiche non ha bisogno di alcun input, da
chiedere casomai quando non trova nulla in nessuna unita'.


"M@rko" <wiland...@MAIUSCOLOtin.it> ha scritto nel messaggio
news:KLCdnZsaF_T...@giganews.com...

usando i path relativi (ad es.: app.path & "\img\")


Questo va senz'altro bene se anche l'eseguibile risiede sul CD, ma sembrava
di capire che il programma fosse installato normalmente sul disco e solo i
dati rimanessero su CD...


 gliene sarei infinitamente grato.
C'č un esempietto da me:
http://www.gbcweb.com/free/vbsamples/samples_CDfindForDATA.zip
fa esattamente quello che cerchi...
-> GbC|
www.gbcweb.com

 dati rimanessero su CD...
Esatto, i path relativi sono già presenti nel codice.
Attualmente esistono un "PathApp" e un "PathImg" che vengono scritti in un
file .INI la prima volta che viene eseguito il programma.
La mia idea è di creare una struttura a livello di codice che mi permetta
durante l'installazione di sceglere tra una installazione COMPLETA
(l'attuale, che prevede il trasferimento di programma, database e immagini
su disco fisso) e un'installazione MINIMA (che preveda eseguibile e database
su disco fisso e immagini su CD), magari impostando nel file .INI un nuovo
valore del tipo Installazione=COMPLETA o Installazione=MINIMA.
Quello che vorrei ottenere dopo un'installazione "minima" è che il programma
leggendo "Installazione=MINIMA" chieda in modo GENERICO di inserire il CD
nel momento in cui è richiesto di visualizzare un'immagine, come accade in
tanti programmi che richiedono la presenza del CD, ma che non mi obblighi a
inserire il CD sempre nell'unità D: piuttosto che E: o Z:
Spero di essermi spiegato.
GRAZIE

 Spero di essermi spiegato.
Perfettamente.... infatti ti era gia' stata data la soluzione ;-)


Ringraziando sentitamente tutte le persone che mi hanno voluto dedicare un
po' di attenzione devo constatare che la soluzione propostami da Luca si è
dimostrata molto efficace:
