Newsgroup: it.comp.lang.visual-basic
Titolo: [?.NET]Memorizzazione dati

Ho provato finalmente 
VB.NET
, l'impressione iniziale è....impressionante, ti
aspetti che da un momento all'altro sbuchi da qualche parte una tazzina di
caffè fumante, tanto è servizievole....
Comunque, venendo al sodo: sul libro di F.Balena è scritto che sarebbe
meglio evitare di utilizzare il registro di sistema per memorizzare i dati
dell'applicazione, cosa che invece era implicitamente consigliata in VB6,
visto che lo faceva direttamente il codice dell'autocomposizione, però non
viene indicato quale metodo utilizzare in alternativa.
Una decina di anni fa avevo programmato in QCWin per windows 3.1, e in
quell'ambiente erano presenti delle funzioni che permettevano di gestire
abbastanza agilmente i file .ini, ho avuto occasione di vedere i listati di
altri programmatori, e ho visto che in VB6 facevano ricorso alle API per
ottenere lo stesso risultato, in 
VB.NET
 c'è qualche modo per farlo (evitando
le API, se possibile).
Grazie per l'attenzione.
Salutoni
Sergio

 viene indicato quale metodo utilizzare in alternativa.
Il software creato con .NET è essenzialmente costituito da un exe principale
e da altri assemblies che fungono
da librerie. Balena non fornisce alternative, per il semplice fatto che,
la natura autodescrittiva degli assemblies non richiede l'uso del registro.
Puoi scrivere nel registro, ma la vera necessità si ha solamente in casi
*molto* particolari.
Saluti,
--
Antonio Cangiano
Webmaster di 
www.visualcsharp.it
Fondatore di free.it.comp.lang.csharp


Intanto, ovviamente, grazie!
Però resto con il mio problema: prima con VB6 utilizzavo il registro per
memorizzare, ad esempio, le dimensioni della maschera principale (questo era
il comportamento dell'autocomposizione a cui accennavo nel primo messaggio),
se io volessi memorizzare da qualche parte queste o altre informazioni, in
modo che possano essere modificacte dal programma stesso, ho a disposizione
un metodo più o meno specifico dell'ambiente .NET (ad esempio la gestione
del vecchio file .ini), oppure devo costruirmi qualcosa in casa, tipo un
file di testo o un file xml?
Pongo questa domanda perché in alcune applicazioni, ed in specifico quella
che sto facendo per impratichirmi sul nuovo linguaggio, le informazioni da
memorizzare sono abbastanza banali, e utilizzare un recordset su cui
caricare il file xml mi sembrava un po' come sparare ad una formica con un
cannone.
Salutoni.
Sergio

Ok Sergio... ci siamo capiti. ;o))
La configurazione del software č un valido motivo per usare il registro
anche in 
VB.NET
. ^_^
Il namespace appropriato č System.Win32, le classi da utilizzare sono:
Registry e RegistryKey.
Le istanze di RegistryKey rappresentano le chiavi del registro, e tramite i
suoi metodi puoi modificare, aggiungere, togliere e quant'altro, una
chiave del registro. Registry invece non viene istanziato, ma utilizzato per
muoversi nel Registro... si sfruttano le sue proprietą shared:
ClassesRoot, CurrentConfig, CurrentUser, DynData, LocalMachine,
PerformaceData e Users. Ovviamente ognuno di questi
corrisponde all'analogo hive... in pratica usiamo Registry per fornire
istanze al RegistryKey.
Per esempio istanziamo la classe RegistrKey denominando l'oggetto Hklm e gli
assegniamo Registry.LocalMachine.
Saluti,
--
Antonio Cangiano
Webmaster di 
www.visualcsharp.it
Fondatore di free.it.comp.lang.csharp
E' iniziato il corso di C# !

 E' iniziato il corso di C# !
Scusa, non ci siamo capiti, non volevo sapere come fare ad usare il
registry, perchè nel libro di Balena già citato è spiegato in modo
esauriente, quello che volevo sapere era se esisteva una soluzione
alternativa per memorizzare quelle quattro stupidaggini che bisogna sempre
appoggiare da qualche parte perchè devono conservarsi tra un lancio e
l'altro della configurazione.
Anzi, una domanda diretta: visto che sei esperto in C#, in quel linguaggio
sono state conservate le funzioni oer leggere/scrivere i file .INI? In tal
caso potrei verificare anche l'interoperabilità dei vari linguaggi del
Visual Studio.
Ancora grazie e perdona l'insistenza
Sergio

