Помощь - Поиск - Пользователи - Календарь
Полная версия: Помогите сделать меню
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Georgich
Вот я выкладываю файл (модуль) меню, но он сделан без модуля graph. А надо с этим модулем, но в graph я плохо разбираюсь. Посмотрите, кто-нибудь мой файл и если несложно, сможете сделать окно, в котором были бы строчки, как у меня в модуле. И чтобы окно было по типу Norton Commander'а, но не на весь экран!
Заранее спасибо!
volvo
Georgich,
Ну вот я выдрал из своей старой программы меню для графического режима, посмотри, может пойдет... Единственное, что тебе надо будет сделать - это поменять строки в массиве mainMenu и подставить нужные вызовы процедур в
Case menuScreen Of
... { здесь }
End;


Но учти, что это графический режим, и если сама процедура работает в текстовом - тебе надо будет вызывать процедуры вот так:
Case menuScreen Of
optOne:
begin
RestoreCrtMode; { переходим в текстовый режим }
{ здесь - запускаешь свою процедуру }
SetGraphMode(GetGraphMode); { назад в графический режим }
end;
...
End { case }

Если что - спрашивай ;)

Файл EGAVGA.OBJ (он в архиве) должен быть в той же директории, что и программа...
Georgich
2 volvo
Блин, чего-то сложновато...А для чего этот EGAVGA.OBJ нужен? Нет, все-таки попроще будет через CRT, хотя преподы хотят, чтобы в работе окошки присутсвовали и все так красиво было! Они сами этого нифига не объясняют,а мне вас тут надо мучать на форуме.
Еще вопрос, а окошко, которое у меня начерчено можно заоить как-нибудь или этот только в графическом режиме?
volvo
Ну ты сначала для себя-то реши, что ты хочешь - текст или графику... А потом спрашивай. Нужно в тексте, сделаем в тексте smile.gif ПСЕВДОграфику еще никто не отменял...
Georgich
Вообщем в пятницу решу чего делать...ПСЕВДОграфическое меню или оставить как было у меня. Правда появятся другие вопросы, ведь это только часть моего курсовика, а он приличный по объему blink.gif
volvo
Вот, например, я просто заставил твой модуль работать по-другому... Проверь...

Кстати, у тебя и было "псевдографическое" ... smile.gif
Georgich
volvo спасибо, классное меню, есть еще вопрос. У меня там задается массив на нажатие клавиш, а как сделать динамический массив на нажатие клавиш, а то преподов все приспичивает на динамику. Говорят, ПОЛНАЯ ДИНИМИКА должна быть, понимаешь :D
Altair
динамика в FAQ'e
Georgich
Не стал создавать отдельную тему, поэтому решил написать сюда, хоть к меню это и не относится.
Посмотрите, пожалуйста, прикрепленный файл и если сможете исправьте его так, чтобы там просто напрасто не было функции 1 (f1), а чтобы была только функция 2 (f2). Сколько не пытался выдрать из проги первую функцию, вторую она считать отказывалась sad.gif
Помогите, плиз
volvo
Ну и правильно, я бы тоже отказался... Ты можешь сказать, чему равно Y при входе в эту функцию?
function f2(a:real):real;
const eps=0.0001;
var y,s,k,kp:real;
i:integer;
begin
k:=y; { и ты присваиваешь это в K }
s:=0;
i:=1;
repeat
s:=s+k;
i:=i+1;
kp:=k;
k:=(k*(-y))/i; { и вот тут возникает переполнение }
until abs(k-kp)<eps;
f2:=s;
end;
Georgich
2 volvo
а юзер сам вводит y. Но обычно y < 0
Да дело не в этом....Надо чтобы в программе была всего одна функция f2, а f1 надо выкинуть из программы, а у меня это не получается huh.gif
Georgich
Теперь вопрос более менее по меню. Как мне сделать, чтобы ВЕСЬ экран залился синим цветом, вместо черного, и оконтовка у экрана была как у Турбо Паскаля?
Еще раз спасибо!
volvo
Цитата(Georgich @ 21.04.05 17:49)
а юзер сам вводит y. Но обычно y < 0
Да дело не в этом....

Да нет, как раз именно в этом дело... Ты же программе должен сказать, что юзер вводит Y... а так она берет случайно оказавшееся в памяти на этом месте значение, и из-за этого и происходит сбой... Инициализируй чем-нибудь Y и все прекрасно будет работать и без f1...

В аттаче - программа, в которой я закомментировал вызов F1 ... Но при запуске - вылетает, я проверил начальное значение Y = 5.4x10^14... вот тебе и причина. А ты говоришь "неважно"...
Georgich
У меня вообще задача посчитать сумму ряда
y-y^2/2!+y^3/3!-y^4/4!+...
Ну вот надо множитель правильно вывести, раз вы говорите, что там переполнение идет
FreeMan
дык похожих задач на форуме уйма.
Georgich
Ладно, а как насчет моего 12 поста???
FreeMan
установить синий цвет фона и сделать clrscr - синий экран. оконтовка - смотри таблицу символов
volvo
Ну, вообще-то для знакопеременного ряда я бы делал так:
function f2(a: real): real;
const
eps = 0.0001;
var
s, next: real;
isMinus: boolean;
i: integer;
begin
isMinus := false;
next := a; { иначе я вообще не понимаю, зачем его передавать }
s := next;
i := 2;
repeat
isMinus := not isMinus;
next := next * a / i;
s := s + (1 - 2 * byte(isMinus)) * next;
inc(i)
until next < eps;
f2 := s
end;


Только учти, что при некоторых условиях ряд будет расходиться и программа просто зависнет... Я бы еще проверял i на достижение некоторого числа итераций (например 200). И если ряд не сходится, то после 200 итераций выходить из функции...
Georgich
2 FreeMan
Какими командами-то??? Это я и без тебя знаю, что оконтовку по таблице ASCII делать надо, но там правая граница кривая получается.....Вот фигня, блин!

Знаешь - делай. Я тебе меню сделал - край ровный был - вот и делай в таком же стиле. А за выражениями следи angry.gif
Georgich
2 volvo
Всегда хотел спросить, что означает inc? Интересно, увидев этот кусок программы (функцию F1) у нас препод с ума на сойдет, потому что мы так никогда не делали?
volvo
Цитата(Georgich @ 21.04.05 20:05)
Всегда хотел спросить, что означает inc?

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

Учи матчасть...
Atos
Цитата
Теперь вопрос более менее по меню. Как мне сделать, чтобы ВЕСЬ экран залился синим цветом, вместо черного, и оконтовка у экрана была как у Турбо Паскаля?
Возиожно, тебе будет интересно поработать с библиотечкой Turbo Vision, модули которой поставляются вместе с Турбо Паскалем. Она позволит сделать "окно как в Паскале" всего тремя строчками кода smile.gif да собственно и паскальская среда была написална на ней ;) Можешь почитать о Tubo Vision , например, в Фаронове
SunDevil
Вот снова проблема. В прикрепленном файле есть я сделал исходник меню с вашей помощью, но не получается одна вещь : когда в меню выбираем пункт "Справка", то должно появитсяокно чуть больше менюшного (менюшное должно на время исчезнуть), в котором должна бать краткая справка по курсовику. Ну и соответсвенно, должна быть какая-нибудь кнопка или что-то в этом роде, чтобы из окна справки вернуться опять в меню. Очень надеюсь, что вы мне поможете!
СПАСИБО!
SunDevil
ТОВАРИЩИ!
Помогите, плиз! А то очень надо....не могу с этими window разобраться, да и сейчас делаю основную часть курсовика - прогу на матрицу пишу....
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.