Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АрхитектураБиологияГеографияДругоеИностранные языки
ИнформатикаИсторияКультураЛитератураМатематика
МедицинаМеханикаОбразованиеОхрана трудаПедагогика
ПолитикаПравоПрограммированиеПсихологияРелигия
СоциологияСпортСтроительствоФизикаФилософия
ФинансыХимияЭкологияЭкономикаЭлектроника

Добавление и удаление записей в файл и из файла

По нажатию клавиши со стрелкой | Совмещение управляемого и неуправляемого движений. | В графических приложениях | Создание кнопок | Сортировка массива | Метод обмена | Система предварительной продажи билетов | Рисование в таблице TDrawGrid | Прорисовка изображений в списке TListBox | Глава 7 |


Читайте также:
  1. Adding initializers to a class Добавление инициализаторами к классу
  2. Adding property observers Добавление наблюдателей собственности
  3. D) Оперативное удаление образования и ближайших лимфоузлов
  4. Ввод, редактирование и удаление данных
  5. Вывод файла в обратном порядке
  6. вывода всех данных из файла на экран.
  7. Горячие клавиши для работы с текстом и файлами

8.2.1. Проект «Журнал группы»

Постановка задачи. В данном проекте составляется список студентов с возможностью его пополнения. Демонстрирует процесс добавления записи в файл, использование компонентов TComboBox и TRadioGroup (рис. 47).

 

Рис. 47. Проект «Журнал»

 

Реализация. Сначала создадим тип TStud для описания одной записи о студенте:

 

type TStud=record

fio: string[100]; // Фамилия, имя, отчество студента

group: string[20]; // группа

faculty: string[40]; // факультет

pol: string[10]; // пол

end;

Для записи фамилии используем компонент TEdit, для выбора группы и факультета – компоненты TComboBox. Для указания пола – компонент TRadioGroup. После того как все поля будут заполнены, надо записать эту запись в конец файла, если он существует, иначе создать новый файл.

 

var f: file of TStud; // Файл записей

stud: TStud;

// Щелчок на кнопке «Добавить»

procedure TForm1.Button1Click(Sender: TObject);

begin

with stud do

begin

fio:= Edit1.Text;

group:= ComboBox1.Text;

faculty:= ComboBox2.Text;

case RadioGroup1.ItemIndex of

0: pol:= 'Мужской';

1: pol:= 'Женский';

end;

end;

AssignFile(f, 'student');

if not FileExists('student') then

begin

Rewrite(f); // Открыть файл для записи, т. е. создать

write(f, stud); // Записать содержимое полей в файл

end

else

begin

Reset(f); // Файл существует

Seek(f, FileSize(f)); // Указатель записи в конец файла

write(f, stud);

end;

CloseFile(f); // Закрыть файл

end;

// Щелчок на кнопке «Просмотреть файл»

procedure TForm1.Button2Click(Sender: TObject);

var s:string;

begin

Memo1.Clear;

AssignFile(f, 'student');

Reset(f); // Открыть файл для чтения

while not eof(f) do

begin

Read(f,stud); // Прочитать одну запись

s:= stud.fio+' '+stud.group+' '+ stud.faculty+' '+ stud.pol;

Memo1.Lines.Add(s);

end;

end;

 

Задание. Создайте запись об игроке: имя, время игры, очки. Сделайте таблицу рекордов.

8.3. Файлы для проекта «Судоку»

Постановка задачи. В проекте «Судоку» предлагается несколько вариантов числовых таблиц, которые заранее создаются с помощью текстового редактора и записываются в файлы. Можно хранить все таблицы в одном файле. Цель данной задачи – скопировать таблицу из файла в двумерный массив и показать ее на форме. На рис. 48 приведен пример файла чисел для игры в «Судоку» без повторений по горизонталям и вертикалям.

 

Рис. 48. Файл для «Судоку»

Реализация. Для вывода таблицы чисел на форму сначала нарисуем поле с помощью процедуры DrawPole, которая была написана ранее (раздел 2.1.2). Перепишем числа из файла в двумерный массив mas, а затем из массива скопируем на форму.

Описание глобальных данных:

 

const n = 6;

x0 = 10;

y0 = 10;

dx = 30;

dy = 30;

var st: string[6];

f: textfile;

mas: array[1..n,1..n] of integer;

 

Копирование чисел из файла в таблицу и из таблицы на форму реализовано в процедуре zapolnenie ().

 

procedure zapolnenie(nf:string); // nf – имя файла

var k, c, i, j, x, y: integer;

st: string;

begin

AssignFile(f, nf);

Reset(f);

k:= 1;

while not Eof(f) and (k <= n) do

begin

Readln(f, st);

j:= 1;

for i:=1 to Length(st) do

begin

if st[i] <> ' ' then // Не равно пробелу

begin

c:= ord(st[i])-ord('0');

mas[k, j]:= c;

j:= j + 1;

end;

end;

k:= k + 1;

end;

CloseFile(f);

Form1.Canvas.Font.Color:=clblue;

Form1.Canvas.Font.Size:=16;

for i:=1 to n do

for j:=1 to n do

begin

x:= x0 + (j-1)*dx;

y:= y0 + (i-1)*dy;

Form1.Canvas.TextOut(x + 5, y + 5, IntToStr(mas[i, j]));

end;

end;

 

Код обработчика «Заполнить» приведен ниже:

 

procedure TForm1.Button1Click(Sender: TObject);

begin

DrawPole(n, dx, x0, y0);

zapolnenie('chisla.txt');

end;

 

Результат работы показан на рис. 49.

 

Рис. 49. Заполнение таблицы из файла

 

Задание 1. Сделайте так, чтобы таблица стала пригодной для игры, т. е. вместо некоторых чисел надо вывести пустые строки,
а в массиве – нули. Какие числа закрыть – выбирайте случайным образом или задайте некий алгоритм.

 

Задание 2. Сделайте проект «Судоку».


 


Дата добавления: 2015-08-20; просмотров: 58 | Нарушение авторских прав


<== предыдущая страница | следующая страница ==>
Просмотр текстовых файлов| Просмотр видеофильма с использованием

mybiblioteka.su - 2015-2024 год. (0.013 сек.)