Leggere o scrivere dati
su file
COSA VI
SERVIRA': Microsoft
Visual Basic 6 (la versione Learning dovrebbe
bastare) - Possibilmente MSDN (Microsoft
Devoloper Network) - Notepad (Blocco Note)
- Progetti originali (non strettamente necessari)
- Conoscenze estremamente basiche di VB
Bene, in questa lezione impareremo a leggere (step 1-3) e
scrivere dati su un file in due modi: come testo (step 1-2) o
come dati binari (step 3-4).
Step 3
Nel terzo step, come abbiamo già fatto nello Step1,
leggeremo dei dati da un file ma, al contrario del primo step, in
modalità binaria. Le differenze sono poche e perciò non mi
dilungherò molto. Il codice è pressochè identico allo
Step1 perciò andate a rivederlo e
modificatelo opportunamente.
Per prima cosa rimuovete i controlli Tutto, Linea,
NumRighe e TotInput che tanto
non ci servono più. Aggingiamo due TextBox:
Fatto questo non ci resta che modificare due routine: Form_Load
e Inpt_Click.
Per Form_load dobbiamo solo sostituire la riga...
Open "C:\Prova.txt" For Input As #1
con...
Open "C:\Prova.txt" For Binary As #1
Abbiamo semplicemente cambiato la modalità di accesso al file
da Input a Binary. Il codice di
Form_Load risulterà quindi:
Private Sub Form_Load()
Posizione.LoadFile "C:\Prova.txt"
Open "C:\Prova.txt" For Binary As #1
End Sub
Invece Inpt_Click deve essere completamente
sostituito con:
Private Sub Inpt_Click()
Dim Buffer As String
Buffer = String(CLng(NumChar.Text), Chr(1))
Get #1, Start.Text, Buffer
Risultato.Text = Left(Buffer, IIf(InStr(1, Buffer, Chr(1)) > 0,
InStr(1, Buffer, Chr(1)), Len(Buffer)))
End Sub
-
Private Sub Inpt_Click(): dichiara
l'inizio della routine Inpt_Click.
-
Dim Buffer As String: dichiara la
varibile Buffer come stringa (di
testo), in questa varibile verrà scritto il testo
preso dal file #1 con l'istruzione Get.
-
Buffer = String(NumChar.Text, Chr(1)):
imposta la varibile Buffer su una
stringa composta dalla ripetizione di Chr(1)
(carattere qualunque) per la cifra specificata
in NumChar; questi caratteri verrano
sostituiti dal testo preso dal file #1
con l'istruzione Get.
-
Get #1, Start.Text, Buffer: ricava dal
file #1 una stringa che inizia dal byte
specificato in Start per la lunghezza
della variabile Buffer, e la mette in Buffer.
-
Risultato.Text = Risultato.Text & Left(Buffer,
IIf(InStr(1, Buffer, Chr(1)) > 0, InStr(1, Buffer, Chr(1)),
Len(Buffer))): cambia il testo di Risultato
nel suo testo corrente più la parte a sinistra della
stringa Buffer per tutta la sua
lunghezza (quindi l'intera stringa) se in Buffer
non ci sono Chr(1) (e quindi non si
è andati oltre la fine del file nella lettura)
altrimenti fino al primo Chr(1) presente
in Buffer.
-
End Sub: chiude la sub.
Eccovi il codice per intero del terzo step:
Option Explicit
Private Sub Form_Load()
Posizione.LoadFile "C:\Prova.txt"
Open "C:\Prova.txt" For Binary As #1
End Sub
Private Sub Inpt_Click()
Dim Buffer As String
Buffer = String(NumChar.Text, Chr(1))
Get #1, Start.Text, Buffer
Risultato.Text = Risultato.Text & Left(Buffer, IIf(InStr(1,
Buffer, Chr(1)) > 0, InStr(1, Buffer, Chr(1)), Len(Buffer)))
End Sub
Private Sub OpenClose_Click()
If OpenClose.Caption = "Chiudi" Then
Close #1
Inpt.Enabled = False
Posizione.Text = ""
OpenClose.Caption = "Apri"
TotInp = 0
TotInput.Caption = ""
Risultato.Text = ""
Else
Posizione.LoadFile OpenFile.Text
Open OpenFile.Text For Input As #1
Inpt.Enabled = True
OpenClose.Caption = "Chiudi"
End If
End Sub
_ <___> _
/|\_/WhO\_/|\
||||VeNoM00||||
|/\/ |iS?| \/\|
|/ \|
TORNA INDIETRO
|