Форум программистов, компьютерный форум, киберфорум
Наши страницы
PascalABC.NET
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/5: Рейтинг темы: голосов - 5, средняя оценка - 5.00
Dimoyok
0 / 0 / 1
Регистрация: 30.07.2015
Сообщений: 7
1

Вылетает программа с подключенным модулем crt

30.07.2015, 14:04. Просмотров 932. Ответов 11
Метки нет (Все метки)

Здравствуйте. Я новичок в PascalABC.Net, поэтому прошу помочь, а не бросаться тапками, за тупые вопросы. Дело в том, что я создал программу, которая создаёт эффект, как в фильме матрица. Подключил модуль crt. Первые несколько секунд работает хорошо. Но далее начинает издавать звуки, похожие на писк, а затем зависает. В чём может быть проблема? Может есть какие ограничения в модуле (или в командной строке. Как я понял, модуль выводит цветные символы в командную строку)? Если нужен код, то я выложу, пока смысла не вижу выкладывать.
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.07.2015, 14:04
Ответы с готовыми решениями:

Пытаюсь написать программу (типа игры) в модуле CRT, но при запуске вылетает
Собсно, вот код: Program vari_ous; uses CRT; type posX = array of...

Программа с подключенным модулем ничего не выводит
Выводит три строки: N1: (тут должен выводиться первый массив) N2: (тут должен...

программа с модулем
Привет всем, ребята очень нужна задачка с модулем чтобы там было не менее 5...

Программа конфликтует с CRT и завершается
Программа прекращается, без CRT работает правильно, но мне нужно считывать...

программа в паскале с модулем graph
надо нарисовать компьютерную мышку в паскале с помощью модуля GRAPH надо к 2...

11
Nekromail2011
22 / 22 / 7
Регистрация: 03.11.2014
Сообщений: 325
30.07.2015, 14:08 2
Мой хрустальный шар в чистке...
0
Dimoyok
0 / 0 / 1
Регистрация: 30.07.2015
Сообщений: 7
30.07.2015, 14:12  [ТС] 3
Ок, раз так нужен код, пожалуйста:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
uses
    crt;
type 
  matrix= array [1..80, 1..25] of integer; 
var
  a : matrix; 
  x,y,k,l,i,j:integer;
  b:boolean;
 
begin
  b := false;
  while true do
  begin
  if b = false then 
  begin
    b := true;
  end
  else
  begin 
    x:=random(1,80);
    if a[x,1] = 0 then if a[x,2] = 0 then a[x,1] := random(255);
    b := false;
  end;
  x:=1;
  y:=1;
    for k := 1 to 25 do
    begin
        
        for l :=1 to 80 do
        begin
        
          gotoxy(x,y);
          if y > 1 then begin if a[x,y-1] = 0 
                                   then begin textcolor (2); end
                                   else begin textcolor (10); end;
                        end;
          write (chr(a[x,y]));
          x+=1;
        end;
        x:=1;
        y+=1;
        
    end;
    
    x:=1;
    y:=25;
    
    for i := 1 to 25 do
    begin
        
        for j :=1 to 80 do
        begin
        
          if y = 1 
          then
          begin
            
            
            
          end
          else
          begin
            
            if y > 0 then if a[x,y-1] = 0 then  begin a[x,y] := 0           end
                                          else  begin  if a[x,y] = 0 then a[x,y] := random(255) end;
            
          end;
          
          if a[x,13] = 0 then begin         end
                         else begin a[x,1] := 0 end;
          
          x+=1;
          
        end;
        x:=1;
        y-=1;
        
    end;
    
  end;
end.
Он может показаться странным или индусским, но я же только учусь). Сначала инициализируем двумерный массив, в цикле сначала заполняем массив снизу вверх, затем выводим на экран снизу вверх.
0
Nekromail2011
22 / 22 / 7
Регистрация: 03.11.2014
Сообщений: 325
30.07.2015, 14:26 4
буду смотреть

p.s у меня все работает

Добавлено через 1 минуту
во первых, вам нужны рандомные символы или определенные?
0
Dimoyok
0 / 0 / 1
Регистрация: 30.07.2015
Сообщений: 7
30.07.2015, 15:35  [ТС] 5
во первых, вам нужны рандомные символы или определенные?
Рандомные.

Добавлено через 4 минуты
у меня все работает
Хм, странно. Даже скомпилированная программа у меня вылетает, только позже. Как вы думаете, в чём может быть проблема? Сомневаюсь, что она связана с конфигурацией компьютера.
0
Nekromail2011
22 / 22 / 7
Регистрация: 03.11.2014
Сообщений: 325
30.07.2015, 16:13 6
я лично вызывал из IDE клавишами shift+F9

Добавлено через 16 секунд
ну я сейчас готовлю свой вариант
0
Dimoyok
0 / 0 / 1
Регистрация: 30.07.2015
Сообщений: 7
30.07.2015, 16:16  [ТС] 7
я лично вызывал из IDE клавишами shift+F9
Я пробовал и вызывать shift+F9 и компилировать, разница лишь во времени, через которое вылетает программа.

