Создание типизированного файла – содержащего сведения о телефонах абонентов, страница 6

assignfile(f,'anketa');

reset(f);

while not eof(f) do

begin

read(f,spisok);

tab1.cells[0,j]:='';

tab1.cells[1,j]:='';

tab1.cells[2,j]:='';

j:=j+1;

end;

end;

procedure TForm1.Button6Click(Sender: TObject); //редактировоние

begin

button6.Enabled:=false;

tab1.Visible:=true;  //делаем таблицу видимой

assignfile(f,'anketa');

reset(f);

n:=filesize(f);

rewrite(f);//задаём кол-во строк в таблице

for j:=1 to n do

begin

spisok.Name:=tab1.cells[0,j];  //переписываем данные из таблицы в файл

spisok.tel:=tab1.cells[1,j];

spisok.adr:=tab1.cells[2,j];

write(f,spisok);

end;

closefile(f);

end;

procedure TForm1.Button7Click(Sender: TObject);

begin

close;

end;

procedure TForm1.Button8Click(Sender: TObject);  //удаление

begin

button8.Enabled:=false;

K:=0;

assignfile(f,'anketa');

reset(f);

n:=filesize(f);

z:=n;

for i:=1 to n do

begin

read(f,spisok);  //переписываем данные из файла

sp[i]:=spisok;   //в запись sp типа-массив

end;

for i:=1 to n do

begin k:=k+1;

if (sp[i].name=tab1.Cells[g,j])and(sp[i].tel=tab1.Cells[g+1,j])

then       //ищем удаляемую запись в sp

begin

for i:=k to n do  //удаляем запись из sp со сдвигом элементов

begin

z:=n-1;

sp[i]:=sp[i+1];

end;

end;

end;

closefile(f);rewrite(f);

for i:=1 to z do  //переписываем файл

write(f,sp[i]);

closefile(f)

end;

procedure TForm1.Button9Click(Sender: TObject);  //сортировка

begin

assignfile(f,'anketa');

reset(f);

n:=filesize(f);

for i:=1 to n do

begin

read(f,spisok);

sp[i]:=spisok;

end;closefile(f);

case radiogroup2.ItemIndex of //определяем какая из радиокнопок нажата

0: begin

for i:=1 to n do   //сортипровка по возростанию

begin

for i:=1 to n-1 do

if sp[i].name>sp[i+1].name then //сравниваем текущую запись с последующей

begin

spis:=sp[i];

sp[i]:=sp[i+1]; //меняем местами текущую запись с

sp[i+1]:=spis;   //последующей

end;

end;

end;

1: begin

for i:=1 to n do

begin

for i:=1 to n-1 do

if sp[i].name<sp[i+1].name then

begin

spis:=sp[i];

sp[i]:=sp[i+1];

sp[i+1]:=spis;

end;

end;

end;

end;

rewrite(f);

for i:=1 to n do

write(f,sp[i]);

closefile(f);

end;

procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);

begin //запрет на ввод некорректных символов в поле фамилия

if not (key in['А'..'Я','а'..'я','a'..'z','A'..'Z',' ','.']) then

begin

key:=#0;

beep;

end;

end;

procedure TForm1.Edit2KeyPress(Sender: TObject; var Key: Char);

begin //запрет на ввод некорректных символов в поле телефон

if not (key in['0'..'9','-','+',' ','(',')','*','#']) then

begin

key:=#0;

beep;

end;

end;

procedure TForm1.Tab1SelectCell(Sender: TObject; ACol, ARow: Integer;

var CanSelect: Boolean); //определяет активную ячейку таблицы

begin

g:=acol;j:=arow;

button6.Enabled:=true;

button8.Enabled:=true;

end;

procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,

Y: Integer);       //определяет местоположение курсора мыши

begin

memo1.Text:=getlonghint((sender as tcontrol).Hint)

end;

end.


Тестирование на допустимые и недопустимые входные данные.

Недопустимых данных, которые могут привести к ошибке в работе программы необнаружено.

Существовала только одна ситуация, которая могла привести к возникновению программной ошибки. Эта ситуация была связана с попыткой прочтения записей из несуществующего файла с данными. В ходе тестирования эта ситуация была исключена.

Также была исключена возможность ввода неопытным пользователем некорректной информации в поля записей, т.е. в поле «фамилия» можно ввести только буквы и символ «.» и т.д.

В целом в ходе тестирования всех компонентов программы при различных входных данными было выявлено что данная программа адекватно реагирует на входные данные.