Newsgroup: it.comp.lang.delphi
Titolo: Accesso CD

Ciao a tutti io ho un software che legge delle tabelle da un CD e fino qui
nulla di strano; oggi mi è venut un terrbile dubbio: siccome nel PATH del
database ho messo "E:\Dati" e funziona tutto perfettamente ma se altre
persone avessero l'unità CD che si chiama con una altra lettera? Ovvimente
il software nn funzionerebbe; come faccio a gestire questa cosa?
grazie 1000

 faccio a gestire questa cosa?  grazie 1000
All'atto dell'installazione (o primo avvio del FE) salva la lettera del 
CD nel registry.
All'avvio del FE utilizza quel valore per accedere al DB.
Saluti.

 grazie 1000
Potresti risolvere permettento all'utente di poter decidere lui dove si
trovano i dati.
Ad esempio in una maschera "Options" gli permetti di poter settare il
percorso, che può essere "E:\DATI\" oppure "F:\DATI\", insomma, quello che
vuole lui.
Ricorda che un utente potrebbe avere più lettori montati sulla stessa
macchina e potrebbe inserire il CD dove gli capita. E' ovvio che di default
il programma prenderebbe il percorso da lui inserito precedentemente. Così
facendo, tra l'altro, svincoli l'utente dallo smanettare nei registri.
Salvare la "lettera" nel Registry non credo sia la soluzione ottimale.
A. S.

ok ma come faccio? e che codice devo scrivere per fare cambiare di
conseguenza il path del database?
Grazie

 conseguenza il path del database?
Innanzi tutto: Dove salvare il dato?
Potresti inserire la path in un file .ini.
Per far ciò crea un nuovo file e rinominalo in "NomeProgramma.Ini".
Aprilo ed Inserisci il seguente testo:
[SETTINGS]
DBPATH=
Salva e chiudi nella stessa folder dell'applicazione.
Per l'uso dei file .ini  esistono già tanti di quei post da ubriacarsi.....
Nella MainForm potresti scrivere:
// Con questo codice prendi il valore salvato....
var
  strDBPATH: string;
procedure TMainForm.FormCreate(Sender: TObject);
var
  FileIni : TIniFile;
begin
  FileIni := TIniFile.Create(ChangeFileExt(Application.Exename,'.ini'));
  try
    strDBPATH := FileIni.ReadString('SETTINGS','DBPATH','DefaultValue');
    DirectoryEdit1.Text := strDBPATH;
  finally
    FileIni.Free;
  end;
 end;
Per Salvare il dato potresti scrivere:
procedure TMainForm.FormClose(Sender: TObject; var Action: TCloseAction);
var
  FileIni : TIniFile;
begin
  FileIni := TIniFile.Create(ChangeFileExt(Application.Exename,'.ini'));
  try
    FileIni.WriteString('SETTINGS','DBPATH', DirectoryEdit1.Text);
  finally
    FileIni.Free;
  end;
end;
Questo è ciò che potresti fare per leggere e scrivere......
Per permettere all'utente di poter cambiare percorso credo che la funzione
che ti servi è  SelectDirectory;

ti ringrazio molto ma siccome sono agli inizi non credo di essere in grado
di farlo........
ciao e grazie 1000

 ha scritto nel messaggio
news:Y1KFa.124260$g92.2...@news2.tin.it...

Io ho fatto questo:
- ottieni la lista dei dischi (io ad esempio ho usato
GetLogicalDriveStrings)
- con GetDriveType filtri solo i lettori CD
- con GetVolumeInformation (o altro idoneo al tuo scopo) verifichi se il cd
inserito è il tuo.
In questo modo, all'avvio dell'applicazione vai a verificare che il tuo cd
sia presente in uno dei lettori e assegni il path corretto.
Ciao, Roberto

 non credo di essere in grado di farlo........
Risposta sbagliata...
Una persona, o meglio, un programmatore non puň, anzi, non deve
assolutamente arrendersi o tornare indietro al primo ostacolo che trova....
Una risposta piů corretta poteva essere "Non sono molto ferrato su queste
cose. Potete darmi una dritta?"
Non agire cosě, non devi. Affronta le cose se vuoi "crescere".
Ho costruito un piccolo esempio che fa ciň che ti ho postato prima.
Scaricalo da 
http://www.salexander.supereva.it/Inifile.zip
Vedi un pň che giri faccio. Quando hai dei dubbi premi F1 sul dubbio in
questione. Sfrutta l'help di Delphi.
E soprattutto non dire "non credo di essere in grado di farlo........".
Almeno Provaci.. Ok? :)
Ciao,
A.S.

 ha scritto nel messaggio
news:bc9d80$gep$1...@grillo.cs.interbusiness.it...

Al link 
http://hu.torry.net/driveinformation.htm
 il componente DiskInfo2.0
ti può dare alcune dritte di come implementare il tutto.
Ciao, Roberto

da quell'URL nn si scarica nulla...
OK cmq ci provo.
Grazie

Ti ringrazio Roberto ma mi potresti dire passo passo (con il codice giusto)
quello che hai fatto? Io nn ho idea di come fare.........e nemmeno da che
parte iniziare....
Grazie 1000