Visualizzazione dei risultati da 1 a 8 su 8
  1. #1

    Lettura di una stringa all'interno di un file

    Buongiorno a tutti. Sono un principiante che ha iniziato a studiare e ha installato Visual Basic 2010 express.

    Il mio primo obiettivo è un'applicazione dove apro un file di testo che contiene N righe ciascuna delle quali ha questo formato:

    gg/mm/aaaa n1 n2 n3 n4 n5 n6 n7

    ossia 10 caratteri iniziali per la data e poi 7 numeri interi separati da uno spazio.

    Per fare questo ho scritto questo codice:

    =========================================
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click



    Dim FILE_NAME As String = "C:\Users\Home\Desktop\DELTA\Elenco.txt"

    Dim TextLine As String
    Dim Dataestra(10000) As String
    Dim Contalinee As Integer

    Contalinee = 0
    TextLine = ""


    If System.IO.File.Exists(FILE_NAME) = True Then ' se il file con quel nome esiste allora ...

    Dim objReader As New System.IO.StreamReader(FILE_NAME)

    Do While objReader.Peek() <> -1 ' legge sino alla fine del file
    Contalinee = Contalinee + 1 ' conta le righe del file
    TextLine = TextLine & objReader.ReadLine() & vbNewLine

    ' estraggo dalla stringa TextLine la sotto-stringa di 10 caratteri della data
    Dataestra(Contalinee) = TextLine.Substring(0, 10)

    Loop
    Beep()
    TextBox1.Text = "L'archivio contiene " & Contalinee & " estrazioni"

    MsgBox(Dataestra(Contalinee))

    Else ' altrimenti se non esiste il file con quel nome

    Beep()
    TextBox1.Text = "File di archivio non trovato"

    End If
    Button1.Visible = False 'rende invisibile il bottone "Apri l'archivio"


    End Sub
    =========================================

    ... ma mi sono arenato già alla data , nel senso che il tutto funziona nel senso che mi conta correttamente il numero di linee presente nel file e me lo scrive nel TextBox, ma nel MsgBox(Dataestra(Contalinee)) mi fa vedere sempre e solo la data della prima linea.
    Dove sbaglio?
    Come faccio poi a convertire le sottostrinche in interi per avere i miei 7 numeri dopo la data?

    Grazie per l'attenzione,
    Exagonal

  2. #2

    Re: Lettura di una stringa all'interno di un file

    Originariamente inviato da exagonal ... il tutto funziona nel senso che mi conta correttamente il numero di linee presente nel file e me lo scrive nel TextBox, ma nel MsgBox(Dataestra(Contalinee)) mi fa vedere sempre e solo la data della prima linea.
    Dove sbaglio?
    Non è chiarissimo cosa te ne fai della variabile TextLine, tuttavia se scrivi:

    TextLine = TextLine & objReader.ReadLine() & vbNewLine

    ad ogni nuova lettura "attacchi" al testo precedente l' ultima lettura. La "testa" della stringa è quindi sempre quella, cambia la "coda". Pertanto se fai:

    Dataestra(Contalinee) = TextLine.Substring(0, 10)

    cioè se leggi i primi 10 caratteri della stringa, che sono sempre gli stessi, ottieni sempre lo stesso risultato.

    cambia in:

    Dataestra(Contalinee) = objReader.ReadLine() .Substring(0, 10)

    Come faccio poi a convertire le sottostringhe in interi per avere i miei 7 numeri dopo la data?
    Perché ti servono numeri e non stringhe?

    Io metterei in una seconda matrice (estrazioni(10000)) la sottostringa dei numeri estratti

    Dataestra(Contalinee) = objReader.ReadLine().Substring(0, 10)
    estrazioni(Contalinee) = objReader.ReadLine().Replace(Dataestra(Contalinee) ,"")

    e per eventuale ricerca (esempio essenziale da elaborare):

    For x=0 To estrazioni.Lenght - 1

    if estrazioni(x).Contains("57") then............

    End If

  3. #3
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,472

    Moderazione

    Originariamente inviato da exagonal
    Buongiorno a tutti. Sono un principiante che ha iniziato a studiare e ha installato Visual Basic 2010 express.
    Il linguaggio va indicato anche nel titolo, come da Regolamento.

    Qui l'ho aggiunto io, tienilo a mente per il futuro.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  4. #4

    Re: Re: Lettura di una stringa all'interno di un file

    Originariamente inviato da eziogsv

    Io metterei in una seconda matrice (estrazioni(10000)) la sottostringa dei numeri estratti

    Dataestra(Contalinee) = objReader.ReadLine().Substring(0, 10)
    estrazioni(Contalinee) = objReader.ReadLine().Replace(Dataestra(Contalinee) ,"")

    e per eventuale ricerca (esempio essenziale da elaborare):

    For x=0 To estrazioni.Lenght - 1

    if estrazioni(x).Contains("57") then............

    End If
    Eziogsv, grazie 1000 per la cortese e completa risposta!!!
    ... ora proseguo nel passo successivo, che è proprio la ricerca che mi hai anticipato.
    Ancora grazie

  5. #5

    Re: Moderazione

    Originariamente inviato da alka
    Il linguaggio va indicato anche nel titolo, come da Regolamento.

    Qui l'ho aggiunto io, tienilo a mente per il futuro.
    OK, sicuramente la prossima volta me lo ricorderò
    Cordiali saluti

  6. #6

    Re: Re: Moderazione

    Grazie all'aiuto di eziogsv sono oltre a metà dell'opera

    Nel tentativo di "abbellire" la mia applicazione mi sono arenato nel tentativo di usare il OpenFileDialog.

    Mi spiego meglio: mentre nel listato che ho postato prima pre-definivo il path ed il nome del file di testo da aprire, ora mi piacerebbe poter "navigare" per trovare in una cartella il file da aprire (per intenderci come quando fai "Apri file" da Word).

    Seguendo le guide, ho aggiunto dal menù della casella degli strumenti il OpenFileDialog1
    Poi devo scrivere un paio di righe di codice qui:
    ' ------------------
    Private Sub OpenFileDialog1_FileOk(ByVal sender As System.Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles OpenFileDialog1.FileOk
    .......
    .......
    End Sub
    ' ---------------

    ed infine associare al bottone "Apri l'archivio" un'istruzione relativa al OpenFileDialog.

    Ho cercato e provato con impegno ma non sono riuscito a fare il browsing desiderato.
    Qualche dritta?
    Grazie.

  7. #7
    Utente di HTML.it L'avatar di Vinsent
    Registrato dal
    May 2011
    Messaggi
    314
    Da principiante a principiante , ti posso consigliare di guardare per primo sempre l' msdn della microsoft.
    Se hai ben compreso il significato di classe, costruttori, proprietà, metodi ed eventi, leggendo qui:
    http://msdn.microsoft.com/it-it/libr...iledialog.aspx
    riuscivi sicuramente nel tuo intento (se ci sono riuscito io... )

    codice:
    Private Sub sfoglia() Handles Button1.Click
            'imposta il nome visualizzato
            OpenFileDialog1.FileName = ""
            'imposta il filtro 
            OpenFileDialog1.Filter = "file txt|*.txt|pdf|*.pdf|immagini|*.jpg;*.png|office|*.doc;*.xls;*.mdb|tutti i file|*.*"
            'imposta la directory iniziale
            OpenFileDialog1.InitialDirectory = My.Computer.FileSystem.SpecialDirectories.Desktop
            'apre l' OpenFileDialog1
            OpenFileDialog1.ShowDialog()
        End Sub
    
        Private Sub OpenFileDialog1_FileOk() Handles OpenFileDialog1.FileOk
            'ottieni il percorso del file e poi vedi tu
            Dim file_selez As String = OpenFileDialog1.FileName
            MsgBox(file_selez)
        End Sub

  8. #8
    Originariamente inviato da Vinsent
    Da principiante a principiante , ti posso consigliare di guardare per primo sempre l' msdn della microsoft.
    Se hai ben compreso il significato di classe, costruttori, proprietà, metodi ed eventi, leggendo qui:
    http://msdn.microsoft.com/it-it/libr...iledialog.aspx
    riuscivi sicuramente nel tuo intento (se ci sono riuscito io... )
    Grazie Vinsent!

    Vedi, ci ero andato molto vicino ma, grazie al tuo suggerimento, non solo ho risolto il problema, ma mi sono accorto che l'errore che facevo non era "tecnico" ma "concettuale", motivo per cui andrò a rileggermi meglio le proprietà di metodi ed eventi

    Un caro saluto

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.