Non sono mai stato un amante del registry e francamente sono contento che MS
abbia deciso di 'metterlo in disparte', per quanto riguarda il tuo quesito
ti consiglio di utilizzare dei files di configurazione in formato XML (il
supporto perXML in dotnet è impressionante) oppure, se preferisci, i vecchi
e cari files .INI utilizzando però le solite API in quanto il CLR di dotnet
non offre nulla a riguardo.
HTH
--
Corrado Cavalli
UGIdotNET - 
http://www.ugidotnet.org

 sono state conservate le funzioni oer leggere/scrivere i file .INI?
.NET non fornisce aiuti in tal senso.
O vai di API... (ma non te lo consiglio) o ti appoggi a un filettino XML
(consigliato).


 è come sparare a una formica col cannone... ^_*
Ok, grazie ancora, a questo punto affronterò un po' prima del previsto la
questione xml
Salutoni
Sergio

 l'altro della configurazione.
La soluzione esiste ed è anche molto elegante.
Puoi crearti un Application Configuration File (avente il nome dell'assembly
ed estensione .config, per es. MyAssembly.exe.config).
Questo file di confugurazione è un normalissimo file XML che può contenere
una serie di informazioni "di sistema" utilizzate automaticamente dal
Framework .NET, oppure informazioni custom del tuo applicativo (come per es.
le coordinate e le dimensioni della form ;-)).
Per inserire quest'ultimo tipo di dati, devi crearti una sezione specifica
chiamata Configuration Section
(
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpguide/ht
ml/cpconconfigurationsectionhandlers.asp ).
In fase di Runtime l'applicazione utilizzerà
ConfigurationSettings.AppSettings  per andare a leggere le informazioni
memorizzate nel file di configurazione.
Segui il link che ti ho postato, troverai una sezione teorica ed alcuni
esempi di codice.
Ciao!
--
Lorenzo Benaglia
UGIdotNET - 
http://www.ugidotnet.org

 ed estensione .config, per es. MyAssembly.exe.config).
Grazie, ma mi pareva di aver capito, scorrendo l'help, che questo tipo di
struttura era "read only", all'interno dell'applicazione, quindi non era
confacente alle mie esigenze. (Se sbaglio mi corigerete...)
Salutoni
Sergio

 confacente alle mie esigenze. (Se sbaglio mi corigerete...)
Ooooppps, credo che tu abbia ragione.
Come non detto.
Riguardando i membri della classe ConfigurationSettings
(
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html
/frlrfsystemconfigurationconfigurationsettingsmemberstopic.asp ) ho notato
che permettono di accedere in sola lettura...
Scusa!
Eppure tempo fa avevo letto qualcosa... Se mi viene in mente ti faccio
sapere.


 wrote in message
news:ajtimq$1d9d4n$1...@ID-154627.news.dfncis.de...
Guardando gli esempi riportati su
http://samples.gotdotnet.com/quickstart/howto/
  facendo click su "XML Data",
credo che la soluzione di Antonio Cangiano di creare un nuovo file XML per
memorizzare i tuoi dati sia la più corretta.
A favore di questa ipotesi, prova a leggere il 5° ed il 6° Thread su
http://www.gotdotnet.com/community/messageboard/Thread.aspx?id=14819&Page=1#
14838


 14838
Molto interessante, stasera testo.
Salutoni
Sergio


Sarà stata la necessità ma ho utilizzato un file.ini , con le API utilizzate
in VB6:
GetPrivateProfileString per leggere e WritePrivateProfileString per
scrivere.
Ho modificato i valori Long in Integer; ho passato una KeyValue  in una
stringa  Space(200)
e tutto è tornato.
Oltre per la mancanza di tempo per cercare soluzioni alternative flessibili
all'accoppiata API - file.ini ho utilizzato le
API per il seguente motivo:
Le applicazioni costruite con 
VB.NET
 potranno essere utilizzate praticamente
, per adesso e non si sa per quanto tempo reale
ancora , solo con Windows ;
conseguenza : utilizzare le API non mi sembra una scelta illogica.
giuseppeD