Gli operatori logici in Visual Basic Net? Li trovi su Opentraining.it Visual Basic Italia
Corso di Visual Basic:
Nona lezione - Studiare un'applicazione professionale: il Blocco Note di Windows (a cura di Giorgio Abraini)

Nella precedente lezione abbiamo visto che gli operatori logici, se applicati a variabili numeriche, eseguono un confronto bit a bit dei due operandi (o dell'operando, nel caso si usi l'operatore Not): ora vediamo in quali casi è utile utilizzare questo tipo di confronto.
Supponiamo di avere una serie di attributi relativi a un oggetto: questi attributi possono essere presenti singolarmente, oppure essere presenti contemporaneamente ad altri; ad esempio, gli attributi di un file (archivio, nascosto, sistema, sola lettura) possono essere presenti uno per uno, oppure anche più di uno insieme.
Per sapere quali attributi possiede un determinato file, essi vengono memorizzati come un numero: infatti ad ogni attributo corrisponde un preciso valore; all'attributo archivio corrisponde il valore 32, all'attributo nascosto corrisponde il valore 2, all'attributo sistema corrisponde 4 e all'attributo sola lettura corrisponde 1.
Così, se il valore degli attributi di un file è 2, sapremo che quello è un file nascosto, e viceversa; se invece il file, oltre ad essere nascosto, è anche di sola lettura, allora il valore dei suoi attributi sarà 3, cioè 2+1. Non è un caso, infatti, se i valori dei singoli attributi sono tutti potenze di 2 (anche 1 è potenza di 2: 1 = 2 ^ 0): in questo modo non ci sono possibilità di equivoci nel caso siano presenti più di un attributo, perché la somma di potenze di 2 sarà sempre diversa da una potenza di 2.
Ora, supponiamo che il valore degli attributi del file pippo.txt sia 34: come facciamo a sapere quali attributi corrispondono a 34?
Bisogna considerare il corrispondente valore binario:

00100010 (34)
-------------
00100000 (32)
00000010 (2)

Come si vede, 34 è la somma di 32 e 2 perché sono impostati (cioè valgono 1) il secondo e il sesto bit (a partire da destra, come sempre), che corrispondono appunto alle potenze:

2 ^ 1 = 2

e :

2 ^ 5 = 32

In questo caso è molto semplice capire quali sono i bit impostati, ma ovviamente non è sempre così: per capirlo senza fare troppa fatica è sufficiente usare l'operatore And con i valori giusti. Nel nostro caso sappiamo che i valori possibili sono 1, 2, 4, 32 oppure una loro combinazione; ebbene, eseguendo l'And con ognuno di questi valori sapremo subito quali bit sono impostati:

34 And 1 = 0
34 And 2 = 2
34 And 4 = 0
34 And 32 = 32

I valori diversi da 0 sono proprio 2 e 32, quindi sappiamo che il valore 34 corrisponde agli attributi nascosto e archivio.
Allora, se ad esempio volessimo cercare tutti i file nascosti all'interno di una directory, potremmo eseguire questo controllo (per ogni file):

If intAttr And vbHidden Then

dove intAttr è la variabile che contiene il valore degli attributi del file in esame, e vbHidden è una costante di VB che assume proprio il valore dell'attributo Hidden (nascosto), cioè 2: la condizione

intAttr And vbHidden

sarà diversa da 0 (e quindi True) solo se il file è nascosto; potrebbe anche avere altri attributi, ma a noi interessa solo che sia nascosto.
Altri esempi dell'uso del confronto bit a bit li vedremo man mano che se ne presenterà l'occasione.

Ora ricominciamo coi nostri progetti d'esempio: uno dei modi migliori per imparare un linguaggio di programmazione è provare a replicare un'applicazione "professionale", che conosciamo già e che sappiamo già utilizzare; per cominciare, naturalmente, è bene partire da un'applicazione semplice, ad esempio il Blocco Note di Windows.


Innanzitutto bisogna capire da quali controlli è costituita l'applicazione: nel caso del blocco note è facile vedere che esso comprende un menu e un'area bianca in cui scrivere il testo; quest'area bianca non è altro che un TextBox.
Cominciamo allora con l'aprire un nuovo progetto, inseriamo un TextBox sul form e chiamiamolo txtFile, mentre il form lo chiamiamo frmNotePad e come Caption gli diamo "Blocco Note - VBItalia"; trasciniamo txtFile in modo che l'angolo superiore sinistro coincida con l'angolo superiore sinistro di frmNotePad e poi ridimensioniamolo in modo che occupi tutta l'area disponibile in frmNotePad (vedi figura sottostante):


Lo stesso risultato si può ottenere selezionando txtFile e impostando a 0 le proprietà Top e Left nella finestra delle proprietà; le proprietà Height e Width vanno invece impostate con lo stesso valore delle proprietà ScaleHeight e ScaleWidth di frmNotePad.
Già che ci siamo, impostiamo la proprietà Multiline di txtFile su True, in modo che sia possibile visualizzare il testo su più righe e la proprietà ScrollBars su 2 in modo da visualizzare una barra di scorrimento verticale sulla destra di txtFile.


Ora inseriamo il menù, cominciando dal menù File, il più importante: per farlo dobbiamo visualizzare il nostro form (se non è visibile andate sul menù Finestra o cliccate due volte sulla voce giusta nella finestra di Gestione Progetti) e visualizzare l'Editor di Menù dal menù Strumenti, oppure premere l'apposito pulsante sulla barra degli strumenti (nella configurazione standard è il terzo pulsante da sinistra).


L'Editor di Menù permette di impostare le principali proprietà delle voci del nostro menù: prima di tutto bisogna scegliere la Caption, ossia la stringa che appare sul menù, nel nostro caso "File"; poi bisogna impostare il nome del menù, ad es. "mnuFile": il prefisso "mnu" indica, secondo le convenzioni di sintassi, che si tratta appunto di una voce di menù; le altre opzioni per ora potete lasciarle così come sono.


Ora che abbiamo il nostro menù File, bisogna inserire le apposite voci: per semplificarci il compito inseriremo solo le voci "Apri", "Salva", "Esci"; clicchiamo quindi sul pulsante "Successivo", che crea un'altra voce di menù, scriviamo la caption "Apri…", scriviamo il nome "mnuApri" e infine premiamo il pulsantino con la freccia verso destra: nella lista dei menù che compare in basso vedremo che la voce "Apri…" è preceduta da tre puntini, i quali indicano che Apri è un sottomenù di File;
clicchiamo ancora su "Successivo", scriviamo la caption e il nome per la voce "Salva": VB intuisce che si tratta ancora di un sottomenù di File, per cui non c'è più bisogno di premere il pulsante con la freccia verso destra; ripetiamo il procedimento per la voce Esci.


Ora che abbiamo disegnato il nostro menù File, possiamo premere OK: sul frmNotePad vedremo quindi il nostro menù, e cliccandoci sopra vedremo le sue voci; cliccando infine su una delle voci si aprirà la finestra del codice in corrispondenza della routine click di quella voce di menù.
Ora dobbiamo inserire il codice per l'apertura e il salvataggio dei file e per la chiusura dell'applicazione: occupiamoci prima dei file.
Per sapere quale file aprire o con quale nome salvare il testo che l'utente ha inserito nel textbox txtFile si potrebbe utilizzare la finestra di dialogo standard di Windows, proprio quella che usa lo stesso Blocco Note o qualunque altra applicazione di Windows, ma per ora ci accontentiamo di un semplice inputbox, ovvero una finestrella che chiede l'inserimento di una stringa: nel nostro caso questa stringa sarà il nome del file.
Prima di tutto, però, dobbiamo dichiarare le variabili che ci serviranno: queste saranno il nome del file da aprire o salvare e il contenuto di questo file;
cominciamo dunque a inserire, nella routine mnuApri_Click, le istruzioni:

Dim strNomeFile As String
Dim strTesto As String
StrNomeFile = Inputbox("Inserisci il nome del file:")

La funzione Inputbox è quella che fa comparire l'omonima finestra:


Come parametri richiede obbligatoriamente il prompt, ovvero il messaggio visualizzato nella finestra, e facoltativamente il "titolo" della finestra, cioè la stringa che compare nella barra del titolo; gli altri parametri, tutti facoltativi, per ora non ci interessano: comunque sulla guida trovate tutte le informazioni necessarie.
Il valore restituito dalla funzione è proprio ciò che l'utente inserisce nella casella di testo contenuta nella finestra, e noi assegniamo questo valore a una nostra variabile locale.
Una volta saputo il nome del file, dobbiamo aprirlo e leggerne il contenuto: per fare questo dobbiamo utilizzare l'istruzione open e quelle ad essa collegate.
Open serve ad aprire un file in lettura e/o scrittura: questa istruzione sarà analizzata in dettaglio più avanti, ora è sufficiente sapere che per utilizzarla è necessario indicare il nome del file da aprire, la modalità di apertura (in parole povere se vogliamo aprirlo per leggere e/o per scrivere) e un numero di file che verrà utilizzato per identificare univocamente il file che abbiamo aperto; la sintassi è la seguente:

Open nome del file For modalità di apertura As #numero del file

Noi conosciamo il nome del file, sappiamo che vogliamo aprirlo per leggerlo (quindi la modalità sarà input) e dato che è il primo file che apriamo possiamo usare 1 come numero di file:

Open strNomeFile For Input As #1

dopodiché dobbiamo leggerne il contenuto: esiste una funzione apposita, Input, che vuole sapere quanti byte deve leggere e da quale file; il numero di byte da leggere è esattamente uguale alla lunghezza del file, che possiamo recuperare attraverso la funzione LOF (Length Of File):

strTesto = Input(LOF(1),1)

Il testo letto da Input() viene così memorizzato in strTesto.
Ora che abbiamo letto il contenuto del file, possiamo anche chiuderlo:

Close 1

Ricordate di chiudere sempre i file aperti che non vi servono più, perché finché restano aperti non saranno accessibili da altre applicazioni.
Ora non ci resta che visualizzare ciò che abbiamo letto:

txtFile.Text = strTesto

Se volete, potete già provare ad avviare il progetto e ad aprire qualche file: per chiuderlo non possiamo ancora usare il menù File->Esci perché non abbiamo inserito le istruzioni necessarie, però è sufficiente cliccare sulla "x" nel form.
Il progetto sarà completato con la prossima lezione, perciò ora salvate il progetto (menù File->Salva progetto).

Archivio:ndexed
Lezioni Commenta questa lezione Invia la tua guida Avviso per le nuove lezioni
Proponi un argomento

Visual Basic Italia© copyright 2000 - tutti i diritti riservati
E-mail:
vbitalia@libero.it