Ricavare e
impostare le proprietà di altri programmi
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 1
In questo step vi spiegherò come attingere del testo da un
file. Per prima cosa abbiamo bisogno di un file su cui provare;
creiamolo aprendo notepad (blocco note),
scrivete una decina di righe diverse e salvatelo come "C:\Prova.txt".Ora
creiamo un nuovo progetto di Visual Basic EXE Standard.
Chiamiamo il progetto "Dati_da_file" e il form che si
è creato automaticamente "Step1" (proprietà Name). Nel form Step1
inseriamo una RichTextBox (se non lo trovate, dal menu progetto
selezionate la voce componenti,
cercate nella lista "Microsoft Rich Text
Box Control 6.0" o qualcosa di simile e
selezionatelo. Premendo OK dovrebbe apparire una nuova icona
nella barra degli strumenti, quello è il controllo RichTextBox
che simile a una normale casella di testo ma ha delle funzioni in
più) e chiamiamola Posizione (Text:
(nulla); ScrollBars: 2 (verticali)).
Facendo doppio click sullo sfondo del form Step1
si aprirà la routine Form_Load (che viene
generato quando viene caricata la finestra cioè all'avvio). In
questa sub scrivete quanto segue:
Posizione.LoadFile
"C:\Prova.txt"
La funzione LoadFile della RichTextBox
Posizione apre il file specificato (C:\Prova.txt) e lo visualizza.
Già fatto?!? No cari miei, questa funzione ci permette solo di
visualizzare il testo ma non di prenderne una sola riga e così
via, quindi la casella di testo Posizione ci
servirà solo per vedere a che punto siamo nel file
nell'operazione di lettura riga per riga, ma questo lo vedremo più
avanti.
Ora aggiungiamo qualche altro controllo:
- TextBox:
- Name: Risultato
- Text: (nulla)
- ScrollBars: 2 (verticali)
- Multiline: True
- Utilità: in essa scriveremo ogni riga presa dal
file.
- Button
- Name: OpenClose
- Caption: Chiudi
- Utilità: prima di poter accedere a
un file è necessario aprirlo e chiuderlo quando
si ha concluso il suo utilizzo.
- Button
- Name: Inpt (non
Input)
- Caption: Input
- Utilità: premendo questo pulsante si
leggeranno il numero di righe specificato in NumRighe
o tutte se Tutto è selezionato.
- TextBox
- Name: NumRighe
- Caption: 1
- Utilità: qui viene specificato il numero di
righe che verrano lette premendo Inpt
(questa casella non avrà effetto se Tutto
è selezionato)
- CheckBox
- Name: Tutto
- Caption: Tutto
- Value: 0 (unchecked)
- Utilità: se selezionato, al premere
di Inpt verrà letto l'intero
file e riportato in Risultato
- CheckBox
- Name: Linea
- Caption: Line Input
- Value: 1 (checked)
- Utilità: normalmente se leggendo un
file il programma incontra una virgola la
funzione Input legge solo fino
ad essa e solo con un altra istruzione Input
si leggerà il resto della riga a meno che non vi
siano altre virgole, invece selezionado questa
casella si acquisirà l'intera riga senza
esclusioni.
- Label
- Name: TotInput
- Caption: Input
eseguiti: 0
- Utilità: aggiungeremo uno a
questo testo ogni volta che si premerà Inpt
per vedere il numero di righe totale acquisite.
- TextBox
- Name: OpenFile
- Text: C:\Prova.txt
- Utilità: qui potremo specificare un
file alternativo al quale accedere.
Perfetto ora dobbiamo fare sì che all'avvio del programma
venga aperto per default il file C:\Prova.txt, a aiggiungiamo
quindi in Form_Load:
Open "C:\Prova.txt" For Input
As #1
L'istruzione Open ci permette di utilizzare
la funzione Input sul file specificato che verrà
aperto per Input (quindi per leggerlo) e
identificato come #1. Ora dichiariamo nella
sezione (dichiarazioni) la variabile TotInp
che ci servirà per tenere il conto degli Input
eseguiti.
Ora dobbiamo fare in modo che premendo sul bottone Inpt si
leggano dal file il numero di righe specificato in NumRighe
o tutte se Tutto è selezionato, e poi metterle
in Risultato:
Private Sub
Inpt_Click() Dim Prendi As String Dim C1 As Integer If Not Tutto.Value
Then For C1 = 1 To NumRighe If Linea.Value Then Line Input #1, Prendi Else
Input #1, Prendi Risultato.Text = Risultato.Text & Prendi &
vbCrLf TotInp = TotInp + 1 Next C1 Else Do Until EOF(1) If
Linea.Value Then Line Input #1, Prendi Else Input #1, Prendi Risultato.Text
= Risultato.Text & Prendi & vbCrLf TotInp = TotInp + 1 Loop End
If TotInput.Caption = "Input eseguiti: " & TotInp If EOF(1)
Then TotInput.Caption = "Input eseguiti: " & TotInp & " [Il file è
finito]" Inpt.Enabled = False End If End Sub
Analizziamo ogni istruzione:
-
Private Sub Inpt_Click(): indica la sub
routine Inpt_Click che viene generata
quando si clicca sul bottone Inpt.
-
Dim Prendi As String: dichiara come
stringa la variabile Prendi nella quale
metteremo il testo letto ogni volta dal file.
-
Dim C1 As Integer: dichiara come numero
Integer (da -32.768 a 32.767) che servirà da contatore
per il ciclo più avanti.
-
If Not Tutto.Value Then: apre unn blocco
If la cui condizione è se Tutto
non è selezionato (Tutto.Value=False).
-
For C1 = 1 To NumRighe: inizia un ciclo
che si ripete per un numero numero di volte pari a quello
specificato in NumRighe. In questo ciclo
leggeremo dal file una riga alla volta e la accoderemo (aggiungeremo
a quello che c'è già), il tutto ripetuto per il
numero in NumRighe.Text.
-
If Linea.Value Then Line Input #1, Prendi Else
Input #1, Prendi: se Linea è
selezionato esegue Line Input #1, Prendi,
cioè legge dal file un intera riga senza eccezzioni,
mentre se Linea non è selezionato
esegue un semplice Input #1, Prendi che
ha le differenze di cui abbiamo parlato prima creando Linea.
-
Risultato.Text = Risultato.Text & Prendi
& vbCrLf: modifica il testo di Risultato in
quello che già c'era scritto (Risultato.Text)
più e il testo appena letto dal file (&
Prendi) infine i due caratteri di
ritorno a capo (& vbCrLf).
-
TotInp = TotInp + 1: aggiunge uno alla
variabile TotInp che tiene il conto
degli Input eseguiti.
-
Next C1: indica la fine del blocco-ciclo
C1 e se il ciclo non è finito fa
continuare l'esecuzione da For C1 = 1 To NumRighe.
-
Else: se il la condizione Tutto.Value=False
non è vera (quindi Tutto non è
selezionato) al posto che eseguire le istruzioni qui
sopra il blocco If esegue quelle tra Else
e End If.
-
Do Until EOF(1): inzia un ciclo che si
ripete fino a che EOF(1) (cioè fino a
che non si è arrivati in fondo al file #1
a leggere) non è vera, il ciclo si ripete o finisce con Loop.
-
If Linea.Value Then Line Input #1, Prendi Else
Input #1, Prendi: se Linea è
selezionato esegue Line Input #1, Prendi,
cioè legge dal file un intera riga senza eccezzioni,
mentre se Linea non è selezionato
esegue un semplice Input #1, Prendi che
ha le differenze di cui abbiamo parlato prima creando Linea.
-
Risultato.Text = Risultato.Text & Prendi
& vbCrLf: modifica il testo di Risultato in
quello che già c'era scritto (Risultato.Text)
più e il testo appena letto dal file (&
Prendi) infine i due caratteri di
ritorno a capo (& vbCrLf).
-
TotInp = TotInp + 1: aggiunge uno alla
variabile TotInp che tiene il conto
degli Input eseguiti.
-
Loop: come spiegato in Do Until
EOF(1).
-
End If: segna la fine del blocco If
con condizione Tutto.Value=False.
-
TotInput.Caption: "Input eseguiti: "
& TotInp = cambia il testo di TotInput
nel numero di Input eseguiti che è
scritto in TotInp.
-
If EOF(1) Then: inizia un blocco If
la cui condizione è se si è giunti alla fine del file o
meno.
-
TotInput.Caption: "Input eseguiti: "
& TotInp & " [Il file è finito]"
= se è vera la condizione sopracitata aggiunge in fondo
a TotInput "[Il file è finito]
"...
-
Inpt.Enabled: False =
...e disabilità il pulsante Inpt.
-
End If: chiude il blocco If.
-
End Sub: segna la fine della routine Inpt_Click.
Ora occupiamoci del bottone OpenClose, una
volta arrivati in fondo al file (EOF(1)=True)
è necessario chiudere il file per poi aprirne un altro o sempre
lo stesso; come? Premendo su OpenClose (se
ha come testo "Chiudi"),
esso con l'istruzione Close chiuderà il file
permettendoci di aprirne un altro. Una volta chiuso il file
cambieremo il testo del pulsante in "Apri"
e cliccandoci si aprirà il file specificato in OpenFile:
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
-
Private Sub OpenClose_Click(): indica la
routine OpenClose_Click che si genera
quando si preme su OpenClose.
-
If OpenClose.Caption = "Chiudi" Then:
apre un blocco If la cui condizione è
se il testo del pulsante OpenClose è "Chiudi"
o no.
-
Close #1: chiude il file #1
precedentemente aperto con l'istruzione Open.
-
Inpt.Enabled = False: disabilità il
pulsante Inpt perchè se non ci sono
file aperti non si può leggere nulla.
-
Posizione.Text = "": svuota il
testo di Posizione
-
OpenClose.Caption = "Apri":
cambia il testo del bottone OpenClose in
"Apri".
-
TotInp = 0: azzera la variabile che
tiene il conto degli Input eseguiti.
-
TotInput.Caption = "":
cancella il testo di TotInput.
-
Risultato.Text = "": cancella
il testo di Risultato.
-
Else: se il la condizione OpenClose.Caption
= "Chiudi" non
è vera (quindi il testo del bottone è "Apri")
al posto che eseguire le istruzioni qui sopra il blocco If
esegue quelle tra Else e End If.
-
Posizione.LoadFile OpenFile.Text: apre
il file specificato OpenFile nella
RichTextBox Posizione.
-
Open OpenFile.Text For Input As #1: apre
il file specificato in OpenFile per
essere letto e lo identifica come file #1.
-
Inpt.Enabled = True: riabilita il
pulsante Inpt, precedentemente
disattavato premendo su OpenClose quando
il suo testo era "Chiudi".
-
OpenClose.Caption = "Chiudi":
cambia il testo del pulsante OpenClose
in "Chiudi".
-
End If: chiude il blocco If.
-
End Sub: chiude la sub OpenClose_Click.
Per aprire un file diverso da C:\Prova.txt basta scriverlo in OpenFile.
Ecco il codice dello Step1:
Option Explicit Dim TotInp
As Long
Private Sub Form_Load() Posizione.LoadFile
"C:\Prova.txt" Open "C:\Prova.txt" For Input As #1 End Sub
Private
Sub Inpt_Click() Dim Prendi As String Dim C1 As Integer If Not
Tutto.Value = 1 Then For C1 = 1 To NumRighe If Linea.Value Then Line Input
#1, Prendi Else Input #1, Prendi Risultato.Text = Risultato.Text & Prendi
& vbCrLf TotInp = TotInp + 1 Next C1 Else Do Until EOF(1) If
Linea.Value Then Line Input #1, Prendi Else Input #1, Prendi Risultato.Text =
Risultato.Text & Prendi & vbCrLf TotInp = TotInp + 1 Loop End
If TotInput.Caption = "Input eseguiti: " & TotInp If EOF(1)
Then TotInput.Caption = "Input eseguiti: " & TotInp & " [Il file è
finito]" Inpt.Enabled = False End If 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
|