Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл: Источник:
Скачиваний:
98
Добавлен:
04.03.2014
Размер:
593.92 Кб
Скачать

Var p: Pint;

p:= New(Pint);

При размещении в динамической памяти объекта размещается в качестве второго параметра обращения к New указывать имя конструктора.

Release(Ptr) – освобождает участок кучи. Здесь Ptrуказатель, любого типа, в котором предварительно было сохранено процедурой Mark значение указателя кучи. Освобождается участок кучи от адрес, хранящегося в Ptr, до конца кучи. Одновременно уничтожается список всех свободных фрагментов, которые, возможно, были созданы процедурами DisPose или FreeMem.

2. Демонстрационные примеры

Пример 5.1. Создать программу для поиска цифровых символов в некоторой строке. Написать на языке ТР 7.1 модуль stsearch.tpu, выполняющий поиск цифровых символов. Программа должна обладать одноуровневым меню, иметь опцию импорта строки из текстового файла (файл должен существовать по указанному адресу и не использоваться другими приложениями). Выход из программы возможен по выбору определенного пункта меню, нажатии клавиши Esc, либо комбинации клавиш “Ctrl + C”.

Program StSearch1;

Uses crt, stsearch;

Type win = record

X1,y1,x2,y2: word;

text: string[20];

end;

Var npos,I,n,j :integer;

ch1,ch2 :char;

nstr,path,autstr :string;

f1 :text;

const menu: array[1..4] of win =

((x1:5; y2:4; x2:21; y2:4; text: ‘Ввести строку’ )

(x1:5; y2:5; x2:21; y2:5; text: ‘Импорт из файла’ )

(x1:5; y2:6; x2:21; y2:6; text: ‘Просмотр цифр’ )

(x1:5; y2:7; x2:21; y2:7; text: ‘Выход’ ));

Procedure DrawWin(w: win; attr: byte); {изображение пункта меню}

begin

with w do

begin

textattr := attr; {устанавливает атрибуты текста}

window (x1,y1,x2,y2); {создает окно с указанными координатами}

clrscr;

gotoXY(2,1);

write(text);

end;

end;

Procedure DrawMenu(npos: integer); {последовательное изображение пунктов меню}

begin

clrcsr;

for i:=1 to 4 do

if i=npos then drawwin(menu[i], 255{94}) else drawwin (menu[i],29{30});

end;

begin {основная программа}

npos :=1; {исходная позиция выделенного пункта меню}

drawmenu (npos);

repeat

ch1 := readkey;

if ch = #0 then ch2 := readkey;

case ch1 of

#0: case ch2 of

#72 : begin {если нажата клавиша «вверх»}

if npos >1 then {если не верхний пункт меню}

begin

drawwin(menu[npos],30); {перерисовка текущего пункта- снятие выделения}

npos := npos - 1;

drawwin (menu [npos],94); {выделение следующего пункта меню}

end;

end;

#80: begin {если нажата клавиша «вниз»}

if npos < 4 then {если не нижний пункт меню}

begin

drаwwin(menu[npos],30);

npos := npos + 1;

drawwin (menu [npos],94);

end;

end;

end;

#13: begin {если нажата клавиша «Enter»}

window (1,1,80,25);

textattr := 7;

clrscr;

textcolor (cyan);

case npos of

1: begin {выбран первый пункт меню}

writeln (menu[npos]. text);

write (‘>>’);

readln (instr);

end;

2: begin {выбран второй пункт меню}

textcolor (red);

writeln (menu[npos].text);

textcolor (white);

write (‘Введите путь >> ’);

readln (path);

assign (f1, path);

reset (f1); {rewrite (f1);}

readln (f1,instr);

end;