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
Pascal - Database in Pascal
Forum - Pascal - Database in Pascal

Avatar
Ranger12 (Normal User)
Newbie


Messaggi: 3
Iscritto: 26/06/2010

Segnala al moderatore
Postato alle 14:20
Lunedì, 28/06/2010
Come posso creare dei database in pascal?? Una sorta di Record che però non "dimentichino" ciò che è stato memorizzato... Ho trovato che si possono usare dei File Record ma sinceramente non riesco ad usarli...

Ho fatto il programma-database cosi:

Codice sorgente - presumibilmente Delphi

  1. program data;
  2. type libri=record
  3.           titolo: string;
  4.           numero: integer;
  5.      end;
  6.  
  7. var libro:libri;
  8.  
  9. begin
  10.  
  11. libro.titolo:='Ciao';
  12. libro.numero:=123;
  13.  
  14. end.



E il programma principale cosi:
Codice sorgente - presumibilmente Delphi

  1. program prova;
  2. var libro:libri;
  3.     file_libri: file of libri;
  4.  
  5. begin
  6. assign(file_libri, 'C:\Users\Matteo\Documents\data.pas');
  7. reset(file_libri);
  8.  
  9. while not eof(file_libri) do
  10. begin
  11.  
  12. read(file_libri,libro);
  13.  
  14. writeln('titolo: ',libro.titolo);
  15. writeln('titolo: ',libro.numero);
  16.  
  17. end;
  18.  
  19. close(file_libri);
  20.  
  21. readln
  22. end.



In pratica il programma principale non riesce a leggere il record contenuto nell'altro programma, non lo trova nonostante il percorso indicato nell'assign sia giusto.

Ultima modifica effettuata da Ranger12 il 28/06/2010 alle 14:22
PM Quote
Avatar
Saladino (Member)
Pro


Messaggi: 90
Iscritto: 30/05/2010

Segnala al moderatore
Postato alle 17:15
Lunedì, 28/06/2010
Codice sorgente - presumibilmente Delphi

  1. unit ULibri;
  2. //Metterlo in una unit rafforza il concetto di portabilità
  3. interface
  4.  
  5. type
  6.   Libri = record
  7.            Titolo : String[50];
  8.            Numero : Integer;
  9.          end;
  10.  
  11.   FLibri =  file of Libri;
  12.  
  13. function Crea(NomeFile : String) : boolean;
  14.  
  15. function Aggiungi(var F : FLibri; var Rec : Libri) : boolean;
  16.  
  17. procedure LeggieStampa(var F : FLibri);
  18.  
  19. //Qui puoi mettere altre funzioni e procedure per gestire i tuoi record
  20.  
  21. implementation
  22.  
  23. uses
  24.    SysUtils;
  25.  
  26. function Crea(NomeFile : String) : boolean;
  27. Var
  28.  NewF : FLibri;
  29. begin
  30.  if FileExists(NomeFile) then //Vede se il file esiste
  31.   begin
  32.    Crea := False;
  33.    Exit; //Se togli Exit allora puoi usare un else
  34.   end;
  35.  Assign(NewF ,NomeFile);
  36.  Rewrite(NewF);
  37.  Close(NewF);
  38.  Crea := True;
  39. end;
  40.  
  41. //Quando vieni ad aggiungere sarebbe meglio usare un buon
  42. //algoritmo di ordinamento
  43. function Aggiungi(var F : FLibri; var Rec : Libri) : boolean;
  44. Var
  45.  OldPos : Integer;
  46. begin
  47.  (* {$-I}
  48.  Reset(F);
  49.  {$+I} *)
  50.  
  51.  if IoResult <> 0 then
  52.   begin
  53.    Aggiungi := False;
  54.    Exit;
  55.   end;
  56.  Seek(F ,FileSize(F)); //Seek(F ,P) va alla posizione P del file F
  57.  write(F ,Rec);
  58.  Aggiungi := True;
  59. end;
  60.  
  61. procedure LeggieStampa(var F : FLibri);
  62. Var
  63.  Rec : Libri;
  64. begin
  65.  (* {$-I}
  66.  Reset(F);
  67.  {$+I} *)
  68.  Seek(F ,0);
  69.  while not Eof(F) do
  70.   begin
  71.    read(F ,Rec);
  72.    with Rec do
  73.     begin
  74.      writeln(Titolo);
  75.      writeln(Numero);
  76.     end;
  77.   end;
  78. end;
  79.  
  80. end.



Codice sorgente - presumibilmente Delphi

  1. program prova;
  2. uses
  3.  ULibri ,SysUtils;
  4.  
  5. Var
  6.  Libro    : Libri;
  7.  F        : FLibri;
  8.  Continua : Char;
  9.  Tit      : String[50];
  10.  Num      : Integer;
  11. begin
  12.  if not Crea('Prova.dat') then
  13.   writeln('Errore!')
  14.    else
  15.     writeln('File creato!');
  16.  
  17.  Assign(F ,'Prova.dat');
  18.  {$-I}
  19.  Reset(F);
  20.  {$+I}
  21.  if IoResult <> 0 then
  22.   begin
  23.    writeln('Errore di lettura!');
  24.    readln;
  25.    Halt(0);
  26.   end;
  27.  
  28.  repeat
  29.    //Non faccio il controllo delle variabili
  30.    writeln('Inserire il nome del libro');
  31.    Readln(Tit);
  32.    Libro.Titolo := Tit;
  33.    writeln('Inserire il numero del libro');
  34.    {$-I}
  35.    Readln(Num);
  36.    {$+I}
  37.    //if Ioresult <> 0 then ...
  38.    Libro.Numero := Num;
  39.  
  40.    if not Aggiungi(F ,Libro) then
  41.    begin
  42.     writeln('Errore nella scrittura del file!');
  43.    end
  44.     else
  45.      writeln('Aggiunto il nuovo record!');
  46.  
  47.    writeln('Vuoi ancora continuare?');
  48.    Readln(Continua);
  49.  
  50.  until (Continua = 'N') or ((Continua = 'n'));
  51.  
  52.  writeln('Lettura del file...');
  53.  LeggieStampa(F);
  54.  Close(F);
  55.  readln;
  56. end.




PM Quote
Avatar
Poggi Marco (Member)
Guru


Messaggi: 969
Iscritto: 05/01/2010

Segnala al moderatore
Postato alle 22:33
Lunedì, 28/06/2010
Il pascal, permette la gestione dei file.
Ecco una guida con alcune funzioni: http://www.marinsalta.net/pascal/I_FILES_IN_TURBO_PASCAL.htm

PM Quote