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

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

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 20.08.2011, 10:22   #1
Gandfil
Пользователь
 
Регистрация: 17.08.2011
Сообщений: 17
По умолчанию Как использовать глобальную таблицу в процедуре?

Здраствуйте. Решил написать текстовую игру. Проблема такая:
Есть таблица monster of integer , обьявлена так:
Код:
program Stalk;

{$APPTYPE CONSOLE}

Uses SysUtils, EsConsole;
var s: array [1 ..8] of integer; i, boi, zdorov, m, a, y, r, l: integer; opis: array [1 ..8] of string [15];
oryz: array [1 ..5] of string [15]; cena: array [1 ..5] of integer; yron: array [1 ..5] of integer;
probel: string[20]; monster: array [1 ..5,1 ..5] of integer;
В самой программе дал значение таблице. Вот так:
Код:
monster[1, 1]:= 3;monster[1, 2]:= 7;monster[1, 3]:= 15;monster[1, 4]:= 10;monster[1, 5]:= 12;
monster[2, 1]:= 15;monster[2, 2]:= 30;monster[2, 3]:= 80;monster[2, 4]:= 60;monster[2, 5]:= 50;
monster[3, 1]:= 4;monster[3, 2]:= 4;monster[3, 3]:= 1;monster[3, 4]:= 6;monster[3, 5]:= 9;
monster[4, 1]:= 2;monster[4, 2]:= 2;monster[4, 3]:= 1;monster[4, 4]:= 0;monster[4, 5]:= 0;
monster[5, 1]:= 1;monster[5, 2]:= 2;monster[5, 3]:= 2;monster[5, 4]:= 1;monster[5, 5]:= 1;
Потом в процедуре :
Код:
procedure atack_stalk;
begin
if boi = 1 then l:= s[2]-3
else l:= s[2];
if boi = 5 then l:= s[2]-3
else l:= s[2];
a:= random (monster[3, boi]+l+s[4]);
if a < s[5] then
begin
  r:= (l+s[4])-monster[3, boi];
  y:= s[6];
  if a <= r then
               begin y:= y*2;
                     writeln ('Вы нанесли крит урон :',y);
               end
             else  writeln ('Вы нанесли урон :',y);
end
            else
             begin
              writeln ('Вы промазали'); y:= 0;
             end;
monster[2, boi]:= monster[2, boi]-y;
end;
Возникает куча ошибок двух видов:
1. [Ошибка] Project2.dpr(70): Incompatible types На строки if boi = 1 then l:= s[2]-3 и if boi = 5 then l:= s[2]-3.
2. [Ошибка] Project2.dpr(74): Incompatible types: 'Integer' and 'procedure, untyped pointer or untyped parameter' На строки где в процедуре указанны переменный таблицы. Такие как :monster[2, boi]:= monster[2, boi]-y; r:= (l+s[4])-monster[3, boi]; и т.д.
Как использовать глобальную таблицу в процедуре? Заранее спасибо за ответ.
Если помог, жми на весы слева
Gandfil вне форума Ответить с цитированием
Старый 20.08.2011, 10:28   #2
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

в такой мешанине кода, возьмите и проверьте типы, вам же компилятор говорит что и где.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 20.08.2011, 12:47   #3
Gandfil
Пользователь
 
Регистрация: 17.08.2011
Сообщений: 17
По умолчанию

Я даже не знаю на что он намекает. Деления в коде не вообще. Все переменные, таблицы, и массивы : либо integer, либо string.
Код:
monster: array [1 ..5,1 ..5] of integer;
Разве процедура не переносит integer?
Или здесь:
Код:
monster[2, boi]:= monster[2, boi]-y;
Ну вот на что он здесь может ругаться?
Или тип ты имеешь ввиду не интежер?
Если помог, жми на весы слева

Последний раз редактировалось Gandfil; 20.08.2011 в 12:54.
Gandfil вне форума Ответить с цитированием
Старый 20.08.2011, 12:54   #4
veniside
Старожил
 
Регистрация: 03.01.2011
Сообщений: 2,508
По умолчанию

пост, наглядно показывающий вред от глобальных переменных. Приведите весь код, походу, у вас есть ещё процедуры с именами l, y и т.д.
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
veniside вне форума Ответить с цитированием
Старый 20.08.2011, 13:02   #5
Gandfil
Пользователь
 
Регистрация: 17.08.2011
Сообщений: 17
По умолчанию

Спасибо большое! Попал в ловушку собственной логики: процедуру отвечающую за бои назвал как переменную порядка боя. Терь еще есть несколько багов, но я их исправлю.
Если помог, жми на весы слева
Gandfil вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как использовать метод FormClose в другой процедуре Sullla Общие вопросы Delphi 6 07.08.2011 18:22
QT4 вызвать глобальную функцию kin63camapa Общие вопросы C/C++ 0 30.03.2010 22:20
Можно ли не создавая TStringList (использую with...do), использовать его в процедуре? TwiX Общие вопросы Delphi 8 17.03.2010 18:17
как реализовать процедуру в процедуре? Аlex Помощь студентам 11 14.07.2008 10:14
как в процедуре объявить массив? kolduev Помощь студентам 7 18.02.2008 23:35