Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 11.02.2012, 15:26   #11
CnpuHTep
Пользователь
 
Регистрация: 11.02.2012
Сообщений: 15
По умолчанию

чем абс хуже?

Цитата:
Сообщение от VIK_aka_TOR Посмотреть сообщение
Код:
procedure KeyDown(Key: integer);
begin
   case Key of
  VK_Left:  Window.Left := Window.Left - 2;
  VK_Right: Window.Left := Window.Left + 2;
  VK_Up:    Window.Top := Window.Top - 2;
  VK_Down:  Window.Top := Window.Top + 2;
   end;
end;

begin
  // Привязка обработчиков к событиям
  OnKeyDown := KeyDown;
end.
что код делает?

стрелки нашел , только они все обозначаются как #0
а это проблемно, нужно отдельные, они существуют?

Последний раз редактировалось Stilet; 12.02.2012 в 16:14.
CnpuHTep вне форума Ответить с цитированием
Старый 11.02.2012, 16:04   #12
VIK_aka_TOR
Участник клуба
 
Аватар для VIK_aka_TOR
 
Регистрация: 30.01.2011
Сообщений: 1,578
По умолчанию

тот код перемещает по экрану форму... в зависимости от нажатой стрелки... стрелка влево - влево двигает... и т.п....
собственно что вам нужно реализовать? если все нето и не так?
пишу код не только за печеньки
VIK_aka_TOR вне форума Ответить с цитированием
Старый 11.02.2012, 17:36   #13
CnpuHTep
Пользователь
 
Регистрация: 11.02.2012
Сообщений: 15
Сообщение

Надо сделать менюшку используя псевдографику, и переходить между кнопочками "выход" и "маршрут" с помощью стрелочек.

мне нужно нарисовать рамку и в ней 2 рамки псевдографикой, и нужно чтобы, между 2 внутреними кнопками передвигаться с помощью клавишь вверх вниз
тоесть вот моя покачто написанная программа
Код:
Program Start;
Uses CRT;
var n,i,a,b,c,x,y: integer;
k: char;
{-----------------------------------------------ß÷åéêà "Ìàðøðóò"------------------------------------------------------------------}
procedure OKHO1;
Begin
 gotoxy(30,9);
 n:=20;
 For x:=1 to n do Write(#6);
 gotoxy(30,11);
 For x:=1 to n do Write(#6);
 gotoxy(29,9);
 Write(#1);
 gotoxy(29,10);
 Write(#5);
 gotoxy(29,11);
 Write(#3);
 gotoxy(50,10);
 Write(#5);
 gotoxy(50,11);
 Write(#4);
 gotoxy(50,9);
 Write(#2);
 gotoxy(30,10);
 Write ('      Ìàðøðóò       ');
 gotoxy(80,25);
 end;
{-----------------------------------------------ß÷åéêà "Âûõîä"------------------------------------------------------------------}
procedure OKHO2;
Begin
gotoxy(30,14);
 n:=20;
 For x:=1 to n do Write(#6);
 gotoxy(30,16);
 For x:=1 to n do Write(#6);
 gotoxy(29,14);
 Write(#1);
 gotoxy(29,15);
 Write(#5);
 gotoxy(29,16);
 Write(#3);
 gotoxy(50,15);
 Write(#5);
 gotoxy(50,16);
 Write(#4);
 gotoxy(50,14);
 Write(#2);
 gotoxy(30,15);
 Write ('       Âûõîä        ');
 gotoxy(80,25);
 end;

Begin
{--------------------------------------------Ïåðâàÿ ðàìêà----------------------------------------------------------}
 gotoxy (16,5);
 n:=49;
 For x:=1 to n do Write(#6);
 gotoxy (16,20);
 For x:=1 to n do Write(#6);
 n:=15;
 For x:=1 to n-1 do
  Begin
   gotoxy(65,x+5);
   Write(#5);
  end;
 For x:=1 to n-1 do
  Begin
   gotoxy(15,x+5);
   Write(#5);
  end;
 gotoxy(15,5);
 Write(#1);
 gotoxy(65,20);
 Write(#4);
 gotoxy(15,20);
 Write(#3);
 gotoxy(65,5);
 Write(#2);
{-----------------------------------------------ß÷åéêà "Ìàðøðóò"------------------------------------------------------------------}
 OKHO1;
{-----------------------------------------------ß÷åéêà "Âûõîä"------------------------------------------------------------------}
 OKHO2;
{-----------------------------------------------Ïåðåìåùåíèå ìåæäó ÿ÷åéêàìè------------------------------------------------------------------}
repeat
k:=readkey;
  if k=#32 then
   begin
    textbackground(white);
    OKHO2;
    textbackground(green);
    OKHO1;
   end;
  if (k=#43) then
   begin
    textbackground(white);
    OKHO1;
    textbackground(green);
    OKHO2;
   end;
   until k=#13{Enter};
   textbackground(white);
   clrscr;
end.
картинка ниже
Изображения
Тип файла: jpg ый.jpg (24.3 Кб, 121 просмотров)
CnpuHTep вне форума Ответить с цитированием
Старый 11.02.2012, 20:59   #14
CnpuHTep
Пользователь
 
Регистрация: 11.02.2012
Сообщений: 15
По умолчанию

тоесть нажимаешь вверх выделяется кнопка "маршрут"
вниз - "выход"
CnpuHTep вне форума Ответить с цитированием
Старый 11.02.2012, 23:37   #15
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

у меня ваша программа выглядит так:


это у меня Pascal ABC "не той системы"?!



p.s. когда вставляете на форуму исходник программы, имеющий в своём составе кириллицу, не забывайте при копировании включить в системе русскую раскладку клавитары. должно помочь..
Serge_Bliznykov вне форума Ответить с цитированием
Старый 12.02.2012, 00:08   #16
CnpuHTep
Пользователь
 
Регистрация: 11.02.2012
Сообщений: 15
Сообщение

Код:
Program Start;
Uses CRT;
var n,i,a,b,c,x,y: integer;
k: char;
{-----------------------------------------------Ячейка "Маршрут"------------------------------------------------------------------}
procedure OKHO1;
Begin
 gotoxy(30,9);
 n:=20;
 For x:=1 to n do Write(#6);
 gotoxy(30,11);
 For x:=1 to n do Write(#6);
 gotoxy(29,9);
 Write(#1);
 gotoxy(29,10);
 Write(#5);
 gotoxy(29,11);
 Write(#3);
 gotoxy(50,10);
 Write(#5);
 gotoxy(50,11);
 Write(#4);
 gotoxy(50,9);
 Write(#2);
 gotoxy(30,10);
 Write ('      Маршрут       ');
 gotoxy(80,25);
 end;
{-----------------------------------------------Ячейка "Выход"------------------------------------------------------------------}
procedure OKHO2;
Begin
gotoxy(30,14);
 n:=20;
 For x:=1 to n do Write(#6);
 gotoxy(30,16);
 For x:=1 to n do Write(#6);
 gotoxy(29,14);
 Write(#1);
 gotoxy(29,15);
 Write(#5);
 gotoxy(29,16);
 Write(#3);
 gotoxy(50,15);
 Write(#5);
 gotoxy(50,16);
 Write(#4);
 gotoxy(50,14);
 Write(#2);
 gotoxy(30,15);
 Write ('       Выход        ');
 gotoxy(80,25);
 end;

Begin
{--------------------------------------------Первая рамка----------------------------------------------------------}
 gotoxy (16,5);
 n:=49;
 For x:=1 to n do Write(#6);
 gotoxy (16,20);
 For x:=1 to n do Write(#6);
 n:=15;
 For x:=1 to n-1 do
  Begin
   gotoxy(65,x+5);
   Write(#5);
  end;
 For x:=1 to n-1 do
  Begin
   gotoxy(15,x+5);
   Write(#5);
  end;
 gotoxy(15,5);
 Write(#1);
 gotoxy(65,20);
 Write(#4);
 gotoxy(15,20);
 Write(#3);
 gotoxy(65,5);
 Write(#2);
{-----------------------------------------------Ячейка "Маршрут"------------------------------------------------------------------}
 OKHO1;
{-----------------------------------------------Ячейка "Выход"------------------------------------------------------------------}
 OKHO2;
{-----------------------------------------------Перемещение между ячейками------------------------------------------------------------------}
repeat
k:=readkey;
  if k=#32 then
   begin
    textbackground(white);
    OKHO2;
    textbackground(green);
    OKHO1;
   end;
  if (k=#43) then
   begin
    textbackground(white);
    OKHO1;
    textbackground(green);
    OKHO2;
   end;
   until k=#13{Enter};
   textbackground(white);
   clrscr;
end.
код
ниже моя версия паскаля и скрин как выглядит прога
(м\б у вас какието траблы в компе, у меня лично не отображается верхний левый угол, а на др машинах всё исправно)
Изображения
Тип файла: jpg 1.jpg (17.5 Кб, 119 просмотров)
Вложения
Тип файла: rar PascalABC.rar (1.38 Мб, 5 просмотров)
CnpuHTep вне форума Ответить с цитированием
Старый 12.02.2012, 00:25   #17
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

скачал вашу версию PascalABC
у меня тоже самое - вместо псевдографики - пустые квадратики (смотри мой пост #19)

вполне возможно, что это связано с моей ОС (Windows XP SP2)...


p.s. а вообще жалко, что людей заставляют заниматься подобными извращениями в псевдо-паскале... (других слов для Pascal ABC у меня нет )
даже старенький DOSвский TurboPascal - и то лучше.
Я уже не говорю про "настоящие" компиляторы, это PABC, имхо, он и в подмётки не годится Delphi/FreePascal...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 12.02.2012, 01:25   #18
CnpuHTep
Пользователь
 
Регистрация: 11.02.2012
Сообщений: 15
По умолчанию

На самом деле паскаль можно использовать любой, но я предпочитаю абс, это первое затруднение каторое я ощутил в нём (не могу найти коды стрелок)
просто я думал что тут то на форуме должен же кто то знать это, в интернете не нашел, долго искал,но того что нужно нету =(
Покачто надеюсь на вас, потом с преподом попробую договориться чтобы на другие клавиши мне позволил сделать, но я думаю он врятли согласится
CnpuHTep вне форума Ответить с цитированием
Старый 12.02.2012, 03:26   #19
Blondy
Участник клуба
 
Аватар для Blondy
 
Регистрация: 07.07.2009
Сообщений: 1,385
По умолчанию

Вот я знаю, что в Дельфи точно был способ "потестить" клавиатуру на предмет получения кодов клавиш. Наверняка здесь тоже можно поискать подобный метод, хотя я не сталкивалась с АВС Паскалем. Может, Дельфийские коды подойдут тоже? И не забывайте, что у всех раскладки разные и то, что у одних работает как стрелочка вверх или вниз, на другой раскладке будет молчать....

Сейчас я что-то вразумительное гляну....

Вот я с одного Паскального кода стянула - похоже на стрелки.... Попробуйте

#80 : Down;
#72 : Up;
#75 : Left;
#77 : Right;
#13 : Enter;
#27 Esc;

Тут я еще нашла ссылку как тестить клавиатуру с использованием функции ReadKey. Предлагают использовать какую-то функци Ord, но я, к сожалению, с ней не сталкивалась..... Для Дельфи тестила через ReadKey.

http://www.pascal.su/readkey/
"Все мы жаждем чудес. Чисто человеческое свойство." Carl Sagan

Последний раз редактировалось Stilet; 12.02.2012 в 16:16.
Blondy вне форума Ответить с цитированием
Старый 12.02.2012, 12:20   #20
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

угу. что касается кодов клавиш, то Blondy абсолютно права.

Кстати, в качестве примера текстового меню я обычно тут на форуме предлагаю (причём уже неоднократно) такой код для TurboPascal (сейчас проверил его в Pascal ABC он тоже работает без проблем):
Код:
{ Пример создания и использования меню }
program menu2;
uses Crt;
const
     NORM=$17; { цвет невыделеного пункта }
     SEL=$70;  { цвет выделенного пункта }
     N=3;      {количество пунктов в меню}
var
     menu:array[1..N] of string[12];{ названия пунктов меню }
     punkt:integer;  { номер выделенного пункта }
     ch:char;        { введенный символ }
     x,y:integer;    { координаты первой строки меню }

Procedure punkt1;
begin
     ClrScr;
     writeln('Процедура 1.Нажмите <Enter> для продолжения.');
     readln;
end;

Procedure punkt2;
begin
     ClrScr;
     writeln('Процедура 2.Нажмите <Enter> для продолжения.');
     readln;
end;

Procedure MenuToScr;{ вывод меню на экран }
var i:integer;
begin
     ClrScr;
     for i:=1 to N do begin
          GoToXY(x,y+i-1);
          write(menu[i]);
     end;
     TextAttr:=SEL;
     GoToXY(x,y+punkt-1);
     write(menu[punkt]);{ выделим строку меню }
     TextAttr:=NORM;
end;
{ основная программа }
begin
     menu[1]:=' Действие 1 ';
     menu[2]:=' Действие 2 ';
     menu[3]:=' Выход ';
     punkt:=1;
     x:=5;
     y:=5; TextAttr:=NORM;
     MenuToScr;
     repeat
          ch:=ReadKey;
          if ch=char(0) then begin
               ch:=ReadKey;
               case ch of
                    chr(80):{ стрелка вниз }
                         if punkt<N then begin
                              GoToXY(x,y+punkt-1);
                              write(menu[punkt]);
                              punkt:=punkt+1;
                              TextAttr:=SEl;
                              GoToXY(x,y+punkt-1);
                              write(menu[punkt]);
                              TextAttr:=NORM;
                         end;
                    chr(72):{ стрелка вверх }
                         if punkt>1 then begin
                              GoToXY(x,y+punkt-1);
                              write(menu[punkt]);
                              punkt:=punkt-1;
                              TextAttr:=SEl;
                              GoToXY(x,y+punkt-1);
                              write(menu[punkt]);
                              TextAttr:=NORM;
                         end;
                 end;
              end
          else
               if ch=chr(13) then begin { нажата клавиша <Enter> }
                    case punkt of
                         1:punkt1;
                         2:punkt2;
                         3:ch:=chr(27);{ выход }
                    end;
                    MenuToScr;
               end;
     until ch=chr(27);{ 27 - код <Esc> }
end.

а вот насчёт символов псевдографики - это не ко мне. мне так и не удалось в этом Pascal ABC их увидеть...
Для TurboPascal хотите решение вашей задачи?
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Нужно исправить ошибки!Pascal ABC Очень надо! Metanoia Помощь студентам 1 13.07.2011 13:36
Получить строку символов из строки их кодов Baaandit Общие вопросы Delphi 3 10.11.2009 15:43
Очень нужна помощь c матрицами, макросами в Excel. Заранее благодарен(поверьте, очень-очень нужна помощь) Farridjan Помощь студентам 1 03.07.2009 12:24
Очень сложная задача на Pascal ABC! d00ker Помощь студентам 8 11.02.2009 22:02
Очень нужна помощь в переводе символов в ASCII и обратно !!!~VivO~!!! Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 1 05.05.2008 10:47