IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> Объясните как реализовать выход из процедуры обратно в меню, всё в нутри
сообщение
Сообщение #1


Бывалый
***

Группа: Пользователи
Сообщений: 222
Пол: Мужской
Реальное имя: Andrew

Репутация: -  0  +


Необходимо оформить программу следующим образом :
Есть главное меню,выбирает из меню нужный нам пункт,выполняется процедура,после чего ДОЛЖНО все вернутся обратно в меню для выбора следующего пункта
вот листинги модуля и гл. программы :
 unit unit1;
interface
procedure vivod;
implementation
uses graph,crt;
var
gd,gm,a,b,i,k:integer;
const
f:fillpatterntype= ($f0,$f1,$f2,$f3,$f4,$f5,$f6,$f7);
procedure vivod;
begin
a:=0;
b:=0;
settextjustify(2,2);
settextstyle(1,0,4);
outtextxy(600,5,'WORK MODULE GRAPH');
settextjustify(2,2);
settextstyle(1,0,3);
outtextxy(500,30,'Case of Shtrih');
settextjustify(lefttext,toptext);
settextstyle(0,0,0);
for i:=0 to 5 do
begin
setfillstyle(i,blue);
arc(120+a,90+b,210,150,15);
line(120+a,90+b,108+a,83+b);
line(120+a,90+b,108+a,98+b);
floodfill(128+a,90+b,white);
a:=a+50;
b:=b+60;
end;
a:=0;
b:=0;
for i:=6 to 11 do
begin
setfillstyle(i,blue);
arc(300+a,90+b,210,150,15);
line(300+a,90+b,287+a,83+b);
line(300+a,90+b,287+a,98+b);
floodfill(305+a,90+b,white);
a:=a+50;
b:=b+60;
end;
k:=3;
arc(120,300,210,150,40);
setfillstyle(12,blue);
setfillpattern(f,white);
line(120,300,85,279);
line(120,300,85,320);
floodfill(120,304,white);
readkey;
end;
begin
gd:=0;
initgraph(gd,gm,'D:\pascal\tp7\bgi');
cleardevice;

end.


гл. программа :

Program main7;
uses crt,unit1;
var
a:integer;
begin
clrscr;
repeat
textbackground(0);
clrscr;
window(50,1,80,5);
textbackground(11);
clrscr;
writeln;
writeln;
writeln(' TEXT MODE');
window(15,10,65,21);
repeat
textbackground(14);
clrscr;
writeln('CASE');
writeln('1 - type of line');
writeln('2 - type of shtrix');
writeln('3 - reklama');
writeln('4 - Grafik');
writeln('5 - diagramma');
writeln('6 - gistogramma');
writeln('7 - uzor');
writeln('8 - multik');
writeln('9 - vihod');
readln(a);
until a in [1..10];
case a of
9:;
1:vivod;
{2:shtrix_packman;
3:advertisement;
4:graphik_sinus;
5:circle_diagramm;
6:stolbik_diagram;
7:holy_copypaste;
8:real_packman;}
else
end;
until a=9;
end.

в Гл. программе ошибка с циклом,прошу ,пожалуйста,объясните как сделать возврат в меню.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Гость






Ты почему, находясь в графическом редиме, используешь процедуры, предназаначенные для режима текстового? Так не пойдет... Смотри, что надо сделать:

1) изменить немного процедуру Vivod (она у тебя графическая, так что переходим в самом начале в граф. режим...)
procedure vivod;
begin
setgraphmode(gm);
... { Дальше - без изменений }
end;


2) подправить основную программу (внутри самого внешнего Repeat/Until выход в текст. режим, чтобы можно было пользоваться всеми процедурами модуля CRT):
Program main7;
uses crt, graph, unit1;
var
a:integer;
begin
repeat
restorecrtmode; { <--- Вот основное изменение !!! }
textbackground(0);
clrscr;
window(50,1,80,5);
textbackground(11);
clrscr;
writeln;
writeln;
writeln(' TEXT MODE');
window(15,10,65,21);
repeat
textbackground(1); { <--- Ну и здесь: textbackground не принимает параметры больше 7 }
clrscr;
writeln('CASE');
writeln('1 - type of line');
writeln('2 - type of shtrix');
writeln('3 - reklama');
writeln('4 - Grafik');
writeln('5 - diagramma');
writeln('6 - gistogramma');
writeln('7 - uzor');
writeln('8 - multik');
writeln('9 - vihod');
readln(a);
until a in [1..10];

case a of
9: ;
1: vivod;
{
2:shtrix_packman;
3:advertisement;
4:graphik_sinus;
5:circle_diagramm;
6:stolbik_diagram;
7:holy_copypaste;
8:real_packman;
}
else
;
end;
readln;
until a=9;

end.
Вот так вот...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Бывалый
***

Группа: Пользователи
Сообщений: 222
Пол: Мужской
Реальное имя: Andrew

Репутация: -  0  +


в меню он помоему возвращается,но вместо нормального меню,идут серые квадраты(на местах window),и остается на фоне процедура из graph.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Гость






Я перед тем как написать сюда, наверное, запустил у себя программу - все работает штатно... Вот архив со всеми изменениями:


Прикрепленные файлы
Прикрепленный файл  mnu.rar ( 1.04 килобайт ) Кол-во скачиваний: 79
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Бывалый
***

Группа: Пользователи
Сообщений: 222
Пол: Мужской
Реальное имя: Andrew

Репутация: -  0  +


всеравно остаются серые поля вместо меню..

Сообщение отредактировано: Andrewshkovskii -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Гость






Не знаю, что ты там творишь - вот EXE-шник вместе с TPU и BGI файлом, ВСЕ эти файлы распакуй в отдельную папку (НЕ ЧАСТЬ, а именно ВСЕ!, включая и EGAVGA.BGI) и запусти EXE... Вот тогда посмотрим, что у тебя остается, а что - нет...


Прикрепленные файлы
Прикрепленный файл  menu_exe.rar ( 18.82 килобайт ) Кол-во скачиваний: 71
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Бывалый
***

Группа: Пользователи
Сообщений: 222
Пол: Мужской
Реальное имя: Andrew

Репутация: -  0  +


спасибо за помощь!пробелма уже решена!=)утром перед инстом додумался что надо было сделать!извини за беспокойство!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 28.09.2020 19:15
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name