Ascii (tekst) bestanden beheren vanuit code

Simpel gezegd, tekstbestanden bevatten leesbare ASCII-tekens. We kunnen denken aan het werken met een tekstbestand in Delphi als analoog aan het afspelen of opnemen van informatie op een videorecorder.

Hoewel het mogelijk is om een ​​tekstbestand te wijzigen, rond te springen bij het verwerken van informatie of andere gegevens aan het bestand toe te voegen dan aan het einde, is het raadzaam om een ​​tekstbestand alleen te gebruiken als we weten dat we met gewone tekst werken en dergelijke operaties zijn niet nodig.

Tekstbestanden worden beschouwd als een reeks tekens die zijn opgemaakt in lijnen, waarbij elke regel wordt beëindigd door een markering aan het einde van de regel (een combinatie van CR / LF).

Het TextFile en de Assign Method

Om met tekstbestanden te gaan werken, moet u een bestand op een schijf koppelen aan een bestandsvariabele in uw code - declareer een variabele van het type TextFile en gebruik de AssignFile-procedure om een ​​bestand op een schijf te koppelen aan een bestandsvariabele.

Informatie lezen uit een tekstbestand

Als we de inhoud van een bestand in een stringlijst willen teruglezen, volstaat slechts één regel code.

Om informatie uit een bestand regel voor regel te kunnen lezen, moeten we het bestand openen voor invoer met behulp van de Reset procedure. Zodra een bestand opnieuw is ingesteld, kunnen we gebruiken readln om informatie uit een bestand te lezen (leest een regel tekst uit een bestand en gaat dan naar de volgende regel):

Na het toevoegen van één regel tekst uit een bestand aan een memocomponent moet SomeTxtFile worden gesloten. Dit wordt gedaan door de Dichtbij trefwoord.

We kunnen de leesprocedure ook gebruiken om informatie uit een bestand te lezen. Read werkt net als ReadLn, behalve dat de aanwijzer niet naar de volgende regel wordt verplaatst.

EOF - Einde van bestand

Gebruik de EOF-functie om ervoor te zorgen dat u niet verder probeert te lezen dan het einde van het bestand. Laten we zeggen dat we de inhoud van het bestand in berichtvakken willen weergeven - regel voor regel totdat we aan het einde van een bestand komen:

Opmerking: het is beter om de While-lus te gebruiken dan de While-lus om rekening te houden met de (onwaarschijnlijke) mogelijkheid dat het bestand bestaat maar geen gegevens bevat.

Tekst naar een bestand schrijven

De writeln is waarschijnlijk de meest gebruikelijke manier om afzonderlijke stukjes informatie naar een bestand te sturen. De volgende code leest een tekst uit een Memo1-component (regel voor regel) en verzendt deze naar een nieuw gemaakt tekstbestand.

Afhankelijk van de status van het bestand dat aan de herschrijfprocedure wordt verstrekt, maakt het een nieuw bestand (opent het bestand voor uitvoer) met de naam toegewezen aan SomeTextFile. Als er al een bestand met dezelfde naam bestaat, wordt dit verwijderd en wordt er een nieuw leeg bestand gemaakt. Als SomeTextFile al is geopend, wordt het eerst gesloten en vervolgens opnieuw gemaakt. De huidige bestandspositie is ingesteld op het begin van het lege bestand.

Opmerking: Memo1.Lines.SaveToFile ('c: \ MyTextFile.txt') zal hetzelfde doen.

Soms moeten we alleen wat tekstgegevens toevoegen aan het einde van een bestaand bestand. Als dit het geval is, bellen we append om ervoor te zorgen dat een bestand wordt geopend met alleen-lezen toegang met de bestandsaanwijzer aan het einde van het bestand. Zoiets als:

Wees je bewust van uitzonderingen

Over het algemeen moet u altijd uitzonderingsverwerking gebruiken wanneer u met bestanden werkt. I / O zit vol verrassingen. Gebruik altijd CloseFile in een slotblok om te voorkomen dat de FAT van een gebruiker wordt beschadigd. Alle voorgaande voorbeelden moeten als volgt worden herschreven:

Manipuleren met gestructureerde bestanden

Delphi kan zowel ASCII-bestanden verwerken als bestanden met binaire gegevens. Hier zijn de technieken voor het werken met getypte en ongetypeerde (binaire) bestanden.