Home

A scuola di Delphi

www.gpeano.org 

Introduzione · Capitolo 1 · Capitolo 2 · Capitolo 3 · Capitolo 4 · Capitolo 5 · Download 

Sommario
Euroconvertitore
Area rettangolo
Propagaz. errori
Cubo binomio
Equazione lineare
Calcolatrice
Numeri dispari
Esadecimale
Sommat. Produtt.
Divisori
Somma divisori
Fattori
 

Capitolo 1

Euroconvertitore

Vogliamo realizzare un'applicazione che funzioni da euroconvertitore, cioè serva a trasformare un importo da Euro a Lire e viceversa. Supponiamo che vogliamo realizzarla con un'interfaccia utente come quella rappresentata in figura.

Lanciamo Delphi come visto nel capitolo Introduzione - L'ambiente di sviluppo di Delphi 2.0 (se per caso non vi foste letti il suddetto capitolo, leggetelo prima di continuare). Salviamo subito tutto il project e la unit associata alla form tramite il tasto veloce o dal menu File - Save all. Nella finestra di dialogo Save Unit1 as che compare, vediamo che ci viene proposto come nome Unit1.pas. Per prima cosa preoccupiamoci di sapere in quale cartella ci troviamo, in maniera tale da saper recuperare il file in un secondo momento. Sarebbe utile che tutti i nostri programmi Delphi fossero salvati in una sotto-cartella particolare all'interno di Documenti. Per fare ciò, risaliamo l'albero delle cartelle con il tasto fino ad arrivare alla cartella Documenti; apriamola e all'interno di questa creiamo una nuova cartella con il tasto e assegniamole il nome Delphi. Questa sarà la cartella in cui salveremo tutte le nostre applicazioni. Entriamo nella cartella Delphi e creiamone una nuova, che chiameremo Euroconvertitore. È buona norma creare una nuova cartella per ogni programma che svilupperemo, in modo da separare tutti i file di un progetto da quelli di un altro. Entriamo finalmente nella nostra cartella Euroconvertitore, per salvare la unit. Poiché il nome proposto Unit1.pas non è molto significativo, conviene assegnare un nome adatto, come ad esempio: UnitEuroconvertitore (l'estensione pas può essere omessa, perché viene assegnata automaticamente). Clicchiamo su Salva.
Una volta salvata la unit, ci viene richiesto in una nuova finestra di dialogo Save Project1 as di salvare il progetto con il nome project1.dpr. A differenza del Turbo Pascal, in cui vi era un unico file *.pas, un applicazione Delphi può contenere molte form differenti, che svolgono compiti diversi (si pensi ad un programma come Microsoft Word, che contiene moltissime finestre o form: per es. quella di Apri, Salva con nome, Carattere, Paragrafo, etc.), raggruppate tutte in un unico file, detto appunto progetto. Nel nostro caso il progetto contiene una sola form, che abbiamo già salvato (in modo trasparente per noi) un attimo fa insieme alla sua unit UnitEuroconvertitore. Torniamo al salvataggio del project: il nome che assegniamo diventerà il nome del file eseguibile, una volta compilato, quindi è bene dare un nome significativo come Euroconvertitore (l'estensione dpr può essere omessa, perché viene assegnata automaticamente).

Se vi siete persi qualcosa, o qualcosa è andato storto, potete salvare la unit tramite il menu File - Save As... e il project tramite il menu File - Save Project As.... Per essere sicuri che tutto sia al posto giusto apriamo un attimo (senza chiudere Delphi) Risorse del computer o Esplora risorse/Gestione risorse e controlliamo che interno della cartella Documenti/Delphi/Euroconvertitore. Dovrebbero esserci i seguenti file:

Euroconvertitore.dpr
Euroconvertitore.res
UnitEuroconvertitore.dfm
UnitEuroconvertitore.pas

Se è così, tutto è a posto! Possiamo continuare...

Osserviamo l'aspetto finale che deve avere il nostro progetto, facendo riferimento alla figura che c'è all'inizio di questa pagina: sono presenti 6 oggetti:

la scritta Euro, una casella di testo vuota, il bottone Converti in Lire
la scritta Lire, una casella di testo vuota, il bottone Converti in Euro

inoltre sulla barra dell'applicazione c'è scritto Euroconvertitore.

Guardiamo invece la nostra form: è completamente grigia con molti puntini, vuota, e sulla barra dell'applicazione c'è scritto Form1.

Cominciamo con l'assegnare un nome alla nostra form selezionando la proprietà Name nell'object inspector e modificando il nome preesistente Form1 in FormEuroconvertitore. In questa maniera all'interno della nostra unit la form sarà individuata da questo nome.
Quindi selezioniamo la proprietà Caption nell'object inspector e modificando il nome preesistente FormEuroconvertitore in Euroconvertitore: sulla barra dell'applicazione comparirà ora il titolo che vogliamo sia visualizzato, cioè proprio Euroconvertitore.

Vogliamo ora inserire la scritta Euro. Guardiamo la barra degli strumenti sotto il menu di Delphi e cerchiamo il componente Label rappresentato dal tasto ; clicchiamo una volta su di essa: il tasto rimane premuto. Ora spostiamoci con il mouse sulla form e clicchiamo una volta nel punto un cui vogliamo inserirla: vediamo comparire la scritta Label1. Assegniamole il Name (come già visto per la form) LabelEuro al posto di Label1, e modifichiamole la proprietà Caption: LabelEuro in Euro. Ora sulla form compare la scritta che volevamo.

Vogliamo ora inserire la casella di testo a fianco della scritta Euro. Guardiamo la barra degli strumenti sotto il menu di Delphi e cerchiamo il componente Edit rappresentato dal tasto ; clicchiamo una volta su di essa: il tasto rimane premuto. Ora spostiamoci con il mouse sulla form e clicchiamo una volta nel punto un cui vogliamo inserirla: vediamo comparire la casella con dentro la scritta Edit1. Assegniamole il Name: EditEuro al posto di Edit1, e svuotiamo la stringa EditEuro contenuta nella proprietà Text, in modo che la casella appaia vuota.

Vogliamo ora inserire il bottone ConvertiInLire a fianco della casella di testo. Guardiamo la barra degli strumenti sotto il menu di Delphi e cerchiamo il componente Button rappresentato dal tasto ; clicchiamo una volta su di essa: il tasto rimane premuto. Ora spostiamoci con il mouse sulla form e clicchiamo una volta nel punto un cui vogliamo inserirla: vediamo comparire il bottone con dentro la scritta Button1. Assegniamole il Name: ButtonConvertiInEuro al posto di Button1, e modifichiamole la proprietà Caption: ButtonConvertiInEuro in Converti in Euro. Ora nel bottone compare la scritta che volevamo.

Ripetiamo le 3 operazioni precedenti, con le opportune variazioni, per gli altri 3 componenti che vogliamo inserire. Ora la nostra form dovrebbe apparire come volevamo.

A questo punto dobbiamo scrivere le 2 procedure Pascal che eseguano materialmente le 2 conversioni. Prima di proseguire premiamo ancora una volta il tasto veloce Save All per salvare tutto il nostro lavoro e proviamo, per esercizio, ad uscire completamente dall'ambiente di sviluppo di Delphi, chiudendolo completamente.


Ora proviamo a riaprire l'ambiente di sviluppo di Delphi e a recuperare il lavoro svolto. Possiamo fare in vari modi. Gli ultimi progetti vengono elencati all'interno del menu File - Reopen. Clicchiamo su Documenti-Delphi-Euroconvertitore-Euroconvertitore.dpr e vedremo ricomparire la nostra form con tutti gli oggetti cha abbiamo inserito. Oppure clicchiamo sul tasto veloce Open project e recuperiamo il nostro progetto Euroconvertitore.dpr dalla cartella in cui l'abbiamo salvato.

Dobbiamo ora far sì che alla pressione del tasto Converti in Lire la cifra inserita nella casella EditEuro sia letta, convertita in Lire e visualizzata nella casella EditLire. Per fare ciò clicchiamo due volte con il mouse sul bottone ButtonConvertiInLire. Vedremo comparire la unit sottostante con il listato del programma, contenente la dichiarazione di tutti i componenti inseriti nella form e la procedura vuota attivata alla pressione del tasto ButtonConvertiInLire, in cui dovremo inserire il nostro codice.

procedure TFormEuroconvertitore.ButtonConvertiInLireClick(Sender:
  TObject);
begin

end;

Digitiamo con la tastiera il codice Pascal, che esegue la conversione. Ci servono due variabili numeriche che dovranno contenere la cifra in Euro e in Lire; quindi dichiariamo prima del begin della procedura ButtonConvertiInLireClick le due variabili:

var
  Euro, Lire: Currency;

Il tipo Currency è nuovo per chi usa il Turbo Pascal: si tratta di un tipo reale come real che serve appositamente per gestire numeri che rappresentano valuta. Rispetto al tipo real possiede una maggiore precisione nei numeri con molte cifre. Se proprio non vi piace, potete scegliere liberamente all'interno della tabella seguente tratta dall'help di Delphi 2.0, che elenca tutti i tipi real supportati da Delphi.

Tipo Intervallo Cifre
significative
Dimensione
in byte
Real 2.9 * 10e-39
1.7 * 10e+38
11-12 6
Single 1.5 * 10e-45
3.4 * 10e+38
7-8 4
Double 5.0 * 10e-324
1.7 * 10e+308
15-16 8
Extended 3.4 * 10e-4932
1.1 * 10e+4932
19-20 10
Comp -2e63+1
+2e63-1
19-20 8
Currency -922337203685477.5808
+922337203685477.5807
19-20 8

NB Il tipo Real è fornito per compatibilità con le precedenti versioni di Delphi e Borland Pascal. Poiché il formato di memorizzazione del tipo Real non è nativo della famiglia di CPU Intel, le operazioni sui valori di tipo Real sono più lente di quelle sugli altri tipi a virgola mobile.

Scriviamo le 3 righe necessarie per la nostra conversione: la prima converte in valuta la stringa contenuta nella proprietà Text dell'oggetto EditEuro e assegna il valore alla variabile Euro.

  Euro:=StrToCurr(EditEuro.Text);

La seconda esegue la conversione in Lire, e assegna il valore calcolato alla variabile Lire.

  Lire:=Euro*1936.27;

La terza converte in stringa il valore contenuto nella variabile Lire e la assegna alla proprietà Text dell'oggetto EditLire.

  EditLire.Text:=CurrToStr(Lire);

I nomi delle due funzioni: StrToCurr() e CurrToStr(), dovrebbero essere autoesplicativi. Alla fine il nostro listato dovrebbe apparire così:

procedure TFormEuroconvertitore.ButtonConvertiInLireClick(Sender:
  TObject);
var
  Euro, Lire: Currency;
begin
  Euro:=StrToCurr(EditEuro.Text);
  Lire:=Euro*1936.27;
  EditLire.Text:=CurrToStr(Lire);
end;

Ora, dobbiamo far sì che alla pressione del tasto Converti in Euro, invece, la cifra inserita nella casella EditLire sia letta, convertita in Euro e visualizzata nella casella EditEuro. Per fare ciò torniamo a visualizzare la form, con il tasto Toggle Form/Unit, clicchiamo due volte con il mouse sul bottone ButtonConvertiInEuro. Vedremo comparire la unit sottostante con il listato del programma e la procedura vuota attivata alla pressione del tasto ButtonConvertiInEuro. Inseriamo il seguente codice:

procedure TFormEuroconvertitore.ButtonConvertiInEuroClick(Sender:
  TObject);
var
  Euro, Lire: Currency;
begin
  Lire:=StrToCurr(EditLire.Text);
  Euro:=Lire/1936.27;
  EditEuro.Text:=CurrToStr(Euro);
end;

La nostra applicazione e finita! Salviamo tutto, prima di compilare e di dare il Run (non si sa mai) e clicchiamo sul tasto Run o scegliamo nel menu Run - Run. Se non ci sono errori di sintassi, dovremmo vedere la nostra finestra in funzione. Collaudiamola inserendo una cifra (es. 1) nella casella Euro e clicchiamo sul bottone Converti in Lire: nella casella Lire compare 1936.27 (o 1936,27 se, come è probabile, abbiamo l'impostazione separatore decimale Italiano). Questo è importante perché nel listato Pascal deve sempre essere usato come separatore decimale il punto, ma quando si inseriscono cifre nell'applicazione funzionante bisogna utilizzare il separatore decimale impostato in Windows, cioè la virgola se si hanno le impostazioni per l'Italiano.

Ora il nostro euroconvertitore è finito. Premiamo ancora una volta il tasto veloce Save All per salvare tutto il nostro lavoro e chiudiamo Delphi. D'ora in poi l'eseguibile del programma Euroconvertitore può essere lanciato direttamente da esplora risorse o da un link nel menu di avvio o sul Desktop, chiaramente senza più utilizzare Delphi: ora è una normale applicazione di Windows.

N.B. Questo programma, così come tutti quelli che svilupperemo nel corso, può essere scaricato come file zip cliccando sul link qui sotto:

 1.01 - Euroconvertitore