Programmeren in Pascal/Werken met bestanden

Uit Wikibooks

Voor het inlezen en wegschrijven van (tekst)bestanden zijn er verschillende manieren mogelijk.

In het onderstande voorbeeld wordt op een eenvoudige wijze een tekstbestand ingelezen van 500 regels. Op elke regel staan 40 tekens. De eerste 30 gereserveerd voor de naam (van b.v. een gemeente) en de laatste 10 karakters bevat het inwonertal. Daarom specificeren we de variabelen naam en totaal en maken er arrays van met een omvang van (maximaal) 500. Elk van deze 500 variabelen is een string met een vaste lengte met respectievelijk 30 en 10 karakters.

We gaan dit tekstbestand als volgt verwerken. Met assign en reset zorgen we ervoor dat we het bestand kunnen openen en lezen. Dit lezen doen we per regel, tot het einde van het bestand eof(f).

Pascal-code:

procedure LeesTekstbestand;
var
	lines: integer;
	naam: array[1..500] of string[30];
	totaal: array[1..500] of string[10];
begin
	assign(f, 'Gemeentes.txt');
	reset(f);
	
	repeat
		read(f, titel[lines]);
		read(f, totaal[lines]);
		lines := lines + 1;
	until eof(f);
	
	close(f);
end.

Stel dat we als doel hebben om een Wikipedia-bot te maken die artikelen over de gemeentes wil plaatsen op basis van dit tekstbestand. Dan is het nodig om deze data te bewerken tot een leesbaar wikipedia-formaat. Dus na het inlezen gaan we de bewerkte tekst wegschrijven voor later gebruik.

We koppelen het nog niet bestaande bestand 'output.txt' aan de variabele f. Met rewrite(f) zorgen we ervoor dat er in het bestand kan worden geschreven. We herhalen dit i keer, en sluiten het bestand af met close.

Pascal-code:

procedure LeesTekstbestand;
var
	lines: integer;
	naam: array[1..500] of string[30];
	totaal: array[1..500] of string[10];
begin
	assign(f, 'Gemeentes.txt');
	reset(f);
	
	repeat
		read(f, titel[lines]);
		read(f, totaal[lines]);
		lines := lines + 1;
	until eof(f);
	
	close(f);
	
	// Wegschrijven
	assign(f, 'output.txt');
	rewrite(f);
	
	for i := 1 to lines do
	begin
		write(f, 'Gemeente');
		write(f, trim(naam[i]));
		writeLn(f, 'telt' + trim(totaal[i]) + 'inwoners.');
		writeLn(f, '[[Categorie: Gemeente in Noorwegen]]');
		writeLn(f, '[[en:'+  trim(naam[i])+']]');
	end;
	
	close(f);
end.

Met rewrite overschrijf je elke keer dat je de methode uitvoert hetzelfde bestand. Wil je nieuwe regels toevoegen aan een bestaand bestand, gebruik dan append(f) in plaats van rewrite(f).

Informatie afkomstig van https://nl.wikibooks.org Wikibooks NL.
Wikibooks NL is onderdeel van de wikimediafoundation.