Quale e' il piu' classico dei classici usi dei file di testo?Semplice:
salvarci i documenti scritti con un editor di testo.
Questo articolo vi spieghera' come ottenere un semplice editor di testi
da VB... ma soprattutto vi insegnera' alcune basi di gestione dei file di
testo in VB.
Il progetto di base, come appena detto, e' un editor di testi assimilabile
al blocco note di zio Bill.... ha principalmente 3 comandi: salva, apri
e elimina file.
Una volta aperto un form di VB e sufficientemente ingrandito si dispongano
in bell'ordine (!) i seguendi oggetti:
Questi sono i componenti essenziali. io ho poi aggiunto un altro pulsante con
una funzione che mi rendeva il numero di caratteri digitati.... piccola comodita'
per quando mando un SMS (prima lo scrivo in un editor di testi e poi lo incollo
nel form sul WEB e mi serviva sapere quanto era lungo....).Ma a voi non frega
nulla :).
Per prima cosa vediamo come il CIF editor gestisce i percorsi e i nomi dei file.
Per aprire un file e' necessario indicarne il percorso completo di nome in un'apposita
textbox.... ho predisposto che all'evento Form1_load nella textbox appaia la
directory in cui e' situato il file CIFeditor.exe. Per fare cio' e' sufficiente
1 riga di codice: text1.text = app.path.
Una volta scritto il percorso con il nome del file, si potra' scegliere in una
combobox l'estensione che si vorra' dare al file.
Alla fine il nome del file sara' composto da:
percorso + nome + "." + estensione
Basta assegnare ad ogni variabile il valore appropriato e il gioco e' fatto.
Il primo pulsante che analizziamo serve per aprire un file di testo (o un qualsiasi
altro file, a patto che l'estensione sia compresa tra quelle inserite nella
combobox; aggiungerne una e' estremamente semplice: basta modificare la proprieta'
"List" nell'apposita finestra.
Visual basic mette a disposizione vari modi di apertura di un file: pensiamo
a Random, Binary, Input, Output. Ognuno di questi ha poi appositi comandi che
permettono di leggere testo dal file o di scriverci dentro dei dati (Input,
Line input, Get, Put, Print, Write).
E' importante non sbagliare corrispondenza tra modi di apertura e comandi di
I/O: cosi' facendo si genererebbero errori di modalita' file non valida.
Per leggere dati formattati in un certo modo e per fare si' che anche altri
programmi possano leggere gli stessi dati senza alcuna differenza, nel CIFeditor
ho utilizzato il comando "Line input" e ho aperto il file in modalita'
"Input".
Il problema che mi ha tenuto per giorni e notti attaccato al monitor e' che
Line input legge solo la prima riga del file che apro. O meglio: se tento di
leggere un file scritto con l'istruzione (ecco, non comandi, istruzioni!) Write
me lo legge e formatta correttamente, ma se tento di aprire un file scritto,
ad esempio, col WordPad....
Queste poche righe di codice sonostate la soluzione al problema:
Open file For Input As #1
Do
Line Input #1, variabile
tutto = tutto & variabile & vbCrLf
Loop Until EOF(1)
Close #1
testo1.Text = tutto
La prima riga serve per aprire di fatto il file (se il file non esiste lo crea,
ma se non esiste che diavolo lo apriamo fare??).
Le righe dalla seconda alla quinta inclusa sono un ciclo di iterazione per falso
(ovvero si ripetono fino a quando la condizione posta dopo l'until rimane falsa)
e servono per leggere i dati (formattati) dal file che vogliamo aprire e per
assegnarli ad una variabile (tutto).
Praticamente il ciclo funziona cosi':
Ho dovuto mettere il carattere di newline perche' altrimenti non avrebbe rispettato
tutti gli "a capi" ma mi avrebbe messo in fila tutte le righe del
file...... e addio formattazione.
L'ultima riga provvede all'assegnazioen della variabile "tutto" alla
proprieta' Text dell'oggetto testo1. OVVERO: visualizza nellateztbox testo1
il contenuto del file :)
Il secondo pulsante che andiamo ad analizzare serve per salvare quello che noi
scriviamo in testo1 in un file.
Il codice
Open file For Output As #1
Print #1, testo1.Text
Close #1
e' semplice applicazione della funzione Print.... si da' l'ID del file, la
variabile et voila'! il file si crea se non esiste o si aggiorna se esiste gia'.
NB: e' importante chiudere sempre il file alla fine dell'utilizzo onde evitare
errori.
Il terzo pulsante serve per cancellare un file salvato che non ci serve piu'.
E' una semplice funzione di VB: Kill(nomefile) e il gioco e' fatto (ovviamente
in nomefile ci va anche il percorso...).
Il pulsante per determinare la lunghezza del testo scritto contiene un'altra
semplice funzione di VB Len(variabile) e fa apparire la lunghezza in una label
grazie al codice 'label1.caption="La lunghezza e' " & len(variabile)
& " caratteri." '. Tutto li'.
Ovviamente il progamma necessita delle migliorie (migliore gestione degli errori e delle
estensioni, features varie.....) ma e' solo una dimostrazione. Lascio a voi l'onore.
Bene... questa volta abbiamo finito..... i sorgenti per fare delle prove li trovate allegati all'articolo..... avete tutto per scrivere l'editor di testi del nuovo millennio :)
mantis_