Практична робота: Робота з файлами в Lazarus. 10 клас. Допомога вчителю інформатики для 10 класу профільного рівня за новою програмою. Використані матеріали з інших джерел. Розробила вчитель інформатики Цодікова Л.М.
Практична робота: Робота з файлами.
Мета: навчитися прив’язувати фал до програми в Lazarus.
Обладнання: Lazarus.
Хід роботи:
Робота з текстовим файлом, який має тип TextFile. Для доступу до записів застосовуються процедури Read і Readln для читання, Write і Writeln для запису. У всіх цих процедурах першим параметром йде файлова змінна, а другим - список аргументів. Аргументами можуть бути одна або кілька змінних строкового, символьного або числового типу. Для прикладу, створимо просте додаток, що дозволяє працювати з текстовим файлом, заносячи в нього через підрядник текст з рядка TEdit.
Завдання: створити простий додаток, що дозволяє працювати з текстовим файлом, заносячи в нього через підрядник текст з рядка TEdit.
procedure TForm1.Button1Click(Sender: TObject);
var
tf: TextFile; // текстовий файл
s: String;
begin
// якщо користувач не ввів рядок в Edit1, просто вийдемо з процедури:
if Edit1.Text = '' then exit;
// інакше в s отримуємо текст:
s:= Edit1.Text;
// потім пов'язуємо файлову змінну tf з файлом mytext.txt:
AssignFile(tf, 'mytext.txt');
// далі може виникнути виняткова ситуація, тому
// укладемо небезпечний код в блок try-finally-end:
try
// якщо файлу немає (кнопку натиснули перший раз), створимо його:
if not FileExists('mytext.txt') then Rewrite(tf)
// інакше відкриємо для запису, встановивши покажчик в кінець файлу:
else Append(tf);
// тут просто записуємо рядок в файл:
Writeln(tf, s);
// очищаємо Edit1, щоб користувач бачив, що подія відбулася:
Edit1.Text:= '';
finally
CloseFile(tf); // закриваємо файл
end;
end;
procedure TForm1.Button2Click(Sender: TObject);
var
tf: TextFile; // текстовий файл
s: String;
begin
// якщо файлу немає, просто виходимо:
if not FileExists('mytext.txt') then exit;
// інакше спочатку очищаємо Memo1:
Memo1.Clear;
// пов'язуємо файлову змінну tf з файлом mytext.txt:
AssignFile(tf, 'mytext.txt');
// далі може виникнути виняткова ситуація, тому
// укладемо небезпечний код в блок try-finally-end:
try
Reset(tf); // відкрили файл для читання, покажчик на початку файлу
// робимо, поки не кінець файлу:
while not Eof(tf) do begin
Readln(tf, s); // читаємо в s черговий рядок
Memo1.Lines.Add(s); // додаємо цей рядок в Memo1
end;
finally
CloseFile(tf); // закриваємо файл
end;
end;
За коментарями зрозуміло, яким чином відбувається читання. Зверніть увагу, для запису ми скористалися процедурою Writeln, а не Write, а при читанні - Readln, а не Read. Це позбавило нас від необхідності піклуватися про вставці і пошуку символів кінця рядка, рекомендую вам завжди використовувати такий, більш зручний спосіб. Весь алгоритм зчитування рядків ми помістили в блок while-do і зчитували текст рядок за рядком, поки функція Eof не повернула True, тобто, поки файл не закінчився.
Використано матеріал: http://intuit.valrkl.ru/course-1265/index.html#ID.23.lecture