Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
Pascal - file ad accesso diretto AIUTO!!!!!
Forum - Pascal - file ad accesso diretto AIUTO!!!!!

Avatar
petercriss (Normal User)
Newbie


Messaggi: 12
Iscritto: 20/05/2010

Segnala al moderatore
Postato alle 19:14
Martedì, 14/09/2010
salve ho questo codice k permette di gestire un file con dei dati di un utente  pero è stato compilato in modo da essere ad acceso sequenziale ora devo fare una PROCEDURA ELIMINAZIONE  DI UN UTENTE e devo percio "trasformare il codice o aggiungere qualcosa" perche diventi cosi ad accesso diretto inoltre devo utilizzare i comandi seek e erase k nn so utiliazzare ki puo aiutarmi??? grazie mille  ,......

p.s. ho gia fatto le procedure di creazione inserimento e  stampa



Codice sorgente - presumibilmente Pascal

  1. program file_utente;uses crt;
  2. type compactdisk=record                                 {dichiarazione record}
  3.                   nome:string[20];
  4.                   cognome:string[20];               {campi del record}
  5.                   consumo:real;
  6.                   codice:string[20];
  7.                 end;
  8.  ut=file of utente;                              {inizializzazione struttura dati}
  9. var f:ut;
  10.     rec:utente;                                 {dichiarazione delle variabili utilizzate}
  11.     a:integer;
  12.     x:string;
  13.     sce:integer;
  14.        totalemese:real;
  15.  
  16. procedure crea(var f1:ut);               {procedura creazione}
  17. begin
  18.  
  19.   rewrite(f1);                         {apertura file}
  20.   reset(f1);
  21.   repeat
  22.   writeln('INSERISCI I DATI DELL'UTENTE);
  23.   writeln('-------------------------------------------------');
  24.   writeln('inserisci il NOME DELL'UTENTE');
  25.  readln(rec.nome);       { inserimento campo }
  26.  writeln('inserisci il cognome dell'utente');
  27.   readln(rec.cognome);
  28.   writeln('inserisci il consumo giornaliero dell'utente');
  29.  readln(rec.consumo);  { inserimento campo }      { inserimento campo }
  30.  writeln('inserisci codice utente');
  31.  readln(rec.codice);         { inserimento campo }
  32.  writeln('--------------------------------------------------');
  33.  writeln('vuoi inserire un altro utente? s/n');  {richiesta di un nuovo elemento}
  34.  readln(x);                  { lettura scelta}
  35.  writeln('');
  36.  write(f1,rec);
  37.  
  38.  clrscr;
  39.  until x='n';                {scelta}
  40. close(f1);                  {chiusura file}
  41. end;                                           {fine}
  42.  
  43.  
  44.  
  45.  
  46.  
  47.  
  48.  
  49.  
  50.  procedure stampa(var f1:ut);    {procedura stampa}
  51. begin  
  52.  clrscr;                                {inizio}
  53.  reset(f1);                            {apertura file}
  54.  while not eof(f1) do                 {ciclo precondizionato}
  55.    begin                                {inizio}
  56.      read (f1,rec);
  57.      writeln('nome utente:  ',rec.nome);    {stampa nome}
  58.      writeln('cognome utente:  ',rec.cognome);  {stampa cognome}
  59.      writeln('codice utente:  ',rec.codice);                       {stampa codice}
  60.      writeln('consumo giornaliero:  ',rec.consumo:5:5 ,'  euro');                       {stampa consumo}
  61.      consumomensile:(rec.consumo*30);
  62.      writeln(' consumo mensile: ',totalemese:5:5,'euro');
  63.      writeln('');
  64.    end;
  65.    close(f1);                                       {chiusura}
  66. end;
  67.  
  68.  
  69. procedure inserimento(var f1:ut);                    {procedura inserimento}
  70. begin  
  71.  clrscr;                                             {inizio}
  72.  reset(f1);
  73.  while not eof(f1) do                                      {apertura file}
  74.        read (f1,rec);
  75.        writeln('inserisci il nomte del nuovo utente');       {lettura campo}
  76.        readln(rec.nome);
  77.        writeln('inserisci ilcognome del nuovo utente');{lettura campo}
  78.        readln(rec.cognome);
  79.        writeln('inserisci il consumo giornaliero');                       {lettura campo}
  80.        readln(rec.consumo);
  81.        writeln('inserisci il codice del nuovo utente');                      {lettura campo}
  82.        readln(rec.codice);
  83.        write(f1,rec);
  84.  Close(f1);
  85.                                                              {chiusura file}
  86.                                                                      {fine}
  87.  
  88. begin                           {inizio}
  89.  clrscr;
  90.  assign(f,'cd.dat');                  {assegnazione dello spazio nella memoria di massa}
  91. crea(f);                              {creazione}
  92.  clrscr;
  93.  repeat                                {ripeti}
  94.    clrscr;
  95.    writeln('MENU DI SCELTA utente');          {menu al video}
  96.    writeln('---------------------');
  97.    writeln(' 1)inserisci un nuovo utente');
  98.    writeln(' 2)stampa lista degli utenti');
  99.    
  100.    writeln(' 8)uscire');
  101.    writeln('---------------------');
  102.    writeln('');
  103.    repeat                                                {ripeti}
  104.    writeln('quale paragrafo vuoi consultare?');          {scelta}
  105.   readln(sce);                                          {lettura variabile scelta}
  106.  until (sce>0) and (sce<4) or (sce=8);                   {fine ciclo fino a che}
  107.  case sce of                                             {case}
  108.  1: begin
  109.       clrscr;
  110.      inserimento(f);
  111.    writeln('...premere invio per continuare...');
  112.       readln();
  113.     end;                                                 {procudure scelte}
  114.  2: begin
  115.       clrscr;
  116.       stampa(f);
  117.       readln;
  118.       writeln('...premere invio per continuare...');
  119.       readln();
  120.  
  121.     end;
  122.  
  123.  
  124.  
  125.     end;
  126.    end;
  127.  until (sce=8);                                       {fine ciclo finoa che sce =8}
  128. end.  {fine}


Ultima modifica effettuata da Phi il 26/09/2010 alle 15:47
PM
Avatar
Ultimo (Member)
Guru


Messaggi: 877
Iscritto: 22/05/2010

Up
2
Down
V
Segnala al moderatore
Postato alle 19:22
Martedì, 14/09/2010

Inserisci il codice tra i TagCode ;)


If ok Then GOTO Avanza else GOTO Inizia

PM
Avatar
Poggi Marco (Member)
Guru


Messaggi: 969
Iscritto: 05/01/2010

Up
2
Down
V
Segnala al moderatore
Postato alle 22:16
Martedì, 14/09/2010
Ciao!

Cosa non riesci a fare esattamente?
A mio parere devi rivedere la funzione inserimento:
Dovresti impostare un ciclo di inserimento dati, finchè l' utente ne dichiari la fine.
I nuovi record vanno sempre aggiunti alla fine del file.

Per sapere quanti record ci sono nel file esiste la funzione
Codice sorgente - presumibilmente Plain Text

  1. filesize(<NomeLogicoDelFile);



Per spostarsi all' interno del file, si usa il comando seek( file, n ), ad esempio:
Codice sorgente - presumibilmente Pascal

  1. seek(file, 0); // mi sposto al primo record
  2.   seek(file, 9); // posizionamento sul decimo record



Di conseguenza per raggiungere la fine del file, basta dichiarare
Codice sorgente - presumibilmente Plain Text

  1. seek(file, filesize(file));


PM
Avatar
petercriss (Normal User)
Newbie


Messaggi: 12
Iscritto: 20/05/2010

Up
1
Down
V
Segnala al moderatore
Postato alle 19:27
Martedì, 14/09/2010
Codice sorgente - presumibilmente Pascal

  1. program file_utente;uses crt;
  2. type compactdisk=record                                 {dichiarazione record}
  3.                   nome:string[20];
  4.                   cognome:string[20];               {campi del record}
  5.                   consumo:real;
  6.                   codice:string[20];
  7.                 end;
  8. ut=file of utente;                              {inizializzazione struttura dati}
  9. var f:ut;
  10.     rec:utente;                                 {dichiarazione delle variabili utilizzate}
  11.     a:integer;
  12.     x:string;
  13.     sce:integer;
  14.        totalemese:real;
  15.  
  16. procedure crea(var f1:ut);               {procedura creazione}
  17. begin
  18.  
  19.   rewrite(f1);                         {apertura file}
  20.   reset(f1);
  21.   repeat
  22.   writeln('INSERISCI I DATI DELL'UTENTE);
  23.   writeln('-------------------------------------------------');
  24.   writeln('inserisci il NOME DELL'UTENTE');
  25.  readln(rec.nome);       { inserimento campo }
  26.  writeln('inserisci il cognome dell'utente');
  27.   readln(rec.cognome);
  28.   writeln('inserisci il consumo giornaliero dell'utente');
  29.  readln(rec.consumo);  { inserimento campo }      { inserimento campo }
  30.  writeln('inserisci codice utente');
  31.  readln(rec.codice);         { inserimento campo }
  32.  writeln('--------------------------------------------------');
  33.  writeln('vuoi inserire un altro utente? s/n');  {richiesta di un nuovo elemento}
  34.  readln(x);                  { lettura scelta}
  35.  writeln('');
  36.  write(f1,rec);
  37.  
  38.  clrscr;
  39.  until x='n';                {scelta}
  40. close(f1);                  {chiusura file}
  41. end;                                           {fine}
  42.  
  43.  
  44.  
  45.  
  46.  
  47.  
  48.  
  49.  
  50.  procedure stampa(var f1:ut);    {procedura stampa}
  51. begin  
  52.  clrscr;                                {inizio}
  53.  reset(f1);                            {apertura file}
  54.  while not eof(f1) do                 {ciclo precondizionato}
  55.    begin                                {inizio}
  56.      read (f1,rec);
  57.      writeln('nome utente:  ',rec.nome);    {stampa nome}
  58.      writeln('cognome utente:  ',rec.cognome);  {stampa cognome}
  59.      writeln('codice utente:  ',rec.codice);                       {stampa codice}
  60.      writeln('consumo giornaliero:  ',rec.consumo:5:5 ,'  euro');                       {stampa consumo}
  61.      consumomensilerec.consumo*30);
  62.      writeln(' consumo mensile: ',totalemese:5:5,'euro');
  63.      writeln('');
  64.    end;
  65.    close(f1);                                       {chiusura}
  66. end;
  67.  
  68.  
  69. procedure inserimento(var f1:ut);                    {procedura inserimento}
  70. begin  
  71.  clrscr;                                             {inizio}
  72.  reset(f1);
  73.  while not eof(f1) do                                      {apertura file}
  74.        read (f1,rec);
  75.        writeln('inserisci il nomte del nuovo utente');       {lettura campo}
  76.        readln(rec.nome);
  77.        writeln('inserisci ilcognome del nuovo utente');{lettura campo}
  78.        readln(rec.cognome);
  79.        writeln('inserisci il consumo giornaliero');                       {lettura campo}
  80.        readln(rec.consumo);
  81.        writeln('inserisci il codice del nuovo utente');                      {lettura campo}
  82.        readln(rec.codice);
  83.        write(f1,rec);
  84.  Close(f1);
  85.                                                              {chiusura file}
  86.                                                                      {fine}
  87.  
  88. begin                           {inizio}
  89.  clrscr;
  90.  assign(f,'cd.dat');                  {assegnazione dello spazio nella memoria di massa}
  91. crea(f);                              {creazione}
  92.  clrscr;
  93.  repeat                                {ripeti}
  94.    clrscr;
  95.    writeln('MENU DI SCELTA utente');          {menu al video}
  96.    writeln('---------------------');
  97.    writeln(' 1)inserisci un nuovo utente');
  98.    writeln(' 2)stampa lista degli utenti');
  99.    
  100.    writeln(' 8)uscire');
  101.    writeln('---------------------');
  102.    writeln('');
  103.    repeat                                                {ripeti}
  104.    writeln('quale paragrafo vuoi consultare?');          {scelta}
  105.   readln(sce);                                          {lettura variabile scelta}
  106.  until (sce>0) and (sce<4) or (sce=8);                   {fine ciclo fino a che}
  107.  case sce of                                             {case}
  108.  1: begin
  109.       clrscr;
  110.      inserimento(f);
  111.    writeln('...premere invio per continuare...');
  112.       readln();
  113.     end;                                                 {procudure scelte}
  114.  2: begin
  115.       clrscr;
  116.       stampa(f);
  117.       readln;
  118.       writeln('...premere invio per continuare...');
  119.       readln();
  120.  
  121.     end;
  122.  
  123.  
  124.  
  125.     end;
  126.    end;
  127.  until (sce=8);                                       {fine ciclo finoa che sce =8}
  128. end.  {fine}


PM
Avatar
petercriss (Normal User)
Newbie


Messaggi: 12
Iscritto: 20/05/2010

Up
1
Down
V
Segnala al moderatore
Postato alle 19:36
Martedì, 14/09/2010
nella type va messo utente e non compakdisk scusate

PM
Avatar
petercriss (Normal User)
Newbie


Messaggi: 12
Iscritto: 20/05/2010

Up
1
Down
V
Segnala al moderatore
Postato alle 22:42
Martedì, 14/09/2010
per quanto riguarda la filesize ok ma per eliminare un file cm posso fare??? e poi la filesize dove la devo mettere nella creazione e nell'inserimento scusa ma ho perso un mese di spiegazione a giugno e adesso nn so cm fare

PM
Avatar
Poggi Marco (Member)
Guru


Messaggi: 969
Iscritto: 05/01/2010

Up
1
Down
V
Segnala al moderatore
Postato alle 22:54
Martedì, 14/09/2010
Testo quotato

Postato originariamente da petercriss:

per quanto riguarda la filesize ok ma per eliminare un file cm posso fare??? e poi la filesize dove la devo mettere nella creazione e nell'inserimento scusa ma ho perso un mese di spiegazione a giugno e adesso nn so cm fare



FileSize, è una funzione che restituisce un intero.
Si usa quando si vuole sapere quanti record contiene il file.
Nel tuo caso la puoi utilizzare per oltrepassare l' ultimo record scritto; un po come per l' append nei i file testuali.

Per eliminare un record, il discorso è diverso.
E' necessario salvare l' intero file in memoria, quindi selezionare i recored da cancellare e riscrivere il file.

PM
Avatar
petercriss (Normal User)
Newbie


Messaggi: 12
Iscritto: 20/05/2010

Up
-2
Down
V
Segnala al moderatore
Postato alle 19:24
Martedì, 14/09/2010
scusa come vanno inseriti nei tag code
Codice sorgente - presumibilmente Plain Text

  1. e


PM