Newsgroup: it.comp.lang.delphi
Titolo: salvare impostazioni

salve, vorrei sapere come si fa a salvare le impostazioni di un programma...
ho fatto un piccolo mailsender per allenarmi e vorrei che quando riapro il
programma mi tenesse l'ultimo serve immesso, l'ultimo indirizzo email ecc...
insomma senza dover scrivere ogni volta certe cose...
come potrei fare? forse creare un file di testo esterno che contiene tutte
le info?
come si fa a far intercettare le cose che servono?
grazie mille
--
Madbull
madbull#@
libero.it
ICQ   77479921
http://www.madbull.net

 come si fa a far intercettare le cose che servono?
Se vuoi essere "Microsoft compliant", dovresti usare il registry per salvarti le
impostazioni (per questo Borland ha tirato fuori dal cappello TRegIniFile), ma io resto
sempre dell'idea che è meglio farsi un bel TIniFile nella stessa dir dell'applicazione,
checché ne dica M$.
Comunque è molto semplice il funzionamento di entrambi.
Se usi TIniFile, basta creare l'oggetto
iIni := TIniFile.Create('nomefile.ini');
poi basta usare i vari metodi Write/ReadString e simili, in questo modo puoi salvarti
quello che vuoi e rileggertelo quando ritieni necessario.
Un file ini è strutturato così
[Section1]
Item1=Value
Item2=Value
[Section2]
Item1.Value.......
Ricordati di fare un bel iIni.Free alla fine :)
Due precisazioni: TIniFile è cross-platform, TRegIniFile no, TInifile può avere problemi
di dimensioni (non mi ricordo esattamente quindi non sparo a caso), ma per questo puoi
cercare il componente TBigIniFile :)
__
Jax

 checché ne dica M$.
però questo è stato detto quando i dischi non erano quelli di oggi.Mi
ricordo (son vecchiotto)  come m'incaxxavo nel vedere tutti quei file.Ti
ricordo che un file ini se pur piccolissimo porta via sempre un cluster del
disco.Se non sbaglio si possono formattare partizione con cluster anche di
32k o forse più (non sono molto informato magari se qualcuno ne sa di più lo
dica).
C'è anche da dire che ntfs adesso sbatte i file di piccole dimensione in uno
spazio apposito dove daranno meno fastidio.
Per dirtene un'altra a proposito di spazio sprecato, c'erano alcuni
antivirus che mettevano un file di piccole dimensioni in ogni directory (per
i loro controlli)e ti lascio immaginare lo spazio buttato via.Credo che
l'usare un file unico ocme raccomanda microsoft sia la soluzione giusta
,anzi questa cosa dovrebbe essere controllata da sistema per non incorrere a
migliaia di file mignon su disco.Ovviamente solo  per informazioni "non"
importanti vista la fragilita' del registro  :))
ciao

 "non" importanti vista la fragilita' del registro  :)) 
Microsoft consiglia di seguire la sua strada non perche'
sia la migliore, ma perche' e' la via Microsoft (per la 
serie: futile ogni vostra resistenza).  Microsoft non 
credo avra' problemi a spiegarci perche', pur raccomandando
un file unico, i suoi applicativi si portano dietro una
marea di file .ini ;)
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 marea di file .ini ;)
si ma non era tanto il "perchè lo dice microsoft" ma il fatto che ha ragione
almeno su questo....
l'odiare migliaia di file piccolissimi (non mi riferisco solo ai file.ini)
ma a qualunque file di dati è davvero poco necessario :) .Ci voleva un
database che li contenesse tutti e mamma microsoft ci ha accontentati.
:))))))))))
Non so se ti ricordi ma questo malcontento sui file di piccole dimensioni
era diffuso
ciao

 accontentati.
Sono d'accordo, ma fino a un certo punto. Le raccomandazioni sull'usare il registry invece
dei .ini non sono state fatte moltissimo tempo fa... dopo l'uscita (o con) di Win95, e
allora gli ardischi non erano grossi giga e giga, ma di certo non erano gli ini a portar
via spazio (oltretutto come dice giustamente Andrea, Win stesso ne usa a iosa di file
piccoli, esempio i .cur, .ani, .inf -in windows/inf vai a vedere quanti ce ne sono-...)
E resto dell'idea che gli ini siano molto piů comodi del registry, soprattutto per le
applicazioni delphi: ci vantiamo tanto che delphi fa .exe indipendenti, che basta copiarli
in una cartella e via... dobbiamo per forza fare un tool di disinstallazione per far
cancellare le entrate che il nostro prog ha scritto nel registry? O č meglio cancellare
tutta la cartella, ini compreso?
Se, ripeto, se M$ mettesse davvero a disposizione un bel db con *solo* tutte le
impostazioni dei programmi, *modificabile senza fare danni al sistema*, quello sě sarebbe
utile e lo userei senza nessun problema. Adesso come adesso il registry č *anche* un db di
impostazioni.
__
Jax

 piccole dimensioni era diffuso
Onestamente, non mi ricordo di questo malcontento.
Di una cosa sono sicuro: si sta tornando indietro.
Piu' si assaggiano le nuove tecnologie e piu' si 
apprezzano quelle passate.  I guai sono nati con 
il registro di Windows.  Con D6, tanto per fare 
un esempio, le informazioni sulle connessioni ai db 
con dbexpress vengono salvate in semplicissimi 
file .ini e questa e' una cosa molto molto comoda.


 O č meglio cancellare tutta la cartella, ini compreso?
Viva il DOS, via Linux.  Purtroppo MS ha voluto che i programmi
mettessero radici nel sistema, quindi quando li installi spera
sempre che l'installazione vada bene, perche' se ti crolla la
corrente in uno dei passi , ti attacchi al tram.  
Non riesci neanche piu' a disinstallarlo.  Il bello e' che, 
magari, per installarlo di nuovo devi prima disinstallarlo.
Questo mi e' capitato personalmente con Norton Antivirus.
Ripeto: viva il DOS.


 tutta la cartella, ini compreso?
Ah, per non parlare del fatto che copiare le impostazioni da un pc all'altro, con un file
ini è un giochetto...
__
Jax

 impostazioni.
ma guarda che i dati dei programmi li memorizzi in un file a parte (se non
usi chiavi particolari)usando le stesse api del registro (appunto per non
far danni al sistema).
purtroppo non conosco bene come funziona  dovrei approfondire l'argomento.
Spero ci sia qualcuno che ne sa di piů...

 far danni al sistema).
A dire il vero so che il registry è composto da user.dat e system.dat... ma in effetti non
so *cosa* va *dove*. Sarebbe bello che il nostro LaForgia ci illuminasse :)
__
Jax anche se stiamo andando un po' OT...

ho usato un file ini e funzia tutto, ma come faccio ad indicargli di
metterlo in una cartella che voglio? lui me lo mette in C:\WINDOWS
bye


 bye
Devi cambiare la directory di creazione del file .ini...
Invece di fare solamente:
iIni := TIniFile.Create('nomefile.ini');
Fai
iIni:=TIniFile.Create('C:\TuaPath\nomeFile.ini');
Ciao
Salvatore