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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 28.06.2009, 18:35   #1
mmx358
Пользователь
 
Регистрация: 28.06.2009
Сообщений: 84
По умолчанию Пробема объявления массива в заголовке процедуры.

Код:
procedure Draw(sx,sy:smallint;matrix:array [1..2, 1..4] of smallint);
const
  block='[]';
  clear='  ';
var
  i,f:smallint;
begin
  for i:=1 to 2 do
    begin
      for f:=1 to 4 do
        begin
          if matrix[i,f] = 0
            then write(clear);
          else write(block);
        end;
    end;
end;
Всем привет!
Возникла такая проблема, что при таком (см. код) объявлении массива компилер выдаёт ошибку "OF" expected but "[" found.
Если убрать диапазон, то всё как бы супер, но в строке
if matrix[i,f] = 0
он тычет в "f" и говорит, что это illegal qualifier.
Помогите, пожалуйста, решить эту проблему.
Буду благодарен. Очень.
mmx358 вне форума Ответить с цитированием
Старый 28.06.2009, 19:13   #2
__STDC__
Участник клуба
 
Аватар для __STDC__
 
Регистрация: 16.03.2009
Сообщений: 1,013
По умолчанию

используйте type... так нельзя передавать параметры.. или так
Код:
type
   arr = array [1..2, 1..4] of smallint;
...
procedure ...(...; x:arr);
...
или так

Код:
procedure ...(...; x:array of array of type);
***
Только второй вариант в процедуру по-моему тоже нельзя
но можно как-нибудь так тогда
Код:
type
	x = array of integer;
	
procedure ...(...; x:array of x);
Uguu~

Последний раз редактировалось __STDC__; 28.06.2009 в 19:17.
__STDC__ вне форума Ответить с цитированием
Старый 28.06.2009, 19:30   #3
mmx358
Пользователь
 
Регистрация: 28.06.2009
Сообщений: 84
По умолчанию

__STDC__, я кое-что не добавил сюда. Подумал, что не имеет значения.
Эти массивы объявляются в главной программе и передаются процедуре
Код:
const
  I : array [1..2, 1..4] of smallint =
    ((0,0,0,0), (1,1,1,1));
  J : array [1..2, 1..4] of smallint =
    ((0,1,0,0), (0,1,1,1));
mmx358 вне форума Ответить с цитированием
Старый 28.06.2009, 19:33   #4
__STDC__
Участник клуба
 
Аватар для __STDC__
 
Регистрация: 16.03.2009
Сообщений: 1,013
По умолчанию

оО
Код:
type
	x = array[1..2,1..4] of integer;

const
  I : x =
    ((0,0,0,0), (1,1,1,1));
  J : x =
    ((0,1,0,0), (0,1,1,1));

	
procedure ...(...:x);
...
Uguu~
__STDC__ вне форума Ответить с цитированием
Старый 28.06.2009, 19:38   #5
mmx358
Пользователь
 
Регистрация: 28.06.2009
Сообщений: 84
По умолчанию

__STDC__, спасибо большое! Это всё же мой первый тетрис... И вообще первая программа... Ещё раз спасибо!
mmx358 вне форума Ответить с цитированием
Старый 28.06.2009, 19:47   #6
__STDC__
Участник клуба
 
Аватар для __STDC__
 
Регистрация: 16.03.2009
Сообщений: 1,013
По умолчанию

ноу праблем =) ничего особенного я не сделал)
Uguu~
__STDC__ вне форума Ответить с цитированием
Старый 28.06.2009, 20:27   #7
mmx358
Пользователь
 
Регистрация: 28.06.2009
Сообщений: 84
По умолчанию

Эх, теперь ещё одна лажа.
Код:
type
  figure = array [1..2, 1..4] of smallint;
const
  I : figure = ((0,0,0,0), (1,1,1,1));
  J : figure = ((0,1,0,0), (0,1,1,1));

procedure Draw(sx,sy:smallint; matrix : figure);
const
  block='[]';
  clear='  ';
var
  i,f:smallint;
begin
  for i:=1 to 2 do
    begin
      for f:=1 to 4 do
        begin
          if matrix[i,f] = 0
            then write(clear);
          else write(block);
        end;
    end;
end;
Теперь он говорит, что Identifier not found "figure".
В чём я теперь провинился перед ним?
Код:
procedure Draw(sx,sy:smallint; matrix : figure);
mmx358 вне форума Ответить с цитированием
Старый 28.06.2009, 20:30   #8
__STDC__
Участник клуба
 
Аватар для __STDC__
 
Регистрация: 16.03.2009
Сообщений: 1,013
По умолчанию

у вас там ; перед else лишняя..
Код:
            then write(clear);
          else write(block);
насчет той ошибки не знаю, у меня все работает

***
кстати, зачем вы используете типизированные константы?
Uguu~
__STDC__ вне форума Ответить с цитированием
Старый 28.06.2009, 20:35   #9
mmx358
Пользователь
 
Регистрация: 28.06.2009
Сообщений: 84
По умолчанию

Отбой тревоги! Я объявлял типы и переменные после объявления процедур


В константы я вписываю матрицу фигурки
mmx358 вне форума Ответить с цитированием
Старый 28.06.2009, 22:11   #10
Doholyan
Форумчанин
 
Регистрация: 26.04.2009
Сообщений: 270
По умолчанию

по моему мнению проседура вообще работать не будет.
Что это за тип такой "smallint"?
const очень интересно обьявлена....
и где обрашения к перемменным sx,sy:

или я вообще отупел...че то не пойму)))
Doholyan вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Звук в заголовке формы. Skolot Microsoft Office Access 1 28.04.2009 11:08
Вопрос по поводу объявления класса в С++ Билдер prikolist Общие вопросы C/C++ 2 08.04.2009 23:07
Позиция курсора в заголовке NieL Общие вопросы Delphi 3 17.12.2008 18:01
Рисунок в заголовке TabbedNotebook Aleksandr Общие вопросы Delphi 0 28.09.2007 16:03
пробема кодировки при копировании текса через буф.обмена выдает иероглифы! Linx Общие вопросы Delphi 3 29.05.2007 23:12