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

Simpel gezegd, een bestand is een binaire reeks van een bepaald type. In Delphi zijn er drie bestandsklassen: 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

Terwijl 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: rangschikking[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.

 var F: bestand van TMember; 

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

var SomeTypedFile: bestand van sometype

Het basistype (SomeType) voor een bestand kan een scalair type (zoals Double), een arraytype of recordtype zijn. 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 omgaan met 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, gebruiken we de volgende 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.Email: = NewEMail;

  lees bewegingen naar het volgende record, we moeten

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

  Write (F, DummyMember);

  bestand sluiteneinde;

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 ASCII-bestand is, zo ziet het eruit in Kladblok (slechts één record):

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