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.
Тестирование на допустимые и недопустимые входные данные.
Недопустимых данных, которые могут привести к ошибке в работе программы необнаружено.
Существовала только одна ситуация, которая могла привести к возникновению программной ошибки. Эта ситуация была связана с попыткой прочтения записей из несуществующего файла с данными. В ходе тестирования эта ситуация была исключена.
Также была исключена возможность ввода неопытным пользователем некорректной информации в поля записей, т.е. в поле «фамилия» можно ввести только буквы и символ «.» и т.д.
В целом в ходе тестирования всех компонентов программы при различных входных данными было выявлено что данная программа адекватно реагирует на входные данные.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.