Добавлено через 38 секунд
ну я сейчас готовлю свой вариант
Хорошо, надеюсь, у вас получится лучше, чем у меня).
0
nikhrom
20 / 20 / 16
Регистрация: 21.01.2015
Сообщений: 51
30.07.2015, 16:41 8
Лучший ответ Сообщение было отмечено Dimoyok как решение

Решение

Починил:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
uses
  crt;
 
type
  matrix = array [1..80, 1..25] of integer;
 
var
  a: matrix; 
  x, y, k, l, i, j: integer;
  b: boolean;
 
function MyRandom(a, b: integer): integer;
begin
  Result := Random(a, b);
  //Исключаем все пищалки и другие "невидимые" символы
  while Result in [7..10, 13, 32, 149, 160] do
    Result := Random(a, b);
end;
 
begin
  b := false;
  HideCursor;
  while true do
  begin
    if b = false then 
    begin
      b := true;
    end
    else
    begin
      x := MyRandom(1, 80);
      if a[x, 1] = 0 then if a[x, 2] = 0 then a[x, 1] := MyRandom(0, 255);
      b := false;
    end;
    x := 1;
    y := 1;
    for k := 1 to 25 do
    begin
      
      for l := 1 to 80 do
      begin
        
        gotoxy(x, y);
        if y > 1 then begin
          if a[x, y - 1] = 0 
          then begin textcolor(2); end
          else begin textcolor(10); end;
        end;
        write(chr(a[x, y]));
        x += 1;
      end;
      x := 1;
      y += 1;
      
    end;
    
    x := 1;
    y := 25;
    
    for i := 1 to 25 do
    begin
      
      for j := 1 to 80 do
      begin
        
        if y = 1 
          then
        begin
          
          
          
        end
          else
        begin
          
          if y > 0 then if a[x, y - 1] = 0 then begin a[x, y] := 0 end
            else  begin if a[x, y] = 0 then a[x, y] := MyRandom(0, 254) end;
          
        end;
        
        if a[x, 13] = 0 then begin end
        else begin a[x, 1] := 0 end;
        
        x += 1;
        
      end;
      x := 1;
      y -= 1;
      
    end;
  end;
end.
1
Dimoyok
0 / 0 / 1
Регистрация: 30.07.2015
Сообщений: 7
30.07.2015, 17:00  [ТС] 9
Цитата Сообщение от nikhrom Посмотреть сообщение
Починил
Спасибо большое
Цитата Сообщение от nikhrom Посмотреть сообщение
while Result in [7..10, 13, 32, 149, 160] do
И хотелось бы узнать, что означает эта строчка. Она проверяет, находится ли число Result в данном диапазоне чисел?

Добавлено через 6 минут
Всё, я понял, числа этого диапазона пустые, из-за этого и возникает баг, ещё раз большое спасибо
0
Nekromail2011
22 / 22 / 7
Регистрация: 03.11.2014
Сообщений: 325
30.07.2015, 18:51 10

Не по теме:

Отлично, что решили. Я бы до завтра этим заниматься не стал, времени нету:) . Но, на мой взгляд, код мог быть и красивше, что ли. Хотя бы отступы огромные убрать, и условия выделять, читабельность бы стала лучше



Добавлено через 2 минуты
p.s в каком смысле числа диапазона пустые? Просто это системные символы перехода на новую строку(10, 13 во всяком случае) Из за их вывода происходит ошибка
1
Dimoyok
0 / 0 / 1
Регистрация: 30.07.2015
Сообщений: 7
30.07.2015, 20:13  [ТС] 11
Цитата Сообщение от Nekromail2011 Посмотреть сообщение
p.s в каком смысле числа диапазона пустые? Просто это системные символы перехода на новую строку(10, 13 во всяком случае) Из за их вывода происходит ошибка
Хорошо, спасибо, буду знать.
0
Roydgar
0 / 0 / 0
Регистрация: 05.12.2015
Сообщений: 10
23.04.2016, 19:43 12
Нашёл решение, надеюсь актуально: нужно поставить модуль сrt или другой модуль, его содержащий, в описании ПЕРЕД модулем GraphABC. Например:
Uses crt,GraphABC;

В ином случае открывается графическое окно и поверх него консолька, и они почему-то конфликтуют.
П.С: в графическом окне процедуры crt юзать всё равно нельзя, только если закрыть графическое окно (closeWindow)
А потом перейти в crt, где у вас, например, написана меню.
0
23.04.2016, 19:43
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.04.2016, 19:43

не запускается программа с модулем graph
Всем доброго времени суток У меня возникла проблема в использовании модуля...

Подскажите что дальше?? Программа с модулем.
Uses mylib_33; var x1,x2,x4,x5,x6,x7,y1,y2,y4,y5,y6,y7,k1,k2,b1,b2,AB:real;...

Вылетает программа
Есть готовая программа. У меня срабатывает с 4го раза. Ещё у одного человека...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru