vblogo

Programmare con Microsoft Visual Basic 6

Google
nel sito web
Introduzione
Form
Control
Oggetti
Input
Menu
Array
Visualizzazione stampa
Report
File
Errori
Clipboard
DDE
OLE
Database
Sql
Download
Bibliografia

 

 

LAVORARE CON I FILES

Quando il Basic venne inventato la sola maniera per ‘salvare’ i dati per poterli recuperare successivamente, era quella di memorizzarli in file: adesso ci sono i database che permettono una gestione più versatile e organizzata. Vb utilizza 3 tipi di file: sequenziali, random e binari. Un file sequenziale é in file dove la lettura e la scrittura avvengono scorrendo per intero tutti i caratteri presenti, come si trattasse di un nastro magnetico. Per accedere ad una informazione, devo scorrere tutte le precedenti fino a quella desiderata . Random significa che il file é organizzato in righe della stessa lunghezza detti record: ogni record contiene le informazione relative ad un cliente o ad un prodotto per esempio. La lettura può avvenire sia sequenzialmente sia indicando il numero record cui accedere. Un file binario a differenza dei 2 precedenti, può contenere qualsiasi tipo di dato e non necessariamente caratteri alfanumerici. Per usare un file, a prescindere del tipo di elaborazione del tipo file, bisogna usare una sequenza di azioni ben definite:

  • scelta del file
  • assegnazione di un numero file
  • apertura file
  • processare i dati
  • chiudere file

SCELTA DEL FILE

Il modo migliore per farlo é quello di usare il control Common Dialog impostato per l’utilizzo dei file. Altra modo é quello di assegnare direttamente il nome del file nella OPEN per l’apertura. Esempio di apertura con

Common Dialog dialog1.filter = “File dati (*.dat)|*.dat”

finestra di dialog che visualizza solo i file con suffisso .dat

dialog1.showOpen
 
mostra finestra di dialogo

nomeFile = dialog1.Filename

restituisce il nome file scelto

if nomeFile = “” then se nome file vuoto
Exit sub esci
else
Operazioni di apertura
elabora file
end if

ASSEGNAZIONE DI UN NUMERO FILE

Avviene sia usando l’istruzione FreeFile sia assegnando un numero compreso tra 1 e 256; naturalmente il numero non deve essere già in uso per un altro file; FreeFile garantisce l’unicità del numero. Esempio:

nrofile = FreeFile

OPEN, CLOSE

OPEN ‘apre’ un file per la sua elaborazione: il verbo ‘aprire’ sta a significare che il file é disponbile alla lettura o scrittura o entrambe le cose. Quando un file é aperto e la sua elaborazione é terminata, si deve ‘chiuderlo’ con l’istruzione CLOSE. L’istruzione OPEN

Open nomeFile
[For modalita ]
[Access accesso ] [blocca ]
As [# ]numerofile
[len = lunghezza ]

nomeFile = nome del file da elaborare

modalita = tipo di elaborazione: questi sono i valori possibili:

Input

sequenziale in lettura

Ouput

sequenziale in scrittura

Append

come per Output ma la scrittura inizia alla fine del file aperto, senza cancellarlo

Random

random

Binary

binario: in questo caso ha senso la parola Access che indica il tipo di accesso per un file binario.

I valori di access sono:

read

lettura

write

scrittura

readwrite

lettura e scrittura

blocca indica quanti dati devono essere portati nella memoria ad ogni lettura fisica del file

numerofile é un numero intero che deve essere assegnato al file; ogni elaborazione relativa ad un file deve avere il numero file lunghezza

si usa solo nel caso di file random e serve ad indicare la lunghezza d i un record Esempi di Open

Sequenziale
Open nomeFile For Input as 1
Open nomeFile For Output as 1
Open nomeFile For Append as 1
Binario
Open nomeFile For Binary Access Read as nroFile

Esempi di chiusura con CLOSE

Close 1
Close nroFile
 

ELABORAZIONE DEI FILE

Le principali istruzioni che si usano con i file sono quelle di lettura e di scrittura. Le istruzioni di lettura sono

Input #

legge dati da un file sequenziale

Line Input #

legge dati da un file fino a quando incontra un carattere di carriage return, cioé legge un record intero

Input()

legge n byte da un file

Get #

legge da un file binario

Input # nroFile, nome, cognome

legge nome e cognome del file. Nome e cognome sono stringhe

Line Input # nroFile, anagrafica

legge una riga anagrafica dal file. anagrafica é una stringa che a sua volta contiene altri tipi di dati caratteri =

Input(25,nroFile)

legge 25 caratteri dal file. caratteri é una stringa di caratteri lunga 25 byte.

dim x1 as integer
get nrofile, , x1

legge un numero intero da un file binario; lo spazio in bianco tra le due virgole, indica la posizione all’intero del file; se non indicata come in questo caso significa che la lettura avviene nella posizione successiva a quella precedente. Le istruzion i di scrittura sono:

Write #
Print #
Put #

L’unica differenza consiste che Write inserisce virgole tra gli elementi e delimita le stringhe con doppi apici. Put invece scrive in un file binario. Esempi di scrittura:

Write # nrofile, Nome, Cognome

‘scrive tra virgole e doppi apici

Print # nrofile, Nome, Cognome

‘scrive senza virgole e doppi apici

Print # nrofile, Nome; Cognome

‘il simbolo ; indica che Nome verrà scritto attaccato a Cognome ; con la virgola i 2 dati sono separati da Tab o separatore.

dim x1 as integer put nrofile, , x1

scrive un numero intero da un file binario Esempio: lettura di un file sequenziale

dialog1.filter = “File dati (*.dat)|*.dat”
dialog1.showOpen
nomeFile = dialog1.Filename
if nomeFile <> “” then
nrofile = freefile
Open nomeFile for Input as nroFile
do while not EOF(nrofile)
line input # nrofile, valore
combo1.Additem valore
loop
close nroFile
end if

FUNZIONI PER I FILE

Esistono varie funzioni legate ai file: una l’abbiamo già vista ed é FreeFile . Un’altra é nel listato precedente EOF (nroFile) e restituisce True quando s’incontra la fine del file. Ecco le altre:

Lof (nroFile) ritorna la dimensione del file aperto. Esempio:
dim lungFile as Long
lungFile = Lof(nroFile)

Seek nroFile, nroByte

Seek (nrofile) Nel primo caso il puntatore al file si posiziona nel byte nroByte del file senza compiere nessuna elaborazione. Nel secondo caso restituisce la posizione del puntatore. Esempi:

Seek nroFile, 250

posiziona il puntatore al byte 250

dim pointer as long
pointer = Seek(nrofile)

scrive in pointer la posizione attuale del puntatore nel file

FileCopy sorgente, destinazione

Copia il file sorgente in un nuovo file destinazione; il file sorgente non deve essere aperto. Esempio

FileCopy “prodotti.dat”,”nuovi.dat”

Dir [percorso][attributi] Restituisce il nome di un file o di una directory esistente che soddisfa i requisiti, se ci sono, negli attributi. Questa funzione restituisce un valore alla volta. E’ preferibile usare i control DriveBox, DirBox e FileBox. Percorso contiene i caratteri di ricerca tipici del Dos come *.BAS Attributi può contenere i valori degli attributi dei file. Ecco una tabella esplicativa sugli attributi.

costanti

Esempio: ricerca tutti i file con suffisso *.DAT e li carica in una listbox

tipoFile = “*.DAT”
list1.Clear fileName = dir (tipoFile) estrai il primo file con suffisso *.DAT
if len(fileName) > 0 then controlla se esiste almeno un file
do se esiste
list1.Additem fileName aggiunge alla listbox il nome trovato
fileName = dir legge un altro file con dir
loop until len(fileName) = 0 ripete il test di esistenza del file
else
msgbox “File non trovato”
end if

Kill nomeFile Attenzione: cancella nomeFile dalla directory.

Esempio: cancella tutti file con suffisso *.DAT

tipoFile = “*.DAT”
kill tipoFile

 

DataRegion

Copyright @ 2007 Vince