Opret en database ved hjælp af Delphis fil af typede filer

click fraud protection

Enkelt at sætte en fil er en binær sekvens af en eller anden type. I Delphi, der er tre klasser af fil: indtastet, tekst og ikke-indtastet. Typede filer er filer, der indeholder data af en bestemt type, såsom dobbelt, heltal eller tidligere defineret tilpasset posttype. Tekstfiler indeholder læsbare ASCII-tegn. Uindtastede filer bruges, når vi vil pålægge en fil mindst mulig struktur.

Typede filer

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

For eksempel opretter følgende erklæring en posttype kaldet TMember og en række TMember-postvariabler.

type

 Medlem = optage

 Navn: snor[50];

e-mail:
snor[30];

Indlæg: LongInt;
ende;

Var Medlemmer: matrix[1..50] af TMember; 

Inden vi kan skrive oplysningerne til disken, skal vi erklære en variabel af en filtype. Den følgende kodelinje erklærer en F-filvariabel.

Var F: fil af TMember; 

Bemærk: For at oprette en indtastet fil i Delphi, bruger vi følgende syntaks:

instagram viewer

Var SomeTypedFile: fil af sometype

Basetypen (SomeType) for en fil kan være en skalartype (som dobbelt), en array-type eller posttype. Det skal ikke være en lang streng, dynamisk matrix, klasse, objekt eller en markør.

For at begynde at arbejde med filer fra Delphi, er vi nødt til at linke en fil på en disk til en filvariabel i vores program. For at oprette dette link skal vi bruge AssignFile procedure til at knytte en fil på en disk til en filvariabel.

 AssignFile (F, 'Members.dat') 

Når tilknytningen til en ekstern fil er etableret, skal filvariablen F 'åbnes' for at forberede den til læsning og skrivning. Vi kalder Nulstil procedure for at åbne en eksisterende fil eller Omskrivning for at oprette en ny fil. Når et program afslutter behandlingen af ​​en fil, skal filen lukkes ved hjælp af proceduren CloseFile. Når en fil er lukket, opdateres den tilknyttede eksterne fil. Filvariablen kan derefter tilknyttes en anden ekstern fil.

Generelt bør vi altid bruge undtagelse håndtering; der kan opstå mange fejl, når du arbejder med filer. For eksempel: hvis vi kalder CloseFile for en fil, der allerede er lukket, rapporterer Delphi en I / O-fejl. På den anden side, hvis vi forsøger at lukke en fil, men endnu ikke har kaldet AssignFile, er resultaterne uforudsigelige.

Skriv til en fil

Antag, at vi har udfyldt en række Delphi-medlemmer med deres navne, e-mails og antal stillinger, og vi vil gemme disse oplysninger i en fil på disken. Følgende stykke kode udfører arbejdet:

Var

 F: fil af TMember;

i: heltal;
begynde

 AssignFile (F, 'members.dat');

 Omskrivning (F);

prøve

til j: = 1 til 50 gøre

 Skriv (F, medlemmer [j]);

endelig

 CloseFile (F);

ende;ende; 

Læs fra en fil

For at hente alle oplysningerne fra filen 'members.dat' ville vi bruge følgende kode:

Var

 Medlem: TMember

 F: fil af TMember;begynde

 AssignFile (F, 'members.dat');

 Nulstil (F);

prøve

mens ikke Eof (F) begynder

 Læs (F, medlem);

{DoSomethingWithMember;}

ende;

endelig

 CloseFile (F);

ende;ende; 

Bemærk: Eof er EndOfFile-kontrolfunktionen. Vi bruger denne funktion til at sikre, at vi ikke prøver at læse ud over filens ende (ud over den sidst gemte post).

Søger og placering

Filer åbnes normalt sekventielt. Når en fil læses ved hjælp af standardproceduren Læs eller skrives ved hjælp af standardproceduren Skriv, flyttes den aktuelle filposition til den næste numerisk ordrede filkomponent (næste post). Typede filer kan også åbnes tilfældigt gennem standardproceduresøgningen, der flytter den aktuelle filposition til en specificeret komponent. Det FilePos og Filstørrelse funktioner kan bruges til at bestemme den aktuelle filposition og den aktuelle filstørrelse.

{gå tilbage til begyndelsen - den første post}

 Søge (F, 0);


{gå til den femte rekord}

 Søge (F, 5);


{Spring til slutningen - "efter" den sidste post}

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

Skift og opdater

Du har lige lært, hvordan du skriver og læser hele matrixen af ​​medlemmer, men hvad nu, hvis du kun vil gøre det, er at søge til det 10. medlem og skifte e-mail? Den næste procedure gør nøjagtigt det:

procedure ChangeEMail (const RecN: heltal; const Ny email: snor) ;Var DummyMember: TMember;begynde

{tildele, åben, undtagelseshåndteringsblok}

 Søge (F, RecN);

 Læs (F, DummyMember);

 DummyMember. E-mail: = NewEMail;

{læse flytter til næste post, vi er nødt til det

gå tilbage til den originale post, skriv derefter}
 Søge (F, RecN);

 Skriv (F, DummyMember);

{luk fil}ende;

Afslutning af opgaven

Det er det - nu har du alt hvad du har brug for for at udføre din opgave. Du kan skrive medlemsoplysninger til disken, du kan læse den tilbage, og du kan endda ændre nogle af dataene (f.eks. E-mail) i "midten" af filen.

Hvad der er vigtigt er, at denne fil ikke er en ASCII-fil, sådan ser det ud notepad (kun en rekord):

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

instagram story viewer