Newsgroup: it.comp.lang.visual-basic
Titolo: Scrivere una classe su un file binario

Nell'attesa che il libro di F. Balena - Visual Basic .NET sia ristampato 
(in Italia e in Germania ormai è introvabile), e dato che quelli che ho 
a disposizione non affrontano il problema, avrei le seguenti domande :
a) in Visual Basic 6 esisteva una cosa molto comoda : il 'Type'.
Ad esempio :
TYPE  Ciccio
  dim A as Integer
  dim B as String
  dim C as Double
END TYPE
Questo permetteva di 'raggruppare' delle variabili e quando si scriveva 
un file binario si poteva fare un bel  Write(Ciccio) e funzionava 
magnificamente.
da diverse fonti (internet) mi è stato spiegato che in VB. NET non 
esiste il Type e che TUTTO bisogna farlo in una classe.
Ok. Allora ho fatto
Class  Ciccio
     A as Integer
     B as String
     C as Double
END Class
b)  ora, arrivato il momento di fare Write(Ciccio) non mi funziona e mi 
dice che Ciccio non si puo' convertire in string.
Per il file sto usando gli statements
Dim fs As New IO.Filestream(filename, IO.Filemode.Create)
dim bw As New  IO.BinaryWriter(fs)
Qualcuno sa darmi un consiglio di come posso ottenere ciò  che sto 
cercando di fare ?
il metodo funziona bene solo se scrivo le variabili separatamente. ma 
questo non è quello che voglio, voglio 'raggrupparle' in una struttura.
(notare : se uso 'structure' invece di class, non funziona neanche quello)

 (notare : se uso 'structure' invece di class, non funziona neanche quello)
Si, va usato structure. In ogni caso non credo che .NET ti faccia la
conversione implicita da Structure a String.
Nicola


 > Per me non si puň, perň magari mi sbaglio.
Se questo fosse vero sarebbe una grave mancanza in VB .NET.
Ma non voglio crederci che sia cosě.
Si potrebbe aggirare la questione usando un pointer come in altri 
linguaggi ?
Cioč facendo coincidere l'inizio della struttura/classe  con l'inizio di 
una stringa di stessa lunghezza, e poi leggere quest'ultima con un 
memory read ?
Esiste questa possibilitŕ in VB .NET ?
Io non ho trovato nulla sui pointer in VB .NET

 Io non ho trovato nulla sui pointer in VB .NET
La vedo dura, il codice managed gira nel .NET Framework, non c'è un
puntatore a memoria in questo caso.
Credo che solo C# lo consenta.
Nicola

 molto meglio.
e come risolvi il problema di scrivere/leggere un 'buffer' da un file 
binario che raggruppa diverse variabili ?
Esiste una soluzione 'elegante'  (che non sia la ReadAllBytes)  :-)

 Esiste una soluzione 'elegante'  (che non sia la ReadAllBytes)  :-)
....ci sarebbe la serializzazione per "stoccare un oggetto" in un
file.
Ovvio che se vuoi leggere un file binario e ricostruire qualcosa
dovrai costruirti il tuo filtro di importazione.
....però amico mio.....
dotNet ha parecchia roba....e un MSDN abbastanza ampio e sempre fatto
meglio!...bastava chiedere all'help....
http://msdn.microsoft.com/it-it/library/0s9sa1ab.aspx
voilà.......una structure su un file random!
altro esempio un po più complesso di terzi:
http://www.java2s.com/Code/VB/File-Directory/SaveStructuretoaBinaryFile.htm
Ovvio che se mi metti ....2 record di una structure/type....poi
"appiccichi" altri dati al di fuori della structure/type ....dovrai
tornare alla mia ipotesi.... un filtro di importazione....!
non si faceva così anche in vb6???
cmq....NON confondere CLASSE e struttura.....in ultima analisi la
structure è un caso particolare di una classe ....ma la classe avrebbe
la serializzazione come metodo principe di salvataggio su
file...specialmente sul web
http://www.aspitalia.com/script/523/Salvare-Classe-.NET-File-Serializzazione.aspx
http://community.visual-basic.it/lucianob/archive/2007/10/14/20711.aspx
http://totem.altervista.org/guida/versione2/C14.php
Buon lavoro


Infatti inizialmente era un file binary random che volevo costruire. 
Ottimo ! Grazie.
Però a questo punto mi chiedo a  cosa servono i libri se certe cose le 
trovi 'solamente' su msdn.....

 trovi 'solamente' su msdn.....
abbi pazienza amico mio....ti facevo più intelligente...gli autori dei
libri hanno famiglia!
:)
E' ovvio che MSDN è la cosa più aggiornata che puoi trovare in casa
Microsoft....non ha caso puoi sottoscrivere un abbonamento a MSDN che
ti "regala" tutti gli altri programmi!
Non è stupida Microsoft: sanno benissimo che un programma generico, ed
a maggior ragione un ambiente di sviluppo, è NULLA senza la
documentazione che insegna ad usarlo!
Quindi se vuoi ti consulti MSDN on line....altrimenti sottoscrivi
l'abbonamento e ti arrivano a casa dvd su dvd con tutto lo "scibile"
di casa Microsoft!
Cmq per spezzare una lancia a favore dei libri:
Ci sono autori che spiegano benissimo i concetti chiave....Balena è
uno di questi...ovvio che poi la ricerca personale, l'autoformazione,
deve essere COSTANTE....non si scappa!


se è introvabile sia in formato 'I portabili' sia in formato 'hardback' 
(ca. 100 Euro) vuol dire che proprio era ottimo. Chissà perchè non lo 
ristampano.

 ristampano.
C'� da dire che VB6 � una tecnologia vecchia di 12 anni, che per
l'informatica sono eoni.
Sebbene ancora molto utilizzato, la vedo dura distribuire capillarmente
un libro che avrebbe ben pochi acquirenti.
Lo compri online a quattro soldi da Bol.it o da Unilibro:
http://www.unilibro.it/find_buy/Scheda/libreria/autore-balena_francesco/sku-13090714/microsoft_visual_basic_6_0_.htm
Nicola


Indubbiamente. Io da tempo se faccio qualcosa di nuovo sotto .NET la 
faccio in C#. ormai ho 'abbandonato' il VB.
Mi aggiorno solo per progetti cominciati gi� cominciati con VB .NET.

 Veramente io mi riferivo al VB .NET, che presumo non sia VB6...
Si, scusa avevo tergiversato.
In ogni caso il discorso vale lo stesso. Non è conveniente distribuire
capillarmente un libro ormai obsoleto e rivolto ad una nicchia.
Molto più economico venderlo online.
Ciao,
Nicola


Il fatto � che quello non lo trovi manco online. E' proprio finito. Outsold.
  :-(


Qui hai visto?
http://www.amazon.com/s?ie=UTF8&rh=i%3Astripbooks%2Cp_27%3AFrancesco%20Balena&field-author=Francesco%20Balena&page=1
-- 
---------------------------
Mauro Gamberini
Microsoft MVP - Excel
http://www.riolab.org/
http://www.maurogsc.eu/
http://social.answers.microsoft.com/Forums/it-IT/officeexcelit/threads
 
__________ Informazioni da ESET NOD32 Antivirus, versione del database delle firme digitali 5028 (20100414) __________
Il messaggio è stato controllato da ESET NOD32 Antivirus.
www.nod32.it

 ristampano.
I portatili pare ci sia in giro:
http://www.unilibro.it/find_buy/Scheda/libreria/autore-balena_francesco/sku-12841123/programmare_microsoft_visual_basic_il_framework_i_portatili_.htm
http://www.bol.it/libri/persona/autore/Francesco-Balena/0053797/-0/-0/
Ma immagino ti avranno confermato che non è disponibile in realtà.
Io ho quasi terminato i portatili :)