DELPHI: Tekslęers
 

'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.

Assess
eringsrubriek

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
 

Terug na Delphi-hulpbronindeks




Terug na Tuisblad

© JAK Olivier (2008)

Webwerf: http://www.jako.nom.za/
E-pos: olivier@teachitza.com