Newsgroup: it.comp.lang.visual-basic
Titolo: GET ed altro ancora

Innanzitutto mi scuso nel caso questo non sia il posto giusto per esporre il
mio problema. Ho cercato un News con ".Net" ma non ne ho trovato alcuno.
VisualBasic.Net
Sto cercando di imparare il .net
sono un modestissimo programmatore in VB6
Stavo cercando di trasformare un sorgente da VB6 a 
vb.net
gli errori che non riesco a correggere sono questi:
1) devo aprire un file che si chiama "archivio.dat"; le seguenti righe sono
giuste?
        sFileName = "archivio.dat"
        srFileReader = System.IO.File.OpenText(sFileName)
2) devo chiuderlo. Come si fa?
3) prima dimensionavo una tabella con la seguente riga:
        Dim est(1 to 5000, 10,1 to 5) As Byte
lo facevo perché mi serviva che il primo dato avesse indice 1 e non indice
0. Adesso VB.Net vuole che scriva così:
        Dim est(5000, 10, 5) As Byte
partirà da 0 o da 1?
4) il file archivio è esattamente come la tabella sopra dimensionata. Prima
usavo il comando...
Get #1, , est   (est è la tabella creata)
adesso GET non esiste più in .net.
Qual è la funzione corrispondente?
Ho acquistato il manuale VisualBasic.NET di MacKensie e Sharkey ma finora
non mi è stato molto di aiuto :((((((((
A fine e-mail ho inserito tutto il codice del bottone che mi interessa.
Grazie a tutti quanti mi aiuteranno!
  Private Sub command1_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles command1.Click
        Dim ter(90, 90, 90) As Integer
        Dim est(5000, 10, 5) As Byte
        Dim sFileName As String
        Dim srFileReader As System.IO.StreamReader
        Dim r As Integer
        Dim a As Integer
        Dim e1 As Integer
        Dim e2 As Integer
        Dim e3 As Integer
        Dim y1 As Integer
        Dim y2 As Integer
        Dim y3 As Integer
        Dim m As Integer
        Dim x As Integer
        sFileName = "archivio.dat"
        srFileReader = System.IO.File.OpenText(sFileName)
Get #1, , est
Close #1
        If Combo1.Text = "BA" Then r = 1
        If Combo1.Text = "CA" Then r = 2
        If Combo1.Text = "FI" Then r = 3
        If Combo1.Text = "GE" Then r = 4
        If Combo1.Text = "MI" Then r = 5
        If Combo1.Text = "NA" Then r = 6
        If Combo1.Text = "PA" Then r = 7
        If Combo1.Text = "RM" Then r = 8
        If Combo1.Text = "TO" Then r = 9
        If Combo1.Text = "VE" Then r = 10
        If Combo2.Text = "Gen" Then m = 1
        If Combo2.Text = "Feb" Then m = 2
        If Combo2.Text = "Mar" Then m = 3
        If Combo2.Text = "Apr" Then m = 4
        If Combo2.Text = "Mag" Then m = 5
        If Combo2.Text = "Giu" Then m = 6
        If Combo2.Text = "Lug" Then m = 7
        If Combo2.Text = "Ago" Then m = 8
        If Combo2.Text = "Set" Then m = 9
        If Combo2.Text = "Ott" Then m = 10
        If Combo2.Text = "Nov" Then m = 11
        If Combo2.Text = "Dic" Then m = 12
        '-------------------------------
        testo.Text = ""
        If Combo1.Text = "TT" Then r = 0
su:
        If Combo1.Text = "TT" Then r = r + 1
        For a = 1 To 3329
            If est(a, 0, 2) = m Then
                For e1 = 1 To 4
                    For e2 = e1 + 1 To 5
                        For e3 = 1 To 90
                            ter(est(a, r, e1), est(a, r, e2), e3) =
ter(est(a, r, e1), est(a, r, e2), e3) + 1
                            ter(est(a, r, e1), e3, est(a, r, e2)) =
ter(est(a, r, e1), e3, est(a, r, e2)) + 1
                            ter(est(a, r, e2), est(a, r, e1), e3) =
ter(est(a, r, e2), est(a, r, e1), e3) + 1
                            ter(est(a, r, e2), e3, est(a, r, e1)) =
ter(est(a, r, e2), e3, est(a, r, e1)) + 1
                            ter(e3, est(a, r, e1), est(a, r, e2)) = ter(e3,
est(a, r, e1), est(a, r, e2)) + 1
                            ter(e3, est(a, r, e2), est(a, r, e1)) = ter(e3,
est(a, r, e2), est(a, r, e1)) + 1
                        Next e3
                    Next e2
                Next e1
            End If
        Next a
        If Combo1.Text = "TT" And r < 10 Then GoTo su
        '----------------------------
        For x = 50 To 0 Step -1
            For Y1 = 1 To 88
                For Y2 = Y1 + 1 To 89
                    For y3 = Y2 + 1 To 90
                        If ter(Y1, Y2, y3) = x Then testo.Text = testo.Text
& Format(Y1, "00") & "." & Format(Y2, "00") & "." & Format(y3, "00") & " - "
& Format(ter(Y1, Y2, y3), "000") & vbNewLine : righe = righe + 1 : If righe
= 20 Then GoTo fine
                    Next y3
                Next Y2
            Next Y1
        Next x
fine:
    End Sub
--
Distinti Saluti,
Salvatore Paci
.......................................................
(escogito ergo sum)
Realizzazione software per il gioco del lotto
http://www.salvatorepaci.it
338 8770324
www.lottoanalisi.it
 (il sito che può essere usato come un vero e proprio
programma per il gioco del lotto)
Potete scaricare la Demo di Esperto presso
http://www.salvatorepaci.it/demo.e.exe

 Grazie a tutti quanti mi aiuteranno!
  Spero di esserti stato di aiuto! Se non è cosi fammelo sapere!
Ciao
 
 
--------------------------------
Inviato via 
http://usenet.libero.it

 Qual è la funzione corrispondente?
Con .net devi cambiare l'approccio ai files.
Dato che devi accedere a file binari anzichè di testo come si diceva, devi
usare uno Stream e non uno StreamReader e i suoi metodi Read e Write per
leggere/scrivere byte o array di byte.
Però non so se riuscirai a leggere un array pluridimensionale, quindi credo
ti restino due soluzioni:
- Ti fai una funzione che a mano ti legga i bytes e li metta nel tuo array
(non ho idea di quale ordine VB6 usa per scrivere le dimensioni di un array
su disco)
- Cambi il sistema di organizzare le tue estrazioni ;)
Ciao
--
Math Parser, VB.Framework : 
http://www.neodatatype.net
Sito Comune               : 
http://www.it-lang-vb.net

 leggere/scrivere byte o array di byte.
quindi cosě??????????'
sFileName = "archivio.dat"
srFile = System.IO.File.Open(sFileName)
mi hai gentilmente consigliato un sito in inglese. Potresti indicarmene uno
in Italiano?
Grazie

   srFileReader.ReadLine()?
la funzione Get leggeva TUTTO in un colpo :((((((
dimenticavo di dirti che il file č binario
ciao

 in Italiano?
Prova questo 
http://www.ugidotnet.org/
 è mantenuto anche da alcuni
frequentatori del NG.
Posso anche consigliarti se stai usando il framework in inglese (aproposito,
con quale versione del framework e con quale strumento di sviluppo lavori?)
di disinstallarlo e reinstallare la versione in italiano dell'SDK: la guida
in linea sarà in italiano e conterrà peracchi esempi e informazioni utili.



  Ah binario...be ma tu hai indicato la OpenText!!!!


 Ciao
 Cmq guarda un pò se ti può servire questo :
 Dim ReadString As String
 Dim iFr As Short
 Dim sTmp As String
      ReadString = "c:\test.bin"
      iFr = FreeFile()
      FileOpen(iFr, ReadString, OpenMode.Binary)
      sTmp = Space(FileLen(ReadString))
      FileGet(iFr, sTmp)
      FileClose(iFr)
Scusa se questa "accozzaglia di codice" è scritta in maniera "vomitevole",
ma l'ho fatto al volo e nemmeno l'ho provata!


 in linea sarà in italiano e conterrà peracchi esempi e informazioni utili.
Ho il 
vb.net
 standard in italiano.
Il fatto che non si possono leggere array plurydimensionali è davvero un
guaio :(((((

   Ah binario...be ma tu hai indicato la OpenText!!!!
Appunto perché non ne capisco niente :))))

 guaio :(((((
Vero.
All'inizio passare a .NET è veramente traumatico.
Ti costringe a cambiare completamente il modo di pensare il codice.
La cosa bella è che se riesci a passare questa fase è davvero gratificante.


 Però, come dicevo non puoi leggere/scrivere array pluridimensionali.
purtroppo devo contraddirti: ho letto e scritto su array pluridimensionali
guarda:
ho dimensionato est che ha tre dimensioni
con la fileget ho importato su un array bidimensionale e poi con una routine
ho riempito est
   Private Sub command1_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles command1.Click
        Dim ter(90, 90, 90) As Integer
        Dim est(4999, 10, 4) As Byte
        Dim est1(4999, 54) As Byte
        Dim r As Integer
        Dim a As Integer
        Dim e1 As Integer
        Dim e2 As Integer
        Dim e3 As Integer
        Dim y1 As Integer
        Dim y2 As Integer
        Dim y3 As Integer
        Dim m As Integer
        Dim x As Integer
        Dim righe As Integer
        Dim a1 As Integer
        Dim a2 As Integer
        Dim a3 As Integer
        Dim pippo As String
        Dim ReadString As String
        Dim iFr As Short
        Dim sTmp As String
        'FileLen(100)
        ReadString = "C:\archivio.dat"
        iFr = FreeFile()
        FileOpen(iFr, ReadString, OpenMode.Binary)
        sTmp = Space(FileLen(ReadString))
        FileGet(iFr, est1)
        FileClose()
        For a1 = 0 To 4999
            For a2 = 0 To 4
                For a3 = 0 To 10
                    est(a1, a3, a2) = est1(a1, x)
                    x = x + 1 : If x > 54 Then x = 0
                Next
            Next
        Next



        For a = 0 To 3329
            If est(a, 0, 2) = m Then
                For e1 = 0 To 3
                    For e2 = e1 + 1 To 4
                        For e3 = 1 To 90
                            ter(est(a, r, e1), est(a, r, e2), e3) =
ter(est(a, r, e1), est(a, r, e2), e3) + 1
                            ter(est(a, r, e1), e3, est(a, r, e2)) =
ter(est(a, r, e1), e3, est(a, r, e2)) + 1
                            ter(est(a, r, e2), est(a, r, e1), e3) =
ter(est(a, r, e2), est(a, r, e1), e3) + 1
                            ter(est(a, r, e2), e3, est(a, r, e1)) =
ter(est(a, r, e2), e3, est(a, r, e1)) + 1
                            ter(e3, est(a, r, e1), est(a, r, e2)) = ter(e3,
est(a, r, e1), est(a, r, e2)) + 1
                            ter(e3, est(a, r, e2), est(a, r, e1)) = ter(e3,
est(a, r, e2), est(a, r, e1)) + 1
                        Next e3
                    Next e2
                Next e1
            End If
        Next a
        If Combo1.Text = "TT" And r < 10 Then GoTo su
        '----------------------------
        For x = 50 To 0 Step -1
            For y1 = 1 To 88
                For y2 = y1 + 1 To 89
                    For y3 = y2 + 1 To 90
                        If ter(y1, y2, y3) = x Then testo.Text = testo.Text
& Format(y1, "00") & "." & Format(y2, "00") & "." & Format(y3, "00") & " - "
& Format(ter(y1, y2, y3), "000") & vbNewLine : righe = righe + 1 : If righe
= 20 Then GoTo fine
                    Next y3
                Next y2
            Next y1


 purtroppo devo contraddirti: ho letto e scritto su array pluridimensionali
Sì, in effetti lo puoi fare usando le funzioni di "compatibilità" con il
vecchio VB6.
Non mi era neppure passato per la testa perchè non mi piace usare sistemi
promiscui (funzioni VB6 in ambiente .net), però se ti risolve il problema :)


 promiscui (funzioni VB6 in ambiente .net), però se ti risolve il problema
:)
 Ma veramente la FileOpen e le altre funzioni appartengono al modulo
Microsoft.VisualBasic.FileSystem.
Quello che dici tu è il Microsoft.VisualBasic.Compatibility.VB6 che non
contiene la FileOpen() e compagnia!!


 contiene la FileOpen() e compagnia!!
I namespaces Microsoft.* (come quelli Borland.* se usi un suo IDE o
SharpDevelop.* ecc) non sono standard .NET.
Che poi .NET sia sinonimo di Microsoft.NET è un'altra cosa.
A dire il vero nemmeno VisualBasic.NET farebbe parte dello standard .NET, ma
anche questo è un altro discorso :)


 anche questo è un altro discorso :)
 Mmmmm...in effetti la suddetta funzione fa parte del runtime .net e non del
.NET Framework...però non è un funzione di compatibilità, perchè con il VB6
non mi risulta ci sia un FileOpen(), o il caldo inizia provocare i primi
danni alle mie celluline grigie?


 danni alle mie celluline grigie?
Il problema è che la open di VB6 non è una funzione, ma un'istruzione con
una sintassi ereditata dal BASIC che già faceva a pugni con la sintassi VB.
Per renderla compatibile con la sintassi 
VB.NET
 (che è rigida) hanno dovuto
per forza convertirla in funzione.
