Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > Delphi > Паскаль
Регистрация

Восстановить пароль
Повторная активизация e-mail


Ответ
 
Опции темы
Старый 03.10.2018, 21:34   #1
DKFL2002
Новичок
 
Регистрация: 30.09.2018
Сообщений: 3
Репутация: 10
По умолчанию [Pascal ABC.NET] Графика и CRT. Ошибка, которая не должна быть

Пишу программу, в которой подключен модуль GraphABC и CRT
При компиляции выскакивает два окна с ОШИБКОЙ (мол в программе что то не так) хотя компиляция проходит нормально

ps пишу треугольник серпинского с возможностью увеличения и уменьшения

версия паскаля:
3.2 сборка 1514 (11.08.2017)

вот код:

Код:

uses GraphABC,CRT;

const
          w = 640;
          h = 480;
          kol_pixel = 200000;
          x_speed = 5;
          y_speed = 5;
          increase = 5;

var
          map: array [1..kol_pixel, 1..kol_pixel] of boolean;
          x_mouse_cursor, y_mouse_cursor: longint;
          n, m, i, j: longint;
          x, y: longint;
          a, b: array [1..3] of longint;
          read_command: char;
          scale: longint;

begin
          
          LockDrawing;
          
          scale := round(kol_pixel / w);
          
          for i := 1 to 3 do
          begin
                    a[i] := random(kol_pixel);
                    b[i] := random(kol_pixel);
          end;
          
          
          
          while True do
          begin
                    
                    if KeyPressed then
                    begin
                              read_command := readkey;
                              case read_command of
                                        'w': dec(x_mouse_cursor, x_speed);
                                        's': inc(x_mouse_cursor, x_speed);
                                        'd': inc(y_mouse_cursor, y_speed);
                                        'a': dec(y_mouse_cursor, y_speed);
                                        ' ': exit;
                                        '+': dec(scale, increase);
                                        '-': inc(scale, increase);
                              end;
                              if (x_mouse_cursor <= 0) then x_mouse_cursor := 1;
                              if (x_mouse_cursor >= kol_pixel - w - 5) then x_mouse_cursor := kol_pixel - w - 6;
                              if (y_mouse_cursor <= 0) then y_mouse_cursor := 1;
                              if (y_mouse_cursor >= kol_pixel - w - 5) then y_mouse_cursor := kol_pixel - w - 6;
                              
                    end;
                    
                    i := random(3) + 1;
                    x := abs(round((x - a[i]) / 2 + a[i]));
                    y := abs(round((y - b[i]) / 2 + b[i]));
                    
                    map[x, y] := True;
                    
                    i := 1;
                    j := 1;
                    
                    n := scale;
                    m := scale;
                   
                    clearwindow;
                   
                    while (i <= w) do
                    begin
                              while (j <= h) do
                              begin
                                        if map[x_mouse_cursor+n,y_mouse_cursor+m] then setpixel(x_mouse_cursor+n,y_mouse_cursor+m,clBlack);
                                        m:=m+scale;
                                        inc(j);
                              end;
                              n:=n+scale;
                              m:=scale;
                              j:=1;
                              inc(i);
                    end;
                    
                    redraw;
                    
          end;
end.

DKFL2002 вне форума   Ответить с цитированием
Старый 03.10.2018, 21:54   #2
evg_m
Профессионал
 
Регистрация: 20.04.2008
Сообщений: 4,712
Репутация: 2097
По умолчанию

первое и САМОЕ главное НЕ ТАК
не приведены эти самые сообщения
Цитата:
два окна с ОШИБКОЙ (мол в программе что то не так)
__________________
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума   Ответить с цитированием
Старый 03.10.2018, 21:56   #3
DKFL2002
Новичок
 
Регистрация: 30.09.2018
Сообщений: 3
Репутация: 10
По умолчанию

Прекращена работа программы "..."
Windows может провести поиск способа устранения этой ошибки в Интернете
DKFL2002 вне форума   Ответить с цитированием
Старый 03.10.2018, 22:27   #4
Serge_Bliznykov
МегаМодератор
СуперМодератор
 
Регистрация: 09.01.2008
Сообщений: 24,354
Репутация: 5274
По умолчанию

во-первых, банально не хватает памяти (напомните, сколько массив map: array [1..kol_pixel, 1..kol_pixel] of boolean; должен занять памяти?!)

