Lag en database ved hjelp av Delphis fil med typede filer

click fraud protection

Bare å sette en fil er en binær sekvens av en eller annen type. I Delphi, det er tre klasser av fil: skrevet, tekst og ikke skrevet inn. Typede filer er filer som inneholder data av en bestemt type, for eksempel dobbelt, heltall eller tidligere definert tilpasset posttype. Tekstfiler inneholder lesbare ASCII-tegn. Ikke-skrevne filer brukes når vi ønsker å pålegge en minst mulig struktur på en fil.

Typede filer

Mens tekstfiler består av linjer avsluttet med en CR / LF (#13#10) kombinasjon, typede filer består av data hentet fra en bestemt type datastruktur.

For eksempel oppretter følgende erklæring en posttype kalt TMember og en rekke TMember-postvariabler.

type

 TMember = ta opp

 Navn: string[50];

E-post:
string[30];

Innlegg: LongInt;
slutt;

Var medlemmer: matrise[1..50] av TMember; 

Før vi kan skrive informasjonen til disken, må vi erklære en variabel av en filtype. Følgende kodelinje erklærer en F-filvariabel.

Var F: fil av TMember; 

Merk: For å lage en maskinskrevet fil i Delphi, bruker vi følgende syntaks:

instagram viewer

Var SomeTypedFile: fil av sometype

Basetypen (SomeType) for en fil kan være en skalartype (som dobbel), en array-type eller posttype. Det skal ikke være en lang streng, dynamisk matrise, klasse, objekt eller en peker.

For å begynne å jobbe med filer fra Delphi, må vi koble en fil på en disk til en filvariabel i programmet vårt. For å opprette denne lenken, må vi bruke AssignFile prosedyre for å knytte en fil på en disk til en filvariabel.

 AssignFile (F, 'Members.dat') 

Når tilknytningen til en ekstern fil er opprettet, må filvariabelen F 'åpnes' for å forberede den til lesing og skriving. Vi kaller Tilbakestill prosedyre for å åpne en eksisterende fil eller Omskriv for å opprette en ny fil. Når et program er ferdig med å behandle en fil, må filen lukkes ved hjelp av CloseFile-prosedyren. Etter at en fil er lukket, oppdateres den tilknyttede eksterne filen. Filvariabelen kan deretter knyttes til en annen ekstern fil.

Generelt sett bør vi alltid bruke avvikshåndtering; mange feil kan oppstå når du arbeider med filer. For eksempel: hvis vi kaller CloseFile for en fil som allerede er lukket, rapporterer Delphi en I / O-feil. På den annen side, hvis vi prøver å lukke en fil, men ennå ikke har kalt AssignFile, er resultatene uforutsigbare.

Skriv til en fil

Anta at vi har fylt en rekke Delphi-medlemmer med navn, e-post og antall innlegg, og vi vil lagre denne informasjonen i en fil på disken. Følgende kodeverk vil gjøre arbeidet:

Var

 F: fil av TMember;

i: heltall;
begynne

 AssignFile (F, 'members.dat');

 Omskriv (F);

prøve

til j: = 1 til 50 gjøre

 Skriv (F, Medlemmer [j]);

endelig

 CloseFile (F);

slutt;slutt; 

Les fra en fil

For å hente all informasjonen fra filen 'members.dat' bruker vi følgende kode:

Var

 Medlem: TMember

 F: fil av TMember;begynne

 AssignFile (F, 'members.dat');

 Tilbakestill (F);

prøve

mens ikke Eof (F) begynner

 Les (F, Medlem);

{DoSomethingWithMember;}

slutt;

endelig

 CloseFile (F);

slutt;slutt; 

Merk: Eof er EndOfFile-sjekkingsfunksjonen. Vi bruker denne funksjonen for å sikre at vi ikke prøver å lese utover slutten av filen (utover den sist lagrede posten).

Søker og posisjonerer

Normalt vises filene sekvensielt. Når en fil leses ved bruk av standardprosedyren Les eller skrevet ved hjelp av standardprosedyren Skriv, flyttes den gjeldende filposisjonen til neste numerisk ordnede filkomponent (neste post). Typede filer kan også nås tilfeldig gjennom standard prosedyresøk, som flytter gjeldende filposisjon til en spesifisert komponent. De FilePos og Filstørrelse funksjoner kan brukes til å bestemme gjeldende filposisjon og gjeldende filstørrelse.

{gå tilbake til begynnelsen - den første posten}

 Søk (F, 0);


{gå til den femte rekorden}

 Søk (F, 5);


{Hopp til slutten - "etter" den siste posten}

 Søk (F, FileSize (F)); 

Endre og oppdater

Du har nettopp lært hvordan du skriver og leser hele rekken av medlemmer, men hva om du bare vil søke det 10. medlemmet og endre e-posten? Neste prosedyre gjør akkurat det:

fremgangsmåte Endre e-post(konst RecN: heltall; konst Ny epost: string) ;Var DummyMember: TMember;begynne

{tilordne, åpne, unntakshåndteringsblokk}

 Søk (F, RecN);

 Les (F, DummyMember);

 DummyMember. E-post: = NewEMail;

{les trekk til neste post, må vi

gå tilbake til den opprinnelige posten, og skriv deretter}
 Søk (F, RecN);

 Skriv (F, DummyMember);

{lukk fil}slutt;

Fullføre oppgaven

Det er det - nå har du alt du trenger for å utføre oppgaven din. Du kan skrive medlemmenes informasjon til disken, du kan lese den tilbake, og du kan til og med endre noen av dataene (for eksempel e-post) i "midten" av filen.

Det viktige er at denne filen ikke er en ASCII-fil, slik ser det ut Notisblokk (bare en post):

 .Delphi Guide g Ò5 · ¿ì. 5.. B V.Lƒ, „¨[email protected]Ï.. ç.ç.ï.. 

instagram story viewer