Maak een database met behulp van Delphi's bestand met getypte bestanden

Simpel gezegd is een bestand een binaire reeks van een bepaald type. In Delphi, er zijn drie klassen van het dossier: getypt, tekst en ongetypeerd. Getypte bestanden zijn bestanden die gegevens van een bepaald type bevatten, zoals Double, Integer of eerder gedefinieerd aangepast recordtype. Tekstbestanden bevatten leesbare ASCII-tekens. Untyped-bestanden worden gebruikt wanneer we een zo min mogelijk structuur aan een bestand willen opleggen.

Getypte bestanden

Hoewel tekstbestanden bestaan ​​uit regels die worden afgesloten met een CR / LF (#13#10) combinatie, getypte bestanden bestaan ​​uit gegevens afkomstig van een bepaald type gegevensstructuur.

De volgende verklaring maakt bijvoorbeeld een recordtype met de naam TMember en een array van TMember-recordvariabelen.

type

 TMember = Vermelding

 Naam: draad[50];

e-mail:
draad[30];

Berichten: LongInt;
einde;

var Leden: array[1..50] van TMember; 

Voordat we de informatie naar de schijf kunnen schrijven, moeten we een variabele van een bestandstype declareren. De volgende coderegel geeft een F-bestandsvariabele aan.

instagram viewer
var F: bestand van TMember; 

Opmerking: om een ​​getypt bestand in Delphi te maken, gebruiken we het volgende syntaxis:

var SomeTypedFile: bestand van SomeType

Het basistype (SomeType) voor een bestand kan een scalair type zijn (zoals Double), een arraytype of recordtype. Het mag geen lange reeks, dynamische array, klasse, object of aanwijzer zijn.

Om met bestanden van Delphi te kunnen werken, moeten we een bestand op een schijf koppelen aan een bestandsvariabele in ons programma. Om deze link te maken, moeten we gebruiken AssignFile procedure om een ​​bestand op een schijf te koppelen aan een bestandsvariabele.

 AssignFile (F, 'Members.dat') 

Zodra de associatie met een extern bestand tot stand is gebracht, moet de bestandsvariabele F worden 'geopend' om deze voor te bereiden op lezen en schrijven. We roepen de reset-procedure aan om een ​​bestaand bestand te openen of herschrijven om een ​​nieuw bestand te maken. Wanneer een programma de verwerking van een bestand heeft voltooid, moet het bestand worden gesloten met de CloseFile-procedure. Nadat een bestand is gesloten, wordt het bijbehorende externe bestand bijgewerkt. De bestandsvariabele kan vervolgens worden gekoppeld aan een ander extern bestand.

Over het algemeen moeten we altijd gebruiken afhandeling van uitzonderingen; er kunnen veel fouten optreden bij het werken met bestanden. Bijvoorbeeld: als we CloseFile aanroepen voor een bestand dat al is gesloten, meldt Delphi een I / O-fout. Aan de andere kant, als we proberen een bestand te sluiten maar nog geen AssignFile hebben genoemd, zijn de resultaten onvoorspelbaar.

Schrijf naar een bestand

Stel dat we een reeks Delphi-leden hebben gevuld met hun namen, e-mails en aantal berichten en we willen deze informatie opslaan in een bestand op de schijf. Het volgende stuk code zal het werk doen:

var

 F: bestand van TMember;

i: geheel getal;
beginnen

 AssignFile (F, 'members.dat');

 Herschrijven (F);

proberen

voor j: = 1 naar 50 Doen

 Write (F, Members [j]);

Tenslotte

 Sluitbestand (F);

einde;einde; 

Lezen uit een bestand

Om alle informatie uit het bestand 'members.dat' op te halen, zouden we het volgende gebruiken code:

var

 Lid: TMember

 F: bestand van TMember;beginnen

 AssignFile (F, 'members.dat');

 Reset (F);

proberen

terwijl niet Eof (F) beginnen

 Lezen (F, lid);

{DoSomethingWithMember;}

einde;

Tenslotte

 Sluitbestand (F);

einde;einde; 

Notitie: Eof is de EndOfFile-controlefunctie. We gebruiken deze functie om ervoor te zorgen dat we niet proberen verder te lezen dan het einde van het bestand (voorbij het laatst opgeslagen record).

Zoeken en positioneren

Bestanden worden normaal achtereenvolgens geopend. Wanneer een bestand wordt gelezen met de standaardprocedure Lezen of geschreven met de standaardprocedure Schrijven, wordt de huidige bestandspositie verplaatst naar het volgende numeriek geordende bestandsonderdeel (volgende record). Getypte bestanden zijn ook willekeurig toegankelijk via de standaardprocedure Zoeken, die de huidige bestandspositie naar een opgegeven component verplaatst. De FilePos en Bestandsgrootte functies kunnen worden gebruikt om de huidige bestandspositie en de huidige bestandsgrootte te bepalen.

{ga terug naar het begin - het eerste record}

 Zoeken (F, 0);


{ga naar het 5e record}

 Zoeken (F, 5);


{Spring naar het einde - "na" het laatste record}

 Zoeken (F, FileSize (F)); 

Wijzigen en bijwerken

Je hebt net geleerd hoe je de hele reeks leden moet schrijven en lezen, maar wat als je alleen maar naar het 10e lid wilt zoeken en de e-mail wilt wijzigen? De volgende procedure doet precies dat:

procedure ChangeEMail (const RecN: geheel getal; const Nieuwe e-mail: draad) ;var DummyMember: TMember;beginnen

{toewijzen, openen, uitzonderingsafhandelingsblok}

 Zoeken (F, RecN);

 Lezen (F, DummyMember);

 DummyMember. E-mail: = NewEMail;

{lees bewegingen naar het volgende record, we moeten

ga terug naar het oorspronkelijke record en schrijf}
 Zoeken (F, RecN);

 Write (F, DummyMember);

{bestand sluiten}einde;

De taak voltooien

Dat is alles - nu heb je alles wat je nodig hebt om je taak te volbrengen. U kunt ledeninformatie naar de schijf schrijven, u kunt deze teruglezen en u kunt zelfs sommige gegevens (bijvoorbeeld e-mail) in het "midden" van het bestand wijzigen.

Wat belangrijk is, is dat dit bestand geen is ASCII-bestand, zo ziet het eruit Kladblok (slechts één record):

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

instagram story viewer