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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 30.08.2009, 20:55   #1
Лубышев
Участник клуба
 
Аватар для Лубышев
 
Регистрация: 23.07.2007
Сообщений: 1,054
По умолчанию проверка динамического масива

ребята, у меня проблема.
есть динимаческий двумерный масив и я его хочу проверить в цикле.
но возникает ошибка. не могу разобраться почему. (если массив не динамический проблема пропадает.

вот код программы:
Код:
unit Mein;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls;

type
  TFM = class(TForm)
    tim_paint: TTimer; //таймер прорисовки
    procedure FormCreate(Sender: TObject);
    procedure tim_paintTimer(Sender: TObject);
  private

  public

  end;

Type element=record //минимальный элемент
  prohod:integer;//проходимость
  image:integer;//текстура
end;

Type Pole=array of array of element;//тип данных игровое поле

const
  e_width=30;  //ширина элементов
  e_height=30; //высота элементов
  p_col_x=20;  //размерность поля в ширину
  p_col_y=15;  //размерность поля в высоту

var
  FM: TFM;
  Matrix:Pole; //основное поле игры
implementation

{$R *.dfm}

//процедура инициализации игрового поля (передается поле и его размерность)
procedure Pole_ini(Matrix:Pole; col_x:integer; col_y:integer);
var i,j:integer;
begin
  setlength(Matrix,col_x);//размерность по x
  for i:=0 to col_x-1 do setlength(Matrix[i],col_y);//размерность по y
  //изначальная инициализация всех элементов
  for i:=0 to col_x-1 do
  for j:=0 to col_y-1 do
  begin
    Matrix[i,j].prohod:=0;
    Matrix[i,j].image:=0;
  end;
end;


procedure TFM.FormCreate(Sender: TObject);
begin
  //установка параметров формы
  Left:=0;
  Top:=0;
  Width:=Screen.Width;
  Height:=Screen.Height;

  Pole_ini(Matrix,p_col_x,p_col_y);//инициализация игрового поля
end;

procedure TFM.tim_paintTimer(Sender: TObject);
var  i,j:integer;
holst:Tbitmap;
begin
  holst:=Tbitmap.Create;
  holst.Width:=Screen.Width;
  holst.Height:=Screen.Height;
  for i:=0 to p_col_x-1 do
  for j:=0 to p_col_y-1 do
  begin

  // не хочет проходить проверка
    if Matrix[i,j].prohod=0 then holst.Canvas.Brush.Color:=clRed;

    holst.Canvas.Brush.Color:=clRed;
    holst.Canvas.Rectangle(i*e_width,j*e_height,i*e_width+e_width,j*e_height+e_height);
  end;
  FM.Canvas.Draw(0,0,holst);
  holst.Destroy;
end;

end.
весь код программы вот:
Вложения
Тип файла: zip Новый проект.zip (7.6 Кб, 8 просмотров)
Писано по д'Эльфийски
Лубышев вне форума Ответить с цитированием
Старый 30.08.2009, 21:10   #2
_Dmitry
Участник клуба
 
Аватар для _Dmitry
 
Регистрация: 02.09.2007
Сообщений: 1,193
По умолчанию

procedure Pole_ini(var Matrix:Pole; col_x:integer; col_y:integer);
_Dmitry вне форума Ответить с цитированием
Старый 30.08.2009, 21:30   #3
Лубышев
Участник клуба
 
Аватар для Лубышев
 
Регистрация: 23.07.2007
Сообщений: 1,054
По умолчанию

О. блин вот я идиот то. Спасибо. А то думал в чем же косяк...
Писано по д'Эльфийски
Лубышев вне форума Ответить с цитированием
Старый 31.08.2009, 00:00   #4
Somebody
Участник клуба
 
Регистрация: 08.10.2007
Сообщений: 1,185
По умолчанию

Кстати
Код:
setlength(Matrix,col_x);//размерность по x
for i:=0 to col_x-1 do setlength(Matrix[i],col_y);//размерность по y
=
Код:
setlength(Matrix,col_x,col_y);
Это тоже будет массив массивов (не непрерывный), просто другая запись.
Somebody вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
random и создание масива. blackstersl Общие вопросы Delphi 9 05.05.2009 02:03
4 масива Slavik Microsoft Office Excel 2 03.12.2008 21:21
Удаление записи из динамического масива... Altera Общие вопросы Delphi 4 09.06.2008 09:15
Сортировка масива lhOsvald Общие вопросы C/C++ 21 02.05.2008 00:28
СОХРАНИЯ В ФАЙЛ ДВУМЕРНОГО ДИНАМИЧЕСКОГО МАСИВА!!!! _FL@ER_ Помощь студентам 2 23.06.2007 16:31