Newsgroup: it.comp.lang.pascal
Titolo: Tutorial per tutti...

Io inizio poi se mi seguite bene se no chisene frega ;o)
appena posso (tra 2 secondi) postero il primo tutorial, prego anche
altri autori di farlo (rispondendo a questo messagio) cosi che avremo
un Thread tutto di tuorial....
il primo tutorial lo posso io (è una lezione che devo fare domani in
classe a quei cosi che mi ostino a chiamare compagni) ce ne sono
alcuni che non volgiono proprio capire che il pascal va studiato.... 
Il Razziatore,
The Only Good Windows in an uninstalled Windows
-----------------------------------------------
E-MAILs : IlRazziat...@NOSPAMnetscape.net
WEB     : 
http://www.razziatore.dns2go.com/
ICQ     : 67552596

(********************************************************************)
(* Text Files Tutorial * By Razziatore ******************************)
(********************************************************************)
(*   Questo tutorial si prefige di spiegare i file di testo  il     *)
(* analizando programma che dato, come prima opzione alla riga di   *)
(* comando un file di testo (come un altro programma Pascal), ne    *)
(* calcola il numero di righe.                                      *)
(********************************************************************)
  Function FileExists(FileName: String): Boolean;
  { Boolean function that returns True if the file exists;otherwise,
    it returns False. Closes the file if it exists. }
    Var F : file;
  Begin
   {$I-}
   Assign(F, FileName);
   FileMode := 0;  { Set file access to read only }
   Reset(F);
   Close(F);
   {$I+}
   FileExists := (IOResult = 0) and (FileName <> '');
  End;
(********************************************************************)
(*   Per utilizare qualunge tipo di file bisogna speficare una      *)
(* variabile di questo tipo che verra passata alle varie procedure  *)
(* opereranno sul file stesso.                                      *)
(*                                                                  *)
(*   Per associare un file alla variabile F si utixza la procedura  *)
(* standard Assign (fa parte della unit System percui non va        *)
(* bisnoa dichiarare nessuna unit agiuntiva).                       *)
(*                                                                  *)
(*   L'intestazione della procedura è Assign(var f; String); dove F *)
(* è il file (di qualunque tipo) mentre il secondo parameteo (di    *)
(* tipo String o di tipo PChar ma perchè complicarci la vita?), che *)
(* a diferenza del precedente non è passato per riferimento ma per  *)
(* valore, contiene il nome del file. Questo puo' essere espresso   *)
(* con il path (completo di unita o senza) o senza. Naturalente non *)
(* è lo stesso :o) per ora basti sapere che se uno gli da il path   *)
(* completo (C:\DirName\SubDir\FileName.ext) il file viene sempre   *)
(* riconosciuto invece sensa il path il file viene cercato nella    *)
(* directory di esecuzione del exe.                                 *)
(*                                                                  *)
(*   Dopo aver associato un file alla varibile F si deve aprire il  *)
(* file. Un file puo' essere aperto in scritura, in lettura o in    *)
(* tutte e due.                                                     *)
(* Per aprirlo in lettura e per posizionare il cursore che leggera' *)
(* il file all'inizio si utilizza la procedura standard Reset(File) *)
(* residente sempre dentro System.                                  *)
(*                                                                  *)
(* Per accedere al file di testo si usa normalmente la WriteLn e la *)
(* ReadLn passandogli come primo paramertro la varibile del file.   *)
(*                                                                  *)
(*   ParamStr restituisce uno specifico parametro della riga di     *)
(* comando. Attenzione!!! ParamStr(0) corisonde al nome completo di *)
(* path del eseguibile                                              *)
(*                                                                  *)
(********************************************************************)
  Function CountLine(FileName: String): Word;
    Var
      F : Text;          { dichiarazione di un file text }
      C : Word;          { Contatore per le rige }
  Begin
    C:= 0;               { inizializo il contatore }
    Assign(F, FileName); { Assegno ad F il file contenuto in FileName}
    Reset(F);            { Apro il file e resetto il puntaore }
    While NOT Eof(F)     { Ripeto finche il file non Š finito }
      Do Begin
        Inc(C);          { Incremento il contatore }
        Readln(F);       { Leggo una riga }
        End;
    CountLine:= C;       { Assegno alla funzione il valore di C }
  End;
Begin
  If FileExists(ParamStr(1)) { Vedo se esiste o meno il file}
    Then WriteLn('This File have ',CountLine(ParamStr(1)), ' line(s)')
    Else Writeln('File not found');
End.


     While NOT Eof(F)     { Ripeto finche il file non S finito }
