Oppure

Loading
14/09/10 17:14
petercriss
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



program file_utente;uses crt;
type compactdisk=record                                 {dichiarazione record}
                  nome:string[20];
                  cognome:string[20];               {campi del record}
                  consumo:real;
                  codice:string[20];
                end;
 ut=file of utente;                              {inizializzazione struttura dati}
var f:ut;
    rec:utente;                                 {dichiarazione delle variabili utilizzate}
    a:integer;
    x:string;
    sce:integer;
       totalemese:real;

procedure crea(var f1:ut);               {procedura creazione}
begin
 
  rewrite(f1);                         {apertura file}
  reset(f1);
  repeat
  writeln('INSERISCI I DATI DELL'UTENTE);
  writeln('-------------------------------------------------');
  writeln('inserisci il NOME DELL'UTENTE');
  readln(rec.nome);       { inserimento campo }
  writeln('inserisci il cognome dell'utente');
  readln(rec.cognome); 
  writeln('inserisci il consumo giornaliero dell'utente');
  readln(rec.consumo);  { inserimento campo }      { inserimento campo }
  writeln('inserisci codice utente');
  readln(rec.codice);         { inserimento campo }
  writeln('--------------------------------------------------');
  writeln('vuoi inserire un altro utente? s/n');  {richiesta di un nuovo elemento}
  readln(x);                  { lettura scelta}
  writeln('');
  write(f1,rec);
 
  clrscr;
  until x='n';                {scelta}
 close(f1);                  {chiusura file}
end;                                           {fine}








  procedure stampa(var f1:ut);    {procedura stampa}
begin   
  clrscr;                                {inizio}
  reset(f1);                            {apertura file}
  while not eof(f1) do                 {ciclo precondizionato}
    begin                                {inizio}
      read (f1,rec);
      writeln('nome utente:  ',rec.nome);    {stampa nome}
      writeln('cognome utente:  ',rec.cognome);  {stampa cognome}
      writeln('codice utente:  ',rec.codice);                       {stampa codice}
      writeln('consumo giornaliero:  ',rec.consumo:5:5 ,'  euro');                       {stampa consumo}
      consumomensile:(rec.consumo*30);
      writeln(' consumo mensile: ',totalemese:5:5,'euro');
      writeln('');
    end;
    close(f1);                                       {chiusura}
end;


procedure inserimento(var f1:ut);                    {procedura inserimento}
begin   
  clrscr;                                             {inizio}
  reset(f1);
  while not eof(f1) do                                      {apertura file}
        read (f1,rec);
        writeln('inserisci il nomte del nuovo utente');       {lettura campo}
        readln(rec.nome);
        writeln('inserisci ilcognome del nuovo utente');{lettura campo}
        readln(rec.cognome);
        writeln('inserisci il consumo giornaliero');                       {lettura campo}
        readln(rec.consumo);
        writeln('inserisci il codice del nuovo utente');                      {lettura campo}
        readln(rec.codice);
        write(f1,rec);
  Close(f1);
                                                              {chiusura file}
                                                                      {fine}

begin                           {inizio}
  clrscr;
  assign(f,'cd.dat');                  {assegnazione dello spazio nella memoria di massa}
 crea(f);                              {creazione}
  clrscr;
  repeat                                {ripeti}
    clrscr;
    writeln('MENU DI SCELTA utente');          {menu al video}
    writeln('---------------------');
    writeln(' 1)inserisci un nuovo utente');
    writeln(' 2)stampa lista degli utenti');
    
    writeln(' 8)uscire');
    writeln('---------------------');
    writeln('');
    repeat                                                {ripeti}
    writeln('quale paragrafo vuoi consultare?');          {scelta}
   readln(sce);                                          {lettura variabile scelta}
  until (sce>0) and (sce<4) or (sce=8);                   {fine ciclo fino a che}
  case sce of                                             {case}
  1: begin
       clrscr;
      inserimento(f);
    writeln('...premere invio per continuare...');
       readln();
     end;                                                 {procudure scelte}
  2: begin
       clrscr;
       stampa(f);
       readln;
       writeln('...premere invio per continuare...');
       readln();
 
     end;

   
 
     end;
    end;
  until (sce=8);                                       {fine ciclo finoa che sce =8}
end.  {fine}

Ultima modifica effettuata da Phi 26/09/10 13:47
aaa
14/09/10 17:22
Ultimo

Inserisci il codice tra i TagCode ;)
If ok Then GOTO Avanza else GOTO Inizia

14/09/10 17:24
petercriss
scusa come vanno inseriti nei tag code
 e
aaa
14/09/10 17:27
petercriss
program file_utente;uses crt; 
type compactdisk=record                                 {dichiarazione record} 
                  nome:string[20]; 
                  cognome:string[20];               {campi del record} 
                  consumo:real; 
                  codice:string[20]; 
                end; 
ut=file of utente;                              {inizializzazione struttura dati} 
var f:ut; 
    rec:utente;                                 {dichiarazione delle variabili utilizzate} 
    a:integer; 
    x:string; 
    sce:integer; 
       totalemese:real; 

procedure crea(var f1:ut);               {procedura creazione} 
begin 

  rewrite(f1);                         {apertura file} 
  reset(f1); 
  repeat 
  writeln('INSERISCI I DATI DELL'UTENTE); 
  writeln('-------------------------------------------------'); 
  writeln('inserisci il NOME DELL'UTENTE'); 
  readln(rec.nome);       { inserimento campo } 
  writeln('inserisci il cognome dell'utente'); 
  readln(rec.cognome); 
  writeln('inserisci il consumo giornaliero dell'utente'); 
  readln(rec.consumo);  { inserimento campo }      { inserimento campo } 
  writeln('inserisci codice utente'); 
  readln(rec.codice);         { inserimento campo } 
  writeln('--------------------------------------------------'); 
  writeln('vuoi inserire un altro utente? s/n');  {richiesta di un nuovo elemento} 
  readln(x);                  { lettura scelta} 
  writeln(''); 
  write(f1,rec); 

  clrscr; 
  until x='n';                {scelta} 
close(f1);                  {chiusura file} 
end;                                           {fine} 








  procedure stampa(var f1:ut);    {procedura stampa} 
begin   
  clrscr;                                {inizio} 
  reset(f1);                            {apertura file} 
  while not eof(f1) do                 {ciclo precondizionato} 
    begin                                {inizio} 
      read (f1,rec); 
      writeln('nome utente:  ',rec.nome);    {stampa nome} 
      writeln('cognome utente:  ',rec.cognome);  {stampa cognome} 
      writeln('codice utente:  ',rec.codice);                       {stampa codice} 
      writeln('consumo giornaliero:  ',rec.consumo:5:5 ,'  euro');                       {stampa consumo} 
      consumomensilerec.consumo*30); 
      writeln(' consumo mensile: ',totalemese:5:5,'euro'); 
      writeln(''); 
    end; 
    close(f1);                                       {chiusura} 
end; 


procedure inserimento(var f1:ut);                    {procedura inserimento} 
begin   
  clrscr;                                             {inizio} 
  reset(f1); 
  while not eof(f1) do                                      {apertura file} 
        read (f1,rec); 
        writeln('inserisci il nomte del nuovo utente');       {lettura campo} 
        readln(rec.nome); 
        writeln('inserisci ilcognome del nuovo utente');{lettura campo} 
        readln(rec.cognome); 
        writeln('inserisci il consumo giornaliero');                       {lettura campo} 
        readln(rec.consumo); 
        writeln('inserisci il codice del nuovo utente');                      {lettura campo} 
        readln(rec.codice); 
        write(f1,rec); 
  Close(f1); 
                                                              {chiusura file} 
                                                                      {fine} 

begin                           {inizio} 
  clrscr; 
  assign(f,'cd.dat');                  {assegnazione dello spazio nella memoria di massa} 
crea(f);                              {creazione} 
  clrscr; 
  repeat                                {ripeti} 
    clrscr; 
    writeln('MENU DI SCELTA utente');          {menu al video} 
    writeln('---------------------'); 
    writeln(' 1)inserisci un nuovo utente'); 
    writeln(' 2)stampa lista degli utenti'); 
     
    writeln(' 8)uscire'); 
    writeln('---------------------'); 
    writeln(''); 
    repeat                                                {ripeti} 
    writeln('quale paragrafo vuoi consultare?');          {scelta} 
   readln(sce);                                          {lettura variabile scelta} 
  until (sce>0) and (sce<4) or (sce=8);                   {fine ciclo fino a che} 
  case sce of                                             {case} 
  1: begin 
       clrscr; 
      inserimento(f); 
    writeln('...premere invio per continuare...'); 
       readln(); 
     end;                                                 {procudure scelte} 
  2: begin 
       clrscr; 
       stampa(f); 
       readln; 
       writeln('...premere invio per continuare...'); 
       readln(); 

     end; 

   

     end; 
    end; 
  until (sce=8);                                       {fine ciclo finoa che sce =8} 
end.  {fine} 
aaa
14/09/10 17:36
petercriss
nella type va messo utente e non compakdisk scusate
aaa
14/09/10 20:16
Poggi Marco
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
filesize(<NomeLogicoDelFile);


Per spostarsi all' interno del file, si usa il comando seek( file, n ), ad esempio:
  seek(file, 0); // mi sposto al primo record
  seek(file, 9); // posizionamento sul decimo record 


Di conseguenza per raggiungere la fine del file, basta dichiarare
  seek(file, filesize(file));
  
aaa
14/09/10 20:42
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
aaa
14/09/10 20:54
Poggi Marco
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.
aaa