во-вторых, мне абсолютно непонятен алгоритм, который у Вас в коде (выделил)
(и, кстати, там получаются значения, выходящие за пределы окна:
Код:


                    while (i <= w) do
                    begin
                              while (j <= h) do
                              begin
                                        if map[x_mouse_cursor+n,y_mouse_cursor+m] 
                                           then begin
                                              if ((x_mouse_cursor+n)<1) or ((y_mouse_cursor+m)<1) or ((x_mouse_cursor+n)>=w) or ((y_mouse_cursor+m)>h) 
                                              then TextOut(10,10,'error')
                                              else setpixel(x_mouse_cursor+n,y_mouse_cursor+m,clBlack);
                                             end; 
                                        m:=m+scale;
                                        inc(j);
                              end;
                              n:=n+scale;
                              m:=scale;
                              j:=1;
                              inc(i);
                    end;

в третьих, подтверждаю, что при включённом модуле CRT программа при запуске валится с exception
почему это происходит - я не знаю.
попробуйте переписать без использования CRT
Serge_Bliznykov вне форума   Ответить с цитированием
Старый 03.10.2018, 22:33   #5
Serge_Bliznykov
МегаМодератор
СуперМодератор
 
Регистрация: 09.01.2008
Сообщений: 24,354
Репутация: 5274
По умолчанию

Цитата:
Сообщение от DKFL2002 Посмотреть сообщение
Прекращена работа программы "..."
Windows может провести поиск способа устранения этой ошибки в Интернете
я Вам больше скажу.

попробуйте запустить такую "программу":

Код:

uses GraphABC,CRT;

begin
          
end.

ещё вопросы есть?

а теперь поменяйте местами библиотеки в Uses:
Код:

uses CRT, GraphABC;

begin
          
end.

Serge_Bliznykov вне форума   Ответить с цитированием
Старый 03.10.2018, 22:58   #6
DKFL2002
Новичок
 
Регистрация: 30.09.2018
Сообщений: 3
Репутация: 10
По умолчанию

расчитано на 20000000 но я уменьшал и до 200 и не работало

насчёт m:=m+scale и n:=n+scale - это строки с помощью которых я вывожу некую часть изображения и беру только n-ный пиксель чем меньше scale - тем больше увелечение фрагмента картинки

попробовал я поменять местами и сработало!

правда программу надо попровлять

спасибо за помощь
DKFL2002 вне форума   Ответить с цитированием
Старый 04.10.2018, 08:08   #7
NetSpace
Профессионал
 
Аватар для NetSpace
 
Регистрация: 03.06.2009
Адрес: п.Путеец, Печорский р-н
Сообщений: 1,325
Репутация: 482
По умолчанию

я делаю просто. убираю код (копирую, скажем в Блокнот). оставляю только begin и end и запускаю программу. нет кода - нет ошибок. а потом по строчке или по две начинаю добавлять свой код из Блокнота. вот там-то и находятся ошибки и недочёты
__________________
Программирование - это единственный способ заставить компьютер делать то, что тебе хочется, а не то, что приходится.
NetSpace вне форума   Ответить с цитированием
Старый 04.10.2018, 10:27   #8
Serge_Bliznykov
МегаМодератор
СуперМодератор
 
Регистрация: 09.01.2008
Сообщений: 24,354
Репутация: 5274
По умолчанию

Цитата:
Сообщение от NetSpace Посмотреть сообщение
я делаю просто. убираю код (копирую, скажем в Блокнот). оставляю только begin и end и запускаю программу. нет кода - нет ошибок.
Не всегда!
посмотрите мой пост #5 выше.
программа
Код:

uses GraphABC,CRT;
begin
end.

при запуске тут же рушится.

впрочем, неважно, автор темы уже сдвинулся с мёртвой точки. Будут ещё вопросы, обратится ещё раз.
Serge_Bliznykov вне форума   Ответить с цитированием
Старый 04.10.2018, 12:35   #9
NetSpace
Профессионал
 
Аватар для NetSpace
 
Регистрация: 03.06.2009
Адрес: п.Путеец, Печорский р-н
Сообщений: 1,325
Репутация: 482
По умолчанию

вооот! я видел ваш пост выше. значит, дело не в коде, а в том, что ещё выше. если и модули *.pas убрать? тогда и обнаружим слабое звено.
__________________
Программирование - это единственный способ заставить компьютер делать то, что тебе хочется, а не то, что приходится.
NetSpace вне форума   Ответить с цитированием
Старый 17.10.2018, 13:52   #10
jillitil
 
Регистрация: 17.10.2018
Сообщений: 7
Репутация: 10
По умолчанию

Цитата:
Сообщение от DKFL2002 Посмотреть сообщение
два окна с ОШИБКОЙ (мол в программе что то не так)
Вас попросили привеси за руку сюда эти окна.
Подозреваю что вы хотите выделить 40 ГИГАБАЙТ статической памяти, вот оно и ругается.
jillitil вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[Pascal ABC.NET] ошибка во время работы при использовании System.Windows.Media.MediaPlayer Roman_Jarckov23 Паскаль 7 18.09.2018 09:05
[Pascal ABC.NET] Подскажите, как в код вставить процедуру суммы, которая считала бы только те столбцы матрицы, которые я укажу? 0525 Паскаль 4 10.11.2017 13:47
Pascal ABC. Создание меню через crt. H4t Помощь студентам 1 13.05.2013 13:19
в Pascal ABC.Net ошибка:"невозможно явно преобразовать тип integer к System.random" ameks94 Паскаль 3 23.12.2012 02:04
Программа должна оставить всего две строки! [Pascal ABC] Mirt Помощь студентам 1 07.12.2010 09:00


02:37.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru