Newsgroup: it.comp.lang.pascal
Titolo: Pascal e Dos

Salve, conosco Pascal poichè utilizzato a scuola per due anni e le mie
conoscenze sono molto limitate poichè non conoscevo le possibilità di
utilizzo di questo programma.
Le cose che mi sono state insegnate sono solo un'infarinatura (le variabili,
if, array...). Ma mi è giunta voce che esistono altri comandi per.....(non
so spiegarlo bene).....utilizzare Dos. Ad esempio sarebbe possibile
cancellare dei file presenti in una cartella, formattare un'unità, far
aprire il cassettino del cd-rom, far spegnere il pc.....
DOVE POSSO TROVARE QUESTE INFORMAZIONI??????????????

 ha scritto nel messaggio
news:4HeZ7.24363$s04.1...@news.infostrada.it...

non mi risulta che esistano particolare comandi.. a parte exec rewrite e
qualcun altro...
se ti serve fai un file bat con i comandi che vuoi e usa il comando exec per
aprirlo.
Ps se il file non si apre molto probabilmente e per mancanza di memoria ems
vai a
http://spazioweb.inwind.it/computersite/download.htm
 a scarica il file pas
apposito.
Ciao

aprire il cassettino del cd-rom, far spegnere il pc.....
Da questa frase invece mi sembra di capire che sei interessato alla gestione
dei file quindi alla loro creazione e cancellazione.
Naturalmente è possibile creare con pascal dei file che conterrano le
informazioniche più ci piacciono altrimenti saremmo costretti ad inserire
ogni volta i dati da capo perchè all'uscita dal programma le variabili
"dimenticano" il loro contenuto. Anche io all'inizio non pensavo ke si
potessero fare queste (ed altre) cose con il Pascal ma poi mi sono dovuto
ricredere, ed è molto più semplice di quanto pensi.
CREAZIONE DI UN FILE
Faccioamo finta che devi contentenere in un file i numeri da 1 a 10 come
fai?
{Dichiari f come file di interi f è detto file logico ed è utilizzato dal
programma per riferirti al file fisico}
Var
    f:File Of Integer;
{Alla procedura viene passato un parametro contenente il nome del file
fisico che può essere
 ad esempio  'c:\numeri.num' o qualunque nome valido in DOS  8+3(8 lettere
per il nome
e 3 per l'estensione)}
Procedure  Crea_File  (Nome_File:String);
    Begin
       {Si deve assegnare il file logico al file fisico (con Assign)}
        Assign  (f,Nome_File);
       {Per creare il file bisogna usare ReWrite(Riscrivi) che crea il file
e porta il cursore del file
        all'inizio, inoltre se si usa ReWrite su un file già esistente il
file verrà cancellato e sovrascritto!}
        Rewrite (f);
       {Il ciclo For esegue 10 volte la stessa cosa cioè  Write (f,i) magari
penserai che scrive qualcosa
        sullo schermo ma in realtà se guardi bene il primo parametro passato
è il file logico;perchè?
        perchè l'output è indirizzato al file e non allo schermo che è il
posto dove viene in genere inviato
        l'output del programma(i rusultati). In realtà quando scrivi Write
('Matrix has you') è come se
        fosse sottinteso che bisogna inviarlo allo schermo. Quindi il
prototipo di Write è
        Write (destinazione,lista_di_dati_che_rappresentano_output)}
         For  i:=1  To  10  Do
            Write  (f,i);
       {Ad ogni ReWrite deve corrispondere un Close è semplice : con ReWrite
apri con Close chiudi ciò
        che  apri deve essere poi chiuso, perche?perche finchè non chiudi il
file esso sarà occupato e
        quindi inaccessibile da altri programmi... se dimentichi di
chiuderlo rimarrà aperto ed occupato
        inutilmente}
         Close  (f);
    End;
Vediamo un pò come funziona passo passo, questa è la situazione all'inizio :
f  :  [  ]
       ^
       p
dove f è il file e p è un cursore che indica la posizione all'interno del
file f come si può vedere all'inizio il file è vuoto ed il cursore è
all'inizio del file. Dopodichè avviene questo : Write (f,i) dove i vale 1
quindi scrive 1 nella posizione corrente del file e sposta avanti il cursore
. . . tutto questo lavoro viene fatto finchè il ciclo for non finisce ed il
file ottenuto sarà così :
f  :  [1][2][3][4][5][6][7][8][9][10]
                                                    ^
                                                    p
Infine si chiude il file.
Forse ti stai chiedendo perchè nel prototipo di Write ho scritto
lista_di_dati il motivo è semplice e di certo
avrai già usato qualcosa del genere, con Write si possono scrivere piu di
una variabile alla volta
(sullo schermo o su un file) se ad esempio scrivi
a:=5;
Write ('a vale ',a) ;
Sullo schermo comparira la scritta 'a vale 5' ciò significa che Write invia
a poco i dati specificati tra i suoi parametri quindi prima scrive 'a vale '
che è il primo parametro e poi scrive il secondo parametro cioè il valore
contenuto in a quindi '5'.Si possono specificare tantissimi parametri (sarei
tentato di dirti infiniti ma penso proprio che ci sia un limite anche se
sinceramente io non saprei proprio) e gli elementi della lista di parametri
passati a Write devono essere separati da un virgola. Ad esempio il file di
poco fà si poteva riempire con i numeri da 1 a 10 anche con una sola
"istruzione" e cioè :
Write (f,1,2,3,4,5,6,7,8,9,10)
Si può indirizzare l'output anche alla stampante sempre con il solito Write
ed è semplicissimo :
Write (Lst,lista_variabili);
Lst indica che bisogna stampare le variabili passate non sullo schermo bensì
sulla stampante, Ah dimenticavo per far funzionare la Write precedente
bisogna usare la libreria Printer(che contiene Lst) quindi
All'inizio del programma scrivere :
Uses
    Crt;
Ah se utilizzi Rewrite ed f già esiste il contenuto del file andrà perso è
sovrascritto dal nuovo contenuto.
Se ad esempio richiami la procedura così :
Crea_File('c:\sono_Neo.abc');
e il file esiste già la procedura cancellerà il contenuto del file
(qualunque esso sia) e andrà a scrivere 1,2,3,4,5,6,7,8,9,10.
Allora . . . forse sono un pò uscito di tema?! Ok ritorno sui binari.
Oltre a creare un file lo si può eliminare :
Var
    f:File Of Integer;
Begin
    Assign  (f,'da_canc.jpg');
    Erase (f);
    Close (f);
End.
Si può anche rinominare un file :
Var
    f:File Of Integer;
Begin
    Assign  (f,'da_canc.jpg');
    Rename (f,'rinomina.jpg');
    Close (f);
End.
Oltre all'aperura dei file con ReWrite si possono aprire con Reset (f)
Dove sta la differenza ?
Rewrite lo si usa per creare un file o per sovrascrivere un file mentre
Reset si utilizza quando il
contenuto del file non deve andare perso.
Puoi vedere il numero di elementi contenuti in un file :
Var
    f:File Of Byte;
    s:String;
Begin
    Write ('Inserisci il nome del file : ');
    ReadLn (s);
    Assign (f,s);
    Reset (f);
    Write ('La dimensione del file <',s,'> è ',FileSize(f)/1024,' KB');
    ReadLn;
End.
Si possono fare tante altre cose simpatiche come ad esempio la grafica o
gestire l'altoparlante del computer :
{Dall'altoparlante si ode un suono la cui frequenza è specificata nella
chiamata alla procedura}
Sound (frequenza_suono);
{Non fa nulla per un tempo pari al parametro specificato alla procedura
(il tempo è in millisecondi 1000ms = 1s )}
Delay (Durata_Suono_in_millisecondi);
{Il contrario di Sound cioè ammutolisce l'altoparlante}
NoSound;
Mi dispiace se ho fatto qualche errore ma spero che non mi aggrediate perchè
non vedo codice Pascal da non so quanti mesi e dovrei ripassare un
pò(veramente in Delphi l'ho visto ma . . .)
Inoltre mi sà che forse dovevo evitare di trattare tutti sti argomenti
insieme ma intendevo essere più esauriente possibile inoltre spero che mi
hai capito e che non ho parlato troppo complicato ma mica faccio il
professore !
Ciao ;-)
Neo

> Ps se il file non si apre molto probabilmente e per mancanza di memoria
ems
??? ems ??? :-)
--
Dreadnaut (dn)
drea...@liberoDALLASPAM.it
(Life would be easier if I had the source code)

 ??? ems ??? :-)
Perň pure tu! EMS č la memoria espansa. Non si usa quasi piů perché windows
usa un'altro tipo di memoria (quella estesa che si chiama XMS).
Se vuoi provare devi inserire questa riga nel file CONFIG.SYS (dipende
comunque da che sistema operativo hai:
DEVICE=C:\DOS\EMM386.EXE (se hai DOS)
DEVICE=C:\WINDOWS\EMM386.EXE (se hai Win9x)


DEVICE=C:\WINDOWS\EMM386.EXE (se hai Win9x)
una volta avevo raggiunto la pace (e 635kb liberi) con il QEMM...
ora dubito di avere un file config.sys :-)
