Connessione al database con Visual Basic NET? Lo trovi su Opentraining.it Visual Basic Italia
PRINCIPALE > ARTICOLO

Eseguire una ricerca veloce nell' archivio delle risorse di Visual Basic Italia®: 

Preso dall'archivio...

Premere il pulsante sotto per accedere direttamente ad un articolo o ad un esempio preso in modo casuale dall'archivio.



Ultimo e-book pubblicato:

"INTRODUZIONE AI CSS"

Lo scopo del CSS language è quello di controllare lo stile dei vari elementi che concorrono a formare un
documento HTML.
Si può operare in tre modi collegamento ad un foglio di stile esterno;definizione degli stili all'inizio
del documento utilizzo della proprietà style all'interno di un Tag HTML (embedded style). Questo e-book introduttivo
servirà per apprendere tali nozioni fondametali dei fogli di stile.

Prezzo: € 0.0.
Presentazione:
REAL SOFTWARE RILASCIA LA VERSIONE 5.0 di REALbasic per Windows






Gorizia, 5 maggio 2003 - Active, distributore in esclusiva di REALSoftware, Austin, Tx, annuncia la disponibilità di REALbasic 5.0 per Windows, uno strumento per lo sviluppo semplice da usare che permette agli utenti Windows di tutti i livelli di creare applicazioni personalizzate e di compilarle sia per la piattaforma Windows che per quella Macintosh.
[>>]

http://www.active-software.com

 

Contatti. Utilizzare l'email generica per domande relative al sito:
Porre domande relative al sito
oppure scrivere ad un responsabile di area.
Responsabile del sito: >Andrea Martelli
Responsabile area "Corso di VB":
> Giorgio Abraini

L'oggetto TextStream

Questa lezione, consultata da 11276 utenti, è stata giudicata di ottimi contenuti , con un'esposizione perfettamente comprensibile e con un livello di approfondimento buono da 76 votanti.


L'oggetto TextStream

L'oggetto TextStream, utilizzabile sia in Visual Basic che in VBScript, serve per facilitare l'accesso ai file di testo in modalità sequenziale ed è saldamente legato a FileSystemObject analizzato in precedenza, in quanto viene inizializzato nel momento in cui se ne richiama il metodo CreateTextFile oppure il metodo OpenTextFile.
In quel momento infatti all'oggetto TextStram, inizialmente vuoto, viene assegnato un file (indicandone il percorso) che potrà poi essere gestito in lettura, nel primo caso e scrittura nel secondo utilizzando i metodi appropriati.
Ad esempio, se si desidera associare il file di percorso "C:\1dat2.txt" all'oggetto TextStream in fase di creazione o di scrittura del file:

Set FSO = CreateObject("Scripting.FileSystemObject")
Set TextStream1 = FSO.CreateTextFile("C:\1dat2.txt", True, False)
TextStream1.Close

E'così stato subito introdotto il metodo Close che chiude il file una volta eseguita l'operazione di lettura e/o scrittura. E' importante ricordare che il primo parametro del metodo CreateTextFile rappresenta il percorso del file compreso di nome ed estensione, il secondo indica se si desidera (True) o meno (False) sovrascrivere un file eventualmente già esistente al percorso indicato. Infine l'ultimo parametro indica il formato del nuovo file: Unicode (True) o ASCII (False).

Se si vuole scrivere una linea di testo sul file in modo sequenziale si dovrà utilizzare il metodo WriteLine, indicando solamente la stringa di testo che rappresenta il testo da inserire nel file.
Ad esempio:

Set FSO = CreateObject("Scripting.FileSystemObject")
Set TextStream1 = FSO.CreateTextFile("C:\1dat2.txt", True, False)
With TextStream1
.WriteLine ("Prima riga")
.WriteLine ("Seconda riga")
.WriteLine
.WriteLine ("Quarta riga")
.Close
End With

Questo blocco darà il seguente risultato:

nel quale è semplice notare che se si indica WriteLine senza la stringa di testo, sul file verrà scritto un carattere di nuova riga corrispondente alla pressione del tasto Invio.
Lo stesso risultato si otterrebbe utilizzando la costante vbCrLf:

.WriteLine ("Seconda riga") & vbCrLf
.WriteLine ("Quarta riga")

Abbastanza simile a WriteLine è il metodo Write che col quale però le stringhe specificate vengono scritte nel file senza spazi o altri caratteri di separazione e senza passare da una riga all'altra.
Ad esempio:

Set FSO = CreateObject("Scripting.FileSystemObject")
Set TextStream1 = FSO.CreateTextFile("C:\1dat2.txt", True, False)
With TextStream1
.Write ("Prima riga")
.Write ("Seconda riga")
.Write ("Quarta riga")
.Close
End With

equivale al seguente risultato:

In questo caso inoltre l'indicazione della stringa di testo è obbligatoria, perciò per ottenere un risultato simile al precedente bisognerà fare uso ancora una volta della costante vbCrLf oppure utilizzare il metodo WriteBlankLines che va a capo (scrive caratteri di nuova riga) tante volte quante indicategli come parametro.
Ad esempio, se si vuole andare a capo tre volte, se si è utilizzato il metodo Write si otterrà un risultato del tipo:

mentre se si utilizza il metodo WriteLine:

E come si può notare c'è una riga di differenza tra i due esempi perché mentre WriteLine include già il ritorno a capo, per il metodo Write non è così.
Se invece si desidera effettuare un accesso in lettura al file si dovrà utilizzare il metodo OpenTextFile dell'oggetto FileSystemObject. Anche in questo modo come per il caso di CreateTextFile, viene assegnato file del percorso indicato all'oggetto TextStream:
Nella sintassi di OpenTextFile si dovranno indicare rispettivamente il percorso del file compreso di estensione (ad esempio "C:\1dat2.txt"), la modalità di lettura (ForReading che apre il file in sola lettura e corrisponde alla costante 1, ForAppending che apre il file e scrive alla fine del suo contenuto a cui corrisponde la costante 8). Inoltre si dovrà indicare se creare il file (True) o meno (False) nel caso in cui questo non esista nel percorso specificato e per finire il formato del file aperto:
TristateUseDefault che corrisponde alla costante -2, apre il file utilizzando l'impostazione predefinita di sistema, TristateTrue che corrisponde alla costante -1, apre il file in formato Unicode, TristateFalse costante 0, apre il file in formato ASCII.
Ad esempio:

Set FSO = CreateObject("Scripting.FileSystemObject")
Set TextStream1 = FSO.OpenTextFile("C:\1dat2.txt", True, False)

Nell'accesso in lettura (ma anche in scrittura) i metodi disponibili sono Read, ReadAll e ReadLine. Read, non fa altro che leggere il numero di caratteri specificato del file assegnato all'oggetto TextStream e restituirne così la stringa risultante.
Si consideri il primo esempio: abbiamo cioè quattro righe: Prima riga, Seconda riga, una riga vuota e Quarta riga:

Const ForReading = 1, ForWriting = 2, ForAppending = 8, _
TristateUseDefault = -2, TristateTrue = -1, TristateFalse = 0
Set FSO = CreateObject("Scripting.FileSystemObject")
Set TextStream1 = FSO.OpenTextFile("C:\1dat2.txt", ForReading, _ TristateUseDefault)
MsgBox TextStream1.Read(15)
TextStream1.Close

Verrà ritornata così una stringa di lunghezza 15 pari ai primi 15 caratteri del contenuto del file, spazi compresi.
Il metodo ReadLine invece legge un'intera riga escluso il carattere di ritorno a capo (la costante vbCrLf equivalente alla pressione del tasto Invio).
Indicare:

Const ForReading = 1, ForWriting = 2, ForAppending = 8, _
TristateUseDefault = -2, TristateTrue = -1, TristateFalse = 0
Set FSO = CreateObject("Scripting.FileSystemObject")
Set TextStream1 = FSO.OpenTextFile("C:\1dat2.txt", ForReading, _ TristateUseDefault)
MsgBox TextStream1.ReadLine
TextStream1.Close

equivale a leggere automaticamente la prima riga. Se ad esempio si vuole leggere la seconda bisogna saltare di riga attraverso i metodi Skip e SkipLine che si analizzeranno tra poco.
Infine il metodo ReadAll permette la lettura dell'intero contenuto del file, spazi naturalmente compresi:

Const ForReading = 1, ForWriting = 2, ForAppending = 8, _
TristateUseDefault = -2, TristateTrue = -1, TristateFalse = 0
Set FSO = CreateObject("Scripting.FileSystemObject")
Set TextStream1 = FSO.OpenTextFile("C:\1dat2.txt", ForReading, _ TristateUseDefault)
MsgBox TextStream1.ReadAll
TextStream1.Close

Il risultato sarà:


Ritornando ai metodi Skip e SkipLine, si può notare che la loro utilità nella lettura in quanto consentono di passare da una riga all'altra (nel caso di SkipLine) e da un carattere all'altro (nel caso di Skip), senza però la possibilità di tornare ad una riga o ad un carattere precedente.
Se si desidera saltare i primi 5 caratteri e leggere quello che rimane della prima riga:


Const ForReading = 1, ForWriting = 2, ForAppending = 8, _
TristateUseDefault = -2, TristateTrue = -1, TristateFalse = 0
Set FSO = CreateObject("Scripting.FileSystemObject")
Set TextStream1 = FSO.OpenTextFile("C:\1dat2.txt", ForReading, _ TristateUseDefault)
TextStream1.Skip 5
MsgBox TextStream1.ReadLine
TextStream1.Close

Il risultato questa volta sarà:


Se invece si desidera saltare alla seconda riga e leggerla:


Const ForReading = 1, ForWriting = 2, ForAppending = 8, _
TristateUseDefault = -2, TristateTrue = -1, TristateFalse = 0
Set FSO = CreateObject("Scripting.FileSystemObject")
Set TextStream1 = FSO.OpenTextFile("C:\1dat2.txt", ForReading, _ TristateUseDefault)
TextStream1.SkipLine
MsgBox TextStream1.ReadLine
TextStream1.Close

E questa volta otterremo la seconda riga per esteso:


Perciò basterà richiamare il metodo SkipLine tante volte quante sono le righe che si vuole saltare, utilizzando a limite un ciclo For…Next.
Le proprietà dell'oggetto TextStream sono molto utili se utilizzate unitamente ai metodi appena visti. Ad esempio la proprietà Line permette di determinare la linea corrente (quella cioè su cui si è posizionato il puntatore di riga). Appena si apre un file di testo il puntatore passa subito alla prima riga perciò:


Const ForReading = 1, ForWriting = 2, ForAppending = 8, _
TristateUseDefault = -2, TristateTrue = -1, TristateFalse = 0
Set FSO = CreateObject("Scripting.FileSystemObject")
Set TextStream1 = FSO.OpenTextFile("C:\1dat2.txt", ForReading, _ TristateUseDefault)
MsgBox TextStream1.Line
TextStream1.Close

darà il risultato:


Per determinare invece la posizione del puntatore in relazione al carattere correntemente considerato si usa la proprietà Column:

Const ForReading = 1, ForWriting = 2, ForAppending = 8, _
TristateUseDefault = -2, TristateTrue = -1, TristateFalse = 0
Set FSO = CreateObject("Scripting.FileSystemObject")
Set TextStream1 = FSO.OpenTextFile("C:\1dat2.txt", ForReading, _ TristateUseDefault)
MsgBox TextStream1.Column

Per sapere poi se il puntatore di riga si trova al termine del file di testo si utilizza il metodo AtEndOfStream. Verrà così restituito il valore True in caso affermativo ed il valore False nell'ipotesi opposta. Infine si determina se il puntatore dei caratteri (che quindi opera su un un'unica riga) è al termine della riga attraverso il metodo AtEndOfLine. Anche in questo caso True indicherà il termine della riga e False il caso opposto.
Ecco di seguito due esempi; quello del metodo AtEndOfStream:


Const ForReading = 1, ForWriting = 2, ForAppending = 8, _
TristateUseDefault = -2, TristateTrue = -1, TristateFalse = 0
Set FSO = CreateObject("Scripting.FileSystemObject")
Set TextStream1 = FSO.OpenTextFile("C:\1dat2.txt", ForReading, _ TristateUseDefault)
For i = 1 To 2
TextStream1.SkipLine
Next i
MsgBox TextStream1.AtEndOfStream & " " & TextStream1.Column
TextStream1.Close

E quello del metodo AtEndOfLine:

Const ForReading = 1, ForWriting = 2, ForAppending = 8, _
TristateUseDefault = -2, TristateTrue = -1, TristateFalse = 0
Set FSO = CreateObject("Scripting.FileSystemObject")
Set TextStream1 = FSO.OpenTextFile("C:\1dat2.txt", ForReading, _ TristateUseDefault)
TextStream1.Skip 10
MsgBox TextStream1.AtEndOfLine & " " & TextStream1.Column
TextStream1.Close

I metodi AtEndOfStream e AtEndOfLine possono risultare utili per eseguire un ciclo rispettivamente per tutte le righe del testo e per tutti i caratteri della riga.
Ad esempio, se si desidera visualizzare una finestra di messaggio che indichi il testo di ogni riga, senza utilizzare il ciclo For…Next perché si suppone che non si conoscano a priori il totale delle righe del file:


Const ForReading = 1, ForWriting = 2, ForAppending = 8, _
TristateUseDefault = -2, TristateTrue = -1, TristateFalse = 0
Set FSO = CreateObject("Scripting.FileSystemObject")
Set TextStream1 = FSO.OpenTextFile("C:\1dat2.txt", ForReading, _ TristateUseDefault)
Do While Not TextStream1.AtEndOfStream
MsgBox TextStream1.ReadLine
Loop

Una cosa simile può essere fatta sostituendo AtEndOfLine a AtEndOfStream e Read a ReadLine. In questo caso si potranno leggere uno per uno i caratteri della linea fino alla fine di questa.