• Добро пожаловать на компьютерный форум Tehnari.ru. Здесь разбираемся с проблемами ПК и ноутбуков: Windows, драйверы, «железо», сборка и апгрейд, софт и безопасность. Форум работает много лет, сейчас он переехал на новый движок, но старые темы и аккаунты мы постарались сохранить максимально аккуратно.

    Форум не связан с магазинами и сервисами – мы ничего не продаём и не даём «рекламу под видом совета». Отвечают обычные участники и модераторы, которые следят за порядком и качеством подсказок.

    Если вы у нас впервые, загляните на страницу о проекте и правила – там коротко описано, как задать вопрос так, чтобы быстро получить ответ. Чтобы создавать темы и писать сообщения, сначала зарегистрируйтесь, а затем войдите под своим логином.

    Не знаете, с чего начать? Создайте тему с описанием проблемы – подскажем и при необходимости перенесём её в подходящий раздел.
    Задать вопрос Новые сообщения Как правильно спросить
    Если пришли по старой ссылке со старого Tehnari.ru – вы на нужном месте, просто продолжайте обсуждение.

Модуль Crt

  • Автор темы Автор темы zena
  • Дата начала Дата начала

zena

Новые
Регистрация
11 Ноя 2010
Сообщения
85
Реакции
1
Баллы
0
Модуль Crt

помогите исправить задачу пожалуйста.
Нужно составить так , что бы в данной программе все три режима писались в одну строку, а не в столбик.
Код:
program e;
uses crt;
 type mas= array[1..3] of string[20];
 const
 stor:mas=('режим 1','режим 2','режим 3');
Var
 i,k:byte;
 kod:char;
    begin
     textmode(co80);
     clrscr;
     window(31,11,50,16);
     textbackground(7);
     textcolor(0);
     clrscr;
     k:=1;
     gotoxy(3,2);
     write('Выберите режим');
     kod:=' ';
     while kod<>#13 do
       begin
       for i:=1 to 3 do
        begin
        if i=k then begin
         textbackground(0);
         textcolor(7); end
        else begin
         textbackground(7);
         textcolor(0); end;
       gotoxy(1,i+2);
       write(stor[i]);
        end;
       kod:=readkey;
       sound(700);
       delay(500);
       nosound;
      if kod=#0 then
       begin
       kod:=readkey;
       if kod=#72 then
       if k>1 then
       k:=k-1 else
       k:=3;
       if kod=#80 then if k<3 then
       k:=k+1 else
       k:=1;
       end;
      end;
     window(1,1,80,25);
     gotoxy(33,15);
     write('выбран режим',k);
    end.
 
К сожалению, я не очень разбираюсь в этой textmode, как-то никогда не использовал в своих программах псевдографические возможности этого режима, но так, кое-какие соображения:

1. Почему-то маленькое окно рисуется только при первом запуске программы, при повторном же программы окно разворачивается во весь экран. Вероятно, в конце нужно для полноэкранного окна восстановить исходную (default) палитру. Даже не знаю, есть ли для этого специальная CRT-команда.
2. Зачем Вы задаете длину строк в 20 символов в типе, если дальше в константе stor используются строки длиной 7 символов?
3. Расположение режимов "в столбик" определяется строкой
gotoxy(1,i+2);
Если Вы хотите, чтобы перечень режимов был "в строчку", так надо, во-первых, изменить размеры окна (ужать по вертикали и вытянуть по горизонтали), во-вторых, в операторе gotoxy зафиксировать второй параметр (положение по вертикали) и менять позиции в первом, задавая соответствующие сдвиги по горизонтали, в третьих - поменять коды команд, чтобы реакция была на горизонтальные, а не вертикальные стрелки.

Как-то так.
 
Хм...попробую....может что-то и получится...спасибо.
 
Назад
Сверху