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

    [VbNet] Dividere un file di testo molto grande

    Buongiorno,
    premetto un paio di cose, le dimensioni e le righe sono sempre diverse.

    Io ho un file di testo molto lungo (es.: 10.000 righi) e voglio far in modo da dividerlo ad ogni rigo che inizia con "QuestaParola" per poi lavorare il contenuto tra "QuestaParola" ed il rigo prima di di "QuestaParola"...

    Insomma:
    "QuestaParola bla bla bla bla
    bla bla bla bla bla bla bla bla
    bla bla bla bla bla bla bla bla
    bla bla bla bla bla bla bla bla
    bla bla bla bla bla bla bla bla
    QuestaParola bla bla bla bla
    bla bla bla bla bla bla bla bla"

    Nel esempio di sopra io avrò due ?? (variabili?, array? non mi serve dividere fisicamente il file ma solo programmaticamente per lavorarlo)

    C'è un modo per farlo in maniera veloce e senza sprecare molte risorse?
    Attendo qualche consiglio, grazie


    PS: Credo che per ciclare il file vada già benissimo un ciclo con "EOF", ma appunto la divisione dei (chiamiamo paragrafi) come va fatta ed in cosa va messa (considerando che possono essere anche centinaia o migliaia di righe)
    Ultima modifica di deamon75; 02-12-2014 a 07:50

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Non capisco la reale necessità che hai. Il file lo leggi nella parte che ti interessa e la elabori,poi passi all'altra. Non vedo difficoltá.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Utente di HTML.it L'avatar di gibra
    Registrato dal
    Apr 2008
    residenza
    Italy
    Messaggi
    4,244
    - con ReadAllText leggi tutte le righe del file in una stringa
    - con Split suddividi la stringa in paragrafi

  4. #4
    Io voglio dividerlo in più parti perchè devo eseguire delle istruzioni su ogni riga "QuestaParola"
    e delle altre istruzioni sulle altre righe, non so se mi sono spiegato, non saprei come strutturare ciò

    Cioè io posso ciclare tutto il file e mettere if startwith("questaparola") ed identifico che è la riga sulla quale devo eseguire delle istruzioni, ma poi devo fare un ciclo su tutte la righe finchè non trovo nuovamente "questaparola"... come mi consigliate di procedere, potete farmi anche solo un esempio (non obbligatoriamente col codice, mi basta logico poi provo a buttar giù io il codice)

    Grazie

  5. #5
    UPDATE:
    Con lo split dovrebbe andare però i vari paragrafi potrebbero contenere tantissimi caratteri, che contenitore posso utilizzare per non avere errori se i caratteri sono centinaia di migliaia?

    Perchè a questo punto posso fare uno split ad esempio in un array (se può contenere tanti dati di grandi dimensioni) e poi ciclo l'array in modo da avere la prima funzione sul primo valore della array e l'altra funzione sugli altri valori...

    Potrebbe andare?

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Quote Originariamente inviata da deamon75 Visualizza il messaggio
    UPDATE:


    Potrebbe andare?
    Dato che ci sono molti dati non ti consiglio di leggere tutto il file in memoria e dividerlo con la Split perché potresti impiegare molto tempo e avere anche problemi di disponibilità di risorse.

    La cosa migliore è impostare un ciclo di lettura, riga per riga, controllare l'inizio della riga (con il dato che vuoi) e, se trovi quello che cerchi, leggere il resto delle righe del paragrafo, linea per linea.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  7. #7
    Quote Originariamente inviata da oregon Visualizza il messaggio
    La cosa migliore è impostare un ciclo di lettura, riga per riga, controllare l'inizio della riga (con il dato che vuoi) e, se trovi quello che cerchi, leggere il resto delle righe del paragrafo, linea per linea.
    Quindi mi consigli di fare un qualcosa di simile:
    ciclo il file concondizione EOF (quindi fino alla fine)
    se la riga inizia con la parola X faccio
    funzione1(riga)
    altrimenti
    funzione2(riga)
    fine if

    praticamente questo convertito in codice dovrebbe andare?

  8. #8
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Più o meno ...

    Scrivi il codice e ne riparliamo ... il diavolo sta nei dettagli ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  9. #9
    Quote Originariamente inviata da oregon Visualizza il messaggio
    Più o meno ...
    Scrivi il codice e ne riparliamo ... il diavolo sta nei dettagli ...
    codice:
    Private Function FunzioneX()
            Dim TxtLine As String
            FileOpen(1, "C:\Users\Utente\Desktop\file.dat", OpenMode.Input)
            Do While Not EOF(1)
                If LineInput(1).StartsWith("Questa parola") Then
                    FunzionePrima(lineinput(1)) '<-- Più o meno
                Else
                    FunzioneSeconda(lineinput(1)) '<-- Più o meno
                End If
            Loop
            FileClose(1)
            Return True
        End Function
    Grossomodo è cosi giusto? oppure la struttura è errata?
    Ovviamente metterò un parametro alla funzione principale il quale passa il file selezionato tramite openfiledialog

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.