На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
Название темы должно быть информативным !
Прежде чем задать вопрос, воспользуйтесь Поиском. и проверьте в FAQ (ЧАВО) Паскаля
Чтобы получить вразумительный ответ, подробно опишите проблему: что надо сделать, что не получается и номер ошибки (если есть), которую выводит компилятор.
Для вставки кода ваших программ используйте, пожалуйста, кнопку СODE=pas или выпадающий список СODE для других языков (подсветка синтаксиса).
[!] Как правильно задавать вопросы | Руководство по языку B.Pascal 7 & Objects/LR | Borland Pascal. Руководство пользователя
Модераторы: volvo877
  
> Модуль Dos не найден
    Всем привет! Есть код:
    ExpandedWrap disabled
      Program Space;
        Uses Graph, Crt,Dos;
        const centrx=300;
              centry=160;
       
      procedure vretrace;
         begin
         repeat until port[$3da] and 8=0;
         repeat until port[$3da] and 8>0;
         end;
       
      procedure game;
      var ZemX, ZemY,MercX,MercY,MarsX,MarsY,VenerX,VenerY,UpiterX,UpiterY,SatX,SatY:integer;
          VisualPage,i:Integer;
      begin
      repeat
      SetVisualPage(1-VisualPage);
          VisualPage := VisualPage+1;
              SetActivePage(1 -VisualPage);
        vretrace;
          ClearDevice;
       
          For i := 1 to 100 do
            PutPixel(centrx+Round(70*cos((i+VisualPage/9)*Pi/50+0.7)),
            centry+Round(60*sin((i+VisualPage/9)*Pi/50-Pi/500)),1);
       
              For i := 1 to 100 do
            PutPixel(centrx+Round(90*cos((i+visualpage/7)*Pi/50+0.7)),
            centry+Round(83*sin((i+visualpage/7)*Pi/50-Pi/500)),2);
          
            For i := 1 to 100 do
            PutPixel(centrx+Round(110*cos((i+VisualPage/7)*Pi/50+0.65)),
            centry+Round(100*sin((i+VisualPage/7)*Pi/50-Pi/500)),3);
       
            For i := 1 to 100 do
            PutPixel(centrx+Round(131*cos((i+VisualPage/7)*Pi/50+0.65)),
            centry+Round(120*sin((i+VisualPage/7)*Pi/50-Pi/500)),4);
       
            For i := 1 to 100 do
            PutPixel(centrx+Round(173*cos((i+VisualPage/5)*Pi/50+0.70)),
            centry+Round(155*sin((i+VisualPage/5)*Pi/50-Pi/500)),5);
       
            For i := 1 to 100 do
            PutPixel(centrx+Round(212*cos((i+VisualPage/5)*Pi/50+0.65)),
            centry+Round(195*sin((i+VisualPage/5)*Pi/50-Pi/500)),6);
           {--------------------------------------------------------------}
            {mercury}
          MercX :=centrx-Round(70*cos((i-VisualPage/5)*Pi/50+0.7));
          MercY:=centry-Round(60*sin((i-VisualPage/5)*Pi/50-Pi/500));
          setcolor(lightgray);
          circle(MercX,MercY,4);
          SetFillStyle(1,LightGray);
          floodfill(MercX,MercY,lightgray);
          outtextxy(MercX-13,MercY-8,'1');
          {---------------------------------------------------------------}
          {venera}
          VenerX :=centrx-Round(90*cos((i-VisualPage/4)*Pi/50+0.7));
          VenerY:=centry-Round(83*sin((i-VisualPage/4)*Pi/50-Pi/500));
          setcolor(lightred);
          circle(VenerX,VenerY,7);
          SetFillStyle(1,Lightred);
          floodfill(VenerX,VenerY,lightred);
          outtextxy(VenerX-13,VenerY-10,'2');
        {-----------------------------------------------------------------}
           {zemlia}
          ZemX:=centrX+Round(110*cos((i-VisualPage/3)*Pi/50+0.65));
          ZemY:=centrY+Round(100*sin((i-1-VisualPage/3)*Pi/50-Pi/500));
          setcolor(lightblue);
          circle(ZemX,ZemY,7);
          SetFillStyle(1,Lightblue);
          setcolor(2);
          circle(ZemX,ZemY,7);
          SetFillStyle(1,2);
          floodfill(ZemX,ZemY,2);
       setcolor(blue);
          circle(zemx+1,zemy+1,3);
       SetFillStyle(1,blue);
          floodfill(ZemX,ZemY,blue);
          circle(zemx+3,zemy-3,2);
       SetFillStyle(1,blue);
          floodfill(ZemX+3,ZemY-3,blue);
          circle(zemx-4,zemy-4,2);
       SetFillStyle(1,blue);
          floodfill(ZemX-4,ZemY-4,blue);
       setcolor(2);
          outtextxy(ZemX-13,ZemY-10,'3');
        {-----------------------------------------------------------------}
          MarsX:=Centrx+Round(131*cos((i-VisualPage/2)*Pi/50+0.65));
          MarsY:=Centry+Round(120*sin((i-VisualPage/2)*Pi/50-Pi/500));
          setcolor(6);
          circle(MarsX,MarsY,4);
          SetFillStyle(1, 6);
          floodfill(MarsX,MarsY,6);
          outtextxy(Marsx-11,MarsY-1,'4');
      {---------------------------------------------------------------------}
      {Upiter}
          UpiterX:=Centrx+Round(173*cos((i-VisualPage/1)*Pi/50+0.7));
          UpiterY:=Centry+Round(155*sin((i-VisualPage/1)*Pi/50-Pi/500));
          setcolor(6);
          circle(UpiterX,UpiterY,12);
          SetFillStyle(1, 6);
          floodfill(UpiterX,UpiterY,6);
          outtextxy(Upiterx-15,UpiterY+10,'5');
      {---------------------------------------------------------------------}
      {Saturn}
          SatX:=Centrx+Round(212*cos((i-VisualPage/5)*Pi/50+0.65));
          SatY:=Centry+Round(195*sin((i-VisualPage/5)*Pi/50-Pi/500));
          setcolor(9);
          circle(SatX,SatY,12);
          setfillstyle(1,9);
          floodfill(SatX,SatY,9);
          setcolor(13);
          ellipse(Satx,Saty-1,29,20,28,5);
          outtextxy(Satx-22,SatY+10,'6');
          setcolor(9);
          line(satx-10,saty-6,satx+10,saty-6);
      {---------------------------------------------------------------------}
        {solnce}
        setcolor(yellow);
        circle(300,160,30);
        SetFillStyle(1, yellow);
        floodfill(300,160,yellow);
        For i := 1 to 100 do
        line(300,160,centrx+Round(31*cos((i+VisualPage/2)*Pi/50)),centry+Round(25*sin((i+VisualPage/2)*Pi/50-Pi/500)));
       {----------------------------------------------------------------}
           OutTextXY(centrx+215,centry+20,'Planets');
           OutTextXY(centrx+200,centry+35,'1 - Mercury');
           OutTextXY(centrx+200,centry+50,'2 - Venera');
           OutTextXY(centrx+200,centry+65,'3 - Earth');
           OutTextXY(centrx+200,centry+80,'4 - Mars');
           OutTextXY(centrx+200,centry+95,'5 - Upiter');
           OutTextXY(centrx+200,centry+110,'6 - Saturn');
       
       
      until keyPressed
       
      end;
      Procedure MainMenu;
      Const menu:array[1..2] of string[20]=('New game!','Exit');
      Var i,y1: integer;
          pos:byte;
          kb:char;
      Begin
      kb:=#1;
      SetTextStyle(4,0,2);
      pos:=1; y1:=centry-30;
      for i:=1 to 2 do
      begin
      if i=pos then
      begin
           setcolor(1);
           OutTextXY(230,y1,'New game!');
           end
      else begin
                setcolor(15);
                OutTextXY(230,y1,'Exit');
           end;
       
      y1:=y1+30;
      end;
      repeat
      y1:=centry-30;
      kb:=readkey;
      case kb of
                #72:if pos>1 then
                                 Dec(pos)
                                 else pos:=3;
       
                #80:if pos<2 then
                                 Inc(pos)
                                 else pos:=1;
      end;
       
      for i:=1 to 2 do
      begin
      if i=pos then
      begin
           setcolor(1);
           OutTextXY(230,y1,menu[i]);
        end
      else begin
                setcolor(15);
                OutTextXY(230,y1,menu[i]);
            end;
      y1:=y1+30;
      end;
      until kb=#13;
      begin
           if pos=1 then begin  game;
                                cleardevice;
                     end;
       
           if pos=2 then
                       halt;
                    end;
       
      end;
       
      procedure grinit;
      var GrMode, GrError,GrDriver:Integer;
       
      begin
      GrDriver := EGA; GrMode := EGAHi;
        InitGraph(GrDriver, GrMode, 'C:\TP\BGI');
        GrError := GraphResult;
      end;
        Var
          ch:char;
       {   k:integer;}
       
      BEGIN
      Grinit;
      MainMenu;
       
       
      END.

    Теоретически должна создаваться модель солнечной системы, но что то нет. Пишу на PascalABC, выдает ошибку "Модуль Dos не найден". Судя по всему, я его не подключил? :D Вопрос - как это сделать, если это так? Во избежании дальнейших вопросов, прошу запустить, у кого запуститься, вдруг еще какие то ошибки будут. Заранее спасибо!
      Цитата Prapor48 @
      я его не подключил?

      Сначала убедись, что он у тебя есть.
        Цитата min@y™ @
        Сначала убедись, что он у тебя есть.

        Ну так, а как это сделать? Он качается и устанавливается, или как? Извините за такие вопросы.




        Исправил ошибку, ответ нашел на просторах паутины, код теперь выглядит так:
        ExpandedWrap disabled
          Program Space;
            Uses GraphABC;
            const centrx=300;
                  centry=160;
           
          procedure vretrace;
             begin
             repeat until port [$3da] and 8=0;
             repeat until port [$3da] and 8>0;
             end;
           
          procedure game;
          var ZemX, ZemY,MercX,MercY,MarsX,MarsY,VenerX,VenerY,UpiterX,UpiterY,SatX,SatY:integer;
              VisualPage,i:Integer;
          begin
          repeat
          SetVisualPage(1-VisualPage);
              VisualPage := VisualPage+1;
                  SetActivePage(1 -VisualPage);
            vretrace;
              ClearDevice;
           
              For i := 1 to 100 do
                PutPixel(centrx+Round(70*cos((i+VisualPage/9)*Pi/50+0.7)),
                centry+Round(60*sin((i+VisualPage/9)*Pi/50-Pi/500)),1);
           
                  For i := 1 to 100 do
                PutPixel(centrx+Round(90*cos((i+visualpage/7)*Pi/50+0.7)),
                centry+Round(83*sin((i+visualpage/7)*Pi/50-Pi/500)),2);
              
                For i := 1 to 100 do
                PutPixel(centrx+Round(110*cos((i+VisualPage/7)*Pi/50+0.65)),
                centry+Round(100*sin((i+VisualPage/7)*Pi/50-Pi/500)),3);
           
                For i := 1 to 100 do
                PutPixel(centrx+Round(131*cos((i+VisualPage/7)*Pi/50+0.65)),
                centry+Round(120*sin((i+VisualPage/7)*Pi/50-Pi/500)),4);
           
                For i := 1 to 100 do
                PutPixel(centrx+Round(173*cos((i+VisualPage/5)*Pi/50+0.70)),
                centry+Round(155*sin((i+VisualPage/5)*Pi/50-Pi/500)),5);
           
                For i := 1 to 100 do
                PutPixel(centrx+Round(212*cos((i+VisualPage/5)*Pi/50+0.65)),
                centry+Round(195*sin((i+VisualPage/5)*Pi/50-Pi/500)),6);
               {--------------------------------------------------------------}
                {mercury}
              MercX :=centrx-Round(70*cos((i-VisualPage/5)*Pi/50+0.7));
              MercY:=centry-Round(60*sin((i-VisualPage/5)*Pi/50-Pi/500));
              setcolor(lightgray);
              circle(MercX,MercY,4);
              SetFillStyle(1,LightGray);
              floodfill(MercX,MercY,lightgray);
              outtextxy(MercX-13,MercY-8,'1');
              {---------------------------------------------------------------}
              {venera}
              VenerX :=centrx-Round(90*cos((i-VisualPage/4)*Pi/50+0.7));
              VenerY:=centry-Round(83*sin((i-VisualPage/4)*Pi/50-Pi/500));
              setcolor(lightred);
              circle(VenerX,VenerY,7);
              SetFillStyle(1,Lightred);
              floodfill(VenerX,VenerY,lightred);
              outtextxy(VenerX-13,VenerY-10,'2');
            {-----------------------------------------------------------------}
               {zemlia}
              ZemX:=centrX+Round(110*cos((i-VisualPage/3)*Pi/50+0.65));
              ZemY:=centrY+Round(100*sin((i-1-VisualPage/3)*Pi/50-Pi/500));
              setcolor(lightblue);
              circle(ZemX,ZemY,7);
              SetFillStyle(1,Lightblue);
              setcolor(2);
              circle(ZemX,ZemY,7);
              SetFillStyle(1,2);
              floodfill(ZemX,ZemY,2);
           setcolor(blue);
              circle(zemx+1,zemy+1,3);
           SetFillStyle(1,blue);
              floodfill(ZemX,ZemY,blue);
              circle(zemx+3,zemy-3,2);
           SetFillStyle(1,blue);
              floodfill(ZemX+3,ZemY-3,blue);
              circle(zemx-4,zemy-4,2);
           SetFillStyle(1,blue);
              floodfill(ZemX-4,ZemY-4,blue);
           setcolor(2);
              outtextxy(ZemX-13,ZemY-10,'3');
            {-----------------------------------------------------------------}
              MarsX:=Centrx+Round(131*cos((i-VisualPage/2)*Pi/50+0.65));
              MarsY:=Centry+Round(120*sin((i-VisualPage/2)*Pi/50-Pi/500));
              setcolor(6);
              circle(MarsX,MarsY,4);
              SetFillStyle(1, 6);
              floodfill(MarsX,MarsY,6);
              outtextxy(Marsx-11,MarsY-1,'4');
          {---------------------------------------------------------------------}
          {Upiter}
              UpiterX:=Centrx+Round(173*cos((i-VisualPage/1)*Pi/50+0.7));
              UpiterY:=Centry+Round(155*sin((i-VisualPage/1)*Pi/50-Pi/500));
              setcolor(6);
              circle(UpiterX,UpiterY,12);
              SetFillStyle(1, 6);
              floodfill(UpiterX,UpiterY,6);
              outtextxy(Upiterx-15,UpiterY+10,'5');
          {---------------------------------------------------------------------}
          {Saturn}
              SatX:=Centrx+Round(212*cos((i-VisualPage/5)*Pi/50+0.65));
              SatY:=Centry+Round(195*sin((i-VisualPage/5)*Pi/50-Pi/500));
              setcolor(9);
              circle(SatX,SatY,12);
              setfillstyle(1,9);
              floodfill(SatX,SatY,9);
              setcolor(13);
              ellipse(Satx,Saty-1,29,20,28,5);
              outtextxy(Satx-22,SatY+10,'6');
              setcolor(9);
              line(satx-10,saty-6,satx+10,saty-6);
          {---------------------------------------------------------------------}
            {solnce}
            setcolor(yellow);
            circle(300,160,30);
            SetFillStyle(1, yellow);
            floodfill(300,160,yellow);
            For i := 1 to 100 do
            line(300,160,centrx+Round(31*cos((i+VisualPage/2)*Pi/50)),centry+Round(25*sin((i+VisualPage/2)*Pi/50-Pi/500)));
           {----------------------------------------------------------------}
               OutTextXY(centrx+215,centry+20,'Planets');
               OutTextXY(centrx+200,centry+35,'1 - Mercury');
               OutTextXY(centrx+200,centry+50,'2 - Venera');
               OutTextXY(centrx+200,centry+65,'3 - Earth');
               OutTextXY(centrx+200,centry+80,'4 - Mars');
               OutTextXY(centrx+200,centry+95,'5 - Upiter');
               OutTextXY(centrx+200,centry+110,'6 - Saturn');
           
           
          until keyPressed
           
          end;
          Procedure MainMenu;
          Const menu:array[1..2] of string[20]=('New game!','Exit');
          Var i,y1: integer;
              pos:byte;
              kb:char;
          Begin
          kb:=#1;
          SetTextStyle(4,0,2);
          pos:=1; y1:=centry-30;
          for i:=1 to 2 do
          begin
          if i=pos then
          begin
               setcolor(1);
               OutTextXY(230,y1,'New game!');
               end
          else begin
                    setcolor(15);
                    OutTextXY(230,y1,'Exit');
               end;
           
          y1:=y1+30;
          end;
          repeat
          y1:=centry-30;
          kb:=readkey;
          case kb of
                    #72:if pos>1 then
                                     Dec(pos)
                                     else pos:=3;
           
                    #80:if pos<2 then
                                     Inc(pos)
                                     else pos:=1;
          end;
           
          for i:=1 to 2 do
          begin
          if i=pos then
          begin
               setcolor(1);
               OutTextXY(230,y1,menu[i]);
            end
          else begin
                    setcolor(15);
                    OutTextXY(230,y1,menu[i]);
                end;
          y1:=y1+30;
          end;
          until kb=#13;
          begin
               if pos=1 then begin  game;
                                    cleardevice;
                         end;
           
               if pos=2 then
                           halt;
                        end;
           
          end;
           
          procedure grinit;
          var GrMode, GrError,GrDriver:Integer;
           
          begin
          GrDriver := EGA; GrMode := EGAHi;
            InitGraph(GrDriver, GrMode, 'C:\TP\BGI');
            GrError := GraphResult;
          end;
            Var
              ch:char;
           {   k:integer;}
           
          BEGIN
          Grinit;
          MainMenu;
           
           
          END.

        И ругается так: неизвестное имя "port". Почему так?
        Сообщение отредактировано: Prapor48 -
          Язык один паскаль, а диалекты разные. Ваш код написан для Turbo Pascal. А компилируете вы в Паскаль ABC.
          Turbo Pascal - это устаревшая технология 80-90 тых годов. Паскаль ABC это выкидыш нашей "науки". В попытке возродить о что ушло в прошлое.

          Слово port служит для доступа к аппаратуре в Turbo Pascal(TP). В паскале ABC его нету. Не сделали.

          Так как с целью увеличения безопасности, прямой доступ к аппаратуре начали запрещать ещё с конца 80-тых. Начиная с Win 2000 такой способ окончательно закрыт.

          ExpandedWrap disabled
            procedure vretrace;
            begin
              repeat until port[$3da] and 8=0;
              repeat until port[$3da] and 8>0;
            end;

          Этот код остался на задворках истории и заменить его нечем. Но просто так его выкинуть нельзя. Я рекомендую вместо этих строчек кода сделать паузу командой sleep(10);
            Цитата Pavia @
            Язык один паскаль, а диалекты разные. Ваш код написан для Turbo Pascal. А компилируете вы в Паскаль ABC.
            Turbo Pascal - это устаревшая технология 80-90 тых годов. Паскаль ABC это выкидыш нашей "науки". В попытке возродить о что ушло в прошлое.

            Слово port служит для доступа к аппаратуре в Turbo Pascal(TP). В паскале ABC его нету. Не сделали.

            Так как с целью увеличения безопасности, прямой доступ к аппаратуре начали запрещать ещё с конца 80-тых. Начиная с Win 2000 такой способ окончательно закрыт.

            Всё сделал как высказали, скачал Turbo Pascal School Pak, там вроде бы уже все настроено и подключено. Прогресс, запускается, даже если не меняю код, то есть что со старым, что со sleep(10), появляется exe файл, запускаю его, и всё. Он открывается и тут же закрывается. Сижу на XP. Где я опять накосячил?
              Prapor48
              Цитата Prapor48 @
              Всё сделал как высказали, скачал Turbo Pascal School Pak,

              Я такого не говорил. Тем более School Pak, я бы не брал. Это неофициальная сборка и с такими я не работал.
              Цитата Prapor48 @
              Сижу на XP. Где я опять накосячил?

              В 90-тых XP не было. Для Turbo Pascal нужен DOS или его эмулятор.

              И не забываем, что в строчке с InitGraph надо указать правильный путь к драйверу.
              InitGraph(GrDriver, GrMode, 'C:\TP\BGI');
                Цитата Prapor48 @
                Он открывается и тут же закрывается.

                У программы код дурацкий. Может вылетать при запуске. Если при запуске сработает тройное нажатие Enter, то выйдет из программы. Хотя такое событие маловероятное один раз на милион если не больше.

                В эмуляторе запустил картинка красивая.
                Прикреплённый файлПрикреплённый файл_________________________________.png (13,22 Кбайт, скачиваний: 1193) ]
                Сообщение отредактировано: Pavia -
                  Да я скачал то скул пак, потому что там уже все подключено, а сейчас попробовал в простом турбо паскале забить код. Жалуется что нету graph. Скачал его, закинул в папку, прописал путь, не получается. Прописал и создал путь как у вас, в C:\TP\BGI, опять жалуется. Хорошо, что хоть заработала. Можете рассказать поподробнее как запустили то? :D
                      Цитата Pavia @
                      Установка и настройка BP7.0 для WindowsXP
                      Видео сборки Space.pas

                      Ух ты, ну прям мини квест! Спасибо большое! Сделал все один в один, небольшие различия только когда путь прописываешь в свойствах компьютера, но это из за пути наверное. У меня вот так выглядит: C:\Program Files\NVIDIA Corporation\PhysX\Common;C:\Documents and Settings\All Users\Application Data\Oracle\Java\javapath;%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;C:\BP7.0\BIN. Тут просто надо стереть и написать C:\ как я понял. Дальше совсем интересно, микропроцессорными кодами был удивлён, у меня такой предмет в вузе, так что было прям знакомо. Но после того как makefile прописал все равно в консоли ошибка появляется, такая же как и до этого была. Я уже обрадовался прям, думаю все, сейчас заработает, ага. Не получилось блин. Свой код собирать не пробовал, не получится, я так думаю.
                        В path надо добавить ";C:\BP7.0\BIN". Если он есть то добавлять не надо.
                        Это нужно для автоматизации. Что-бы при вызове в командной строке make, bp, tasm ОС могла сразу найти нужные утилиты. Иначе придётся везде прописывать полные пути к ним.

                        С ассемблером можете не возится. Для тех у кого BP версии 7.1 или 7.01 это не нужно.
                        Для тех у кого 7.0 могут взять файл во вложении и просто замените им свой.
                        Это нужно для устроения ошибки runtime 200: Division by zero.
                        Прикреплённый файлПрикреплённый файлTURBO.zip (28,52 Кбайт, скачиваний: 236)
                        Сообщение отредактировано: Pavia -
                          Pavia, спасибо Вам огромное! Просто большое, простое человеческое спасибо! Вы мне очень помогли! Все заработало! Спасибо!
                            Pavia написал в личку. Может кто то еще подсказать, как запустить сие на Win7? Скачал вот XP Mode, но там какая то беда с путями указания файла, не пойму как указать нормально.
                              Prapor48
                              Для Windows Vista, Windows 7, Winoes8. Windows 10 нужен эмулятор доса.
                              К примеру DosBox. И да DosBox надо настроить. А то по умолчанию по нажатию клавиши F9 досбокс закрывается.
                                PaviaОкей, DosBox есть, когда то программировали в нем на ассемблере, но паскаль я там никогда не запускал. Сейчас попробовал покопаться - безрезультатно. Можете помочь настроить его или показать как там запустить мою программу.
                                  Там был какой-то прикол с преждевременным переполнением счётчика на быстрых машинах. Так что, к праху прах, оставьте тлен. Если очень нужен именно Паскаль, то берите Lazarus, FreePascal, Delphi.
                                    Запустил через вышеупомянутый School Pack, но не сразу. Выскакивала ошибка 201, что то там кого то там. Исправлялась взятием кода в
                                    ExpandedWrap disabled
                                      {$R-}
                                      .....
                                      {$R+}

                                    Мол, такая штука маскирует ошибку. На этом, думаю, все, тема закрыта, всем спасибо!
                                    0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                    0 пользователей:


                                    Рейтинг@Mail.ru
                                    [ Script execution time: 0,0515 ]   [ 19 queries used ]   [ Generated: 25.04.24, 10:22 GMT ]