Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
Guida Pascal - Scrivere una libreria

Guida Pascal

Capitolo 17° - Scrivere una libreria

<< Precedente Prossimo >>
Le librerie sono raccolte di metodi, procedure e funzioni, compilate in estensione *.tpu (turbo pascal unit). La struttura di una libreria è questa:

Unit <nome libreria>;

interface

Uses Crt,<altre unità>;

<dichiarazioni procedure, funzioni, costanti e variabili globali>

implementation

Uses Crt,<altre unità>;
<dichiarazione del corpo delle procedure/funzioni>

end.


Questo argomento è un po più complesso, ma vediamo un esempio:

Unit Esempio;

interface
Uses Crt;

const Nome_corto:byte=1;
      Senza_spazi:byte=2;

function Modifica_stringa(modo:byte;stringa:string):string;

implementation         
Uses Crt;

function Modifica_stringa;
begin
    if modo=Nome_corto Then
      begin
      if Length(stringa)>8 then
        begin
        delete(stringa,7,Length(stringa)-7)
        stringa:=concat(stringa,~1);
        end;
        Modifica_stringa:=stringa;
        end
    else
      begin
      while Pos( ,stringa)>0 do
        delete(stringa,Pos( ,stringa),1);
      Modifica_stringa:=stringa;
      end;
end;

end.


A prima vista potrebbe sembrare complicato, e in effetti lo è. Esaminiamo con calma:

Unit Esempio; : la parola riservata unit indica al compilatore che questo codice sorgente è una libreria (e darà origine ad un file di estensione *.tpu, ossia una Turbo Pascal Unit). Questa volta, però, è importante che il nome che segue unit sia uguale al nome con cui il file contenete il codice è salvato (per esempio, se scrivete Unit Ciao; , il file che contiene il codice sorgente sarà Ciao.pas).

interface : come suggerisce il nome, la parte che segue questa parola riservata e che viene prima di implementation, è linterfaccia. In questo segmento di codice, si possono dichiarare le costanti e le variabili che potranno essere usate al di fuori della libreria. Inoltre, linterfaccia può contenere, opzionalmente, un prospetto di tutte le procedure e le funzioni scritte nella parte di implementazione. Infatti, dopo, per scrivere il corpo della procedura o funzione, useremo solo il suo nome, senza bisogno di specificare ancora i parametri.

Const Nome_corto:byte=1; : la parola chiave const serve per dichiarare costanti, aree di memoria in cui risiede uno e un solo valore, che non può mai essere cambiato. Il tipo di costante va specificato dopo il nome, mentre il valore che rappresenta, dopo un =, successivamente al nome. Quindi, quando vorrete dichiarare una costante, userete la seguente sintassi:

Const <nome>:<tipo>=<valore>

implementation : Da qui inizia la parte di implementazione del codice, dove si scrive il vero e proprio corpo della funzione/procedura.

function Modifica_stringa; : dato che nellinterfaccia esiste già una dichiarazione dei parametri e dei tipi della funzione, questa linea di codice serve solo a dire al compilatore che il segmento di codice che sta per iniziare è il corpo di quella funzione.

<Corpo della funzione> : questa funzione è molto semplice: se il parametro modo è uguale al valore rappresentato dalla costante Nome_corto, allora esegue una serie di trasformazioni sul parametro stringa che daranno come risultato la versione corta del parametro (vedi lezione sulla struttura repeat...until), altrimenti, toglie tutti gli spazi dal parametro stringa.

Delete(stringa,7,Length(stringa)-7); : questa procedura cancella dal parametro stringa, un numero di caratteri pari alla lunghezza di stringa meno 7, a partire dal carattere 7. In pratica, cancella tutti i caratteri dopo il sesto. Quindi, quando vorrete eliminare parti di una stringa userete la procedura delete(s:string;x,y:byte), dove s è la stringa che si vuol modificare, x è il carattere di partenza e y è il numero di caratteri da eliminare. Se y è maggiore alla lunghezza di s, verranno cancella tutti i caratteri da x alla fine.

Modifica_stringa:=concat(stringa,~1); : la funzione concat non fa altro che concatenare due o più stringhe, come dice il nome. Ogni stringa viene aggiunta alla fine della precedente.

Pos( ,stringa)>0 : la funzione Pos(a,b:string) restituisce il valore che indica la posizione della stringa a nella stringa b. In questo caso, la funzione Pos restituisce la posizione del primo spazio nella stringa stringa. Se Pos è uguale a 0, non ci sono istanza della stringa a nella b.

Mi sembra di aver spiegato tutto, fin qui.


Scoprire nuove procedure e funzioni
Con il compilatore è sempre, o quasi sempre, fornita una guida in linea con lelenco e la descrizione (spesso in inglese) delle procedure e delle funzioni standard, in ordine alfabetico. E utilissimo, specialmente quando si è agli inizi.
<< Precedente Prossimo >>
A proposito dell'autore

Programmatore e analista .NET 2005/2008/2010 (in particolare C# e VB.NET), anche nell'implementazione Mono per Linux. Conoscenze approfondite di Pascal, PHP, XML, HTML 4.01/5, CSS 2.1/3, Javascript (e jQuery). Conoscenze buone di C, LUA, GML, Ruby, XNA, AJAX e Assembly 68000. Competenze basilari di C++, SQL, Hlsl, Java.