'n LĘER is 'n datastruktuur wat permanent op
'n sekondęre stoormedium gestoor kan word.
Terwyl 'n datastruktuur die volgende is…
• 'n stel verbandhoudende data-items;
• gestoor onder een naam;
• en so georganiseer dat toegang tot individuele data-items moontlik is.
'n Tekslęer bevat slegs ASCII (American Standard Code of Information
Interchange) karakters en bevat dus geen formattering of grafika nie.
WENK: Skep tekslęers vir programme in Delphi self (File > New > Text)
of gebruik Notepad of MS Word (onthou om 'Plain text (*.txt)' te kies as
gestoor word). Die meeste van die tyd word die uitbreiding TXT gebruik om
na teksdokumente te verwys - maar jy kan ook 'n uitbreiding soos DAT of
enige ander beskikbares vir jou programme gebruik.
Gebruik 'n 'memo box' en twee knoppies (een om mee te stoor en een om mee
oop te maak):
Programkode:
procedure
TForm1.Button1Click(Sender: TObject);
begin
Memo1.Lines.SaveToFile('c:\toets.txt');
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
Memo1.Lines.LoadFromFile('c:\toets.txt');
end;
Hierdie prosedures doen al die werk vir jou
- jy hoef slegs die lęernaam te verskaf.
Hier kan die SaveDialog en OpenDialog ook gebruik word sodat
die gebruiker kan besluit watter lęernaam gebruik gaan word. Soek die Save
en Open Dialogs onder die ‘Dialog’-afdeling op die Component palette.
Hierdie komponente is net aktief as die program hardloop::
Metode 1
Soek die Save en Open Dialogs onder die ‘Dialog’-afdeling op die Component palette.
Hierdie komponente se ikone kan net gesien word as die program in 'edit
mode' is:
Die programkode word verander na:
procedure
TForm1.Button1Click(Sender: TObject);
begin
if SaveDialog1.Execute then
begin
Memo1.Lines.SaveToFile(SaveDialog1.FileName);
end;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
if OpenDialog1.Execute then
begin
Memo1.Lines.LoadFromFile(OpenDialog1.FileName);
end;
end;
Metode 2
Gebruik 'n RichEdit en twee knoppies (een om mee te stoor en een om mee
oop te maak):
Prosedures gebruik:
• AssignFile – ken lęernaam toe aan lęerveranderlike
• Reset – Verstel fokus na begin van lęer, lęer kan dan gelees word
• Readln – Lees lyntjie in lęer en stoor dit in string-veranderlike
• CloseFile – sluit lęer vir lees of skryf
• Append – open bestaande lęer en plaas fokus aan die einde van die lęer
sodat nuwe teks bygevoeg kan word
• Rewrite – skep/herskep lęer en plaas fokus aan die begin van lęer
Die RESET, APPEND, REWRITE en CLOSEFILE prscedures is noodsaaklik
aangesien lęers OOPGEMAAK en na gebruik weer GESLUIT moet word.
procedure
TForm1.Button1Click(Sender: TObject);
var
fFile : TextFile;
sLine : String;
iCount : integer;
begin
AssignFile(fFile, 'c:\toets.txt');
Rewrite(fFile);
FOR iCount := 0 to RichEdit1.Lines.Count-1 DO
BEGIN
sLine := RichEdit1.Lines[iCount];
Writeln(fFile, sLine);
END;
CloseFile(fFile);
end;
procedure TForm1.Button2Click(Sender: TObject);
var
fFile : TextFile;
sLine : String;
begin
RichEdit1.clear;
AssignFile(fFile, 'c:\toets.txt');
Reset(fFile);
WHILE NOT Eof(fFile) DO
BEGIN
Readln(fFile, sLine);
RichEdit1.Lines.Add(sLine);
END;
CloseFile(fFile);
end;
WHILE NOT eof(fFile) DO beteken dat terwyl
die einde van die lęer nog nie bereik is nie (as daar dus van die begin
tot einde gelees word) moet die instruksies in die lus (loop) herhaal
word.
Voeg programkode in jou program om te toets of 'n lęer bestaan of nie –
sodoende kan I/O-foutboodskappe vermy word.
Dit is dus meer gebruikersvriendelik:
procedure
TForm1.Button1Click(Sender: TObject);
var
fFile : TextFile;
sLine : String;
iCount : integer;
begin
AssignFile(fFile, 'c:\toets.txt');
IF FileExists('c:\toets.txt') <> true THEN
Rewrite(fFile)
ELSE
Append(fFile);
FOR iCount := 0 to RichEdit1.Lines.Count-1 DO
BEGIN
sLine := RichEdit1.Lines[iCount];
Writeln(fFile, sLine);
END;
CloseFile(fFile);
end;
procedure TForm1.Button2Click(Sender: TObject);
var
fFile : TextFile;
sLine : String;
begin
RichEdit1.clear;
IF FileExists('c:\toets.txt') <> true THEN
BEGIN
MessageDlg('Lęer bestaan nie!', mtError,[mbOK],0);
Exit;
END;
AssignFile(fFile, 'c:\toets.txt');
Reset(fFile);
WHILE NOT eof(fFile) DO
BEGIN
Readln(fFile, sLine);
RichEdit1.Lines.Add(sLine);
END;
CloseFile(fFile);
end;
Druk
Voeg die volgende by om 'n tekslęer te druk:
• 'n knoppie
• 'n printdialog
• Voeg ‘Printers’ tot jou Uses-verklaring boaan die program
Programkode:
procedure
TForm1.Button3Click(Sender: TObject);
var
iCount: Integer;
PrintText: TextFile;
begin
if PrintDialog1.Execute then
begin
AssignPrn(PrintText);
Rewrite(PrintText);
Printer.Canvas.Font := RichEdit1.Font;
FOR iCount := 0 to Richedit1.Lines.Count-1 DO
Writeln(PrintText, RichEdit1.Lines[iCount]);
CloseFile(PrintText)
end;
end;
VOORBEELDOEFENING
Skep 'n basiese woordverwerkingsprogram wat lęers kan skep, stoor, oopmaak
en druk. Gebruik die relevante 'dialogs' en maak dit so
gebruikersvriendelik as moontlik.
Assesseringsrubriek
Komponente van Tekslęer
korrek gebruik. Oplossing korrek.
Goeie vormuitleg. Baie gebruikersvriendelik (fouthantering en
instruksies) |
4 |
Komponente van Tekslęer
korrek gebruik. Gedeeltelik oplossing.
Vormuitleg kort aandag. Redelik gebruikersvriendelik |
3 |
Komponente/strukture tot
'n mate gebruik. Oplossing verkeerd.
|
2 |
Verkeerde komponente
gebruik. Geen oplossing. Min programkode.
|
1 |
Vir verdere verwysing – sien:
• Enjoy Delphi (Part 2) – bl.1-13
• http://delphi.about.com/od/fileio/a/ascii_textfile.htm
• http://www.delphibasics.co.uk/Article.asp?Name=Files
• http://www.delphicorner.f9.co.uk/articles/misc2.htm
|