Newsgroup: it.comp.lang.delphi
Titolo: file di configurazione..

ciao a tutti :)
vorrei sapere una cosa (non sono Daria :))..
sto facendo un programma (come tutti voi magari) vorrei salvare in un file
delle impostazioni..
per poi riprenderle ad ogni avvio del programma.. come posso fare???
le informazioni sono del tipo...
mese: xx
anno: xx
n. accessi: xx
situazione: xxx%
..
..
..
sostanzialmente sono valori di costanti..
poi come posso renderle "globali" in tutto il mio programma..
grazie a tutti..
-- 
Posted from 
mail-4.tiscalinet.it
 [195.130.225.150] 
via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 ha scritto nel messaggio
news:LOBBJOPCEFKFDECGJ...@tiscalinet.it...


 poi come posso renderle "globali" in tutto il mio programma..
puoi usare un file proprietario, oppure il registro di Windows se le
informazioni non sono tantissime.
Riguardo il file proprietario, lo puoi fare di testo o binario.
Io preferisco un file binario per questo genere di cose. Usando la classe
TFileStream, ci vuole un'attimo.
Tanto per cominciare, ti conviene rappresentare tutti i dati da memorizzare
o da leggere, in un record in modo che puoi leggerli o scriverli in un sol
colpo oltre al fatto che la cosa risulta più ordinata.
Quindi il tuo record può essere fatto così:
type TMyInfoConfig = record
         Mese                       : Word;
         Giorno                     : Word;
         Anno                      : Word;
         Numero_Accessi  : Word;
         Situazione               : Word;
      end;
var MyInfoConfig : TMyInfoConfig;
procedure Scrittura;
var MyStream : TFileStream;
begin
  MyStream:=TFileStream.Create('c:\config.cfg', fmCreate);
  try
    MyStream.Write(MyInfoConfig, SizeOf(MyInfoConfig));
  finally
    MyStream.Free;
  end;
end;
procedure Lettura;
var MyStream : TFileStream;
begin
  MyStream:=TFileStream.Create('c:\config.cfg', fmOpenRead);
  try
    MyStream.Read(MyInfoConfig, SizeOf(MyInfoConfig));
  finally
    MyStream.Free;
  end;
mi fermo quì.
Spero di averti dato un'idea e spero che non ho fatto qualche errore visto
che il codice non l'ho collaudato, ma logicamente e sintatticamente
funziona.
Poi ovviamente sta a te migliorarlo un po'. Ad esempio nella procedura di
lettura, prevedi che il file "config.cfg" possa essere stato cancellato
oppure non è stato ancora creato. Prevedi pure che io ti ho scritto
"c:\config.cfg"solo per farti capire, ma il tuo file di configurazione lo
dovresti piazzare nella cartella del tuo programma. Riguardo il registro non
ti scrivo nulla perchè sto andando a pranzo !!! :-)))
Ti dico solo di dare un'occhiata alla classe TRegistry e prima di fare danni
alo registro, controlla bene quello che stai facendo. ( al limite fai un
backup dei file di registro ).
Poi per rendere visibile una variabile a tutte le unit del progetto, io
adotto una soluzione molto semplice.
Definisco una unit "Globals.pas" che è usata da tutte le unit del progetto.
Quì definisco variabili, procedure, funzioni, tipi ecc.....in modo che tutti
possono vederle ed utilizzarle. Ok ?
Nella struttura ( record ) che ho scritto, ho supposto Word i tipi per
indicare le varie variabili in gioco. Tu puoi cambiarle come vuoi.
Tiene sempre presente che ogni variabile da salvare su file binario, deve
avere una dimensione ben precisa in modo che le funzioni di scrittura o
lettura, sanno quanti byte scrivere o leggere. Questo è solo un avviso per
evitarti fastidiosi mal di testa quando scrivi una cosa e lui ne legge
un'altra. Ora ti saluto.....vedi tu come organizzare al meglio le cose e per
ogni problema scrivi !!
Ciaoooo !!!1
Antonio Tarolla

Usa i fine Ini.
In particolare guarda la classe TIniFile nell'Help di Delphi.
Ciao
Rocco Barbaresco:
Herrare Humanum Est,
Perseverare Ovest ....
(By Fichi D'India)

poi come posso renderle "globali" in tutto il mio programma..
Puoi usare una classe TParametri = class(TObject) con (privato) un
IniFile che legga/scriva da/su file INI o Registry (se vuoi essere
Win-compliant). 
Pubblichi le proprieta'/parametri, aggiungi un paio di metodi per
caricare/salvare; se vuoi esagerare, un OnChange triggerato dal setting
di una proprietą.
Volendo, puoi ereditare direttamente da TCustomIniFile o uno dei
discendenti. (v. Help circa TIniFile; in particolare ReadXxxx,
WriteXxxx).
Saluti
Paolo Arosio

 programma.. come posso fare???
visto che te ne sono state proposte di cotte e di crude (e tutte valide)
te ne propongo una, da utilizzarsi solo se il tuo programma fa gia' uso
di db... se si'. io salveri tutto li' dentro in una tabella "impostazioni"
o simile oppure su di un altro file...
se non usi i db e' solo uno spreco portarti dietro BDE e/o motore SQL
Ciao,
Alan Solo