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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 20.06.2009, 23:39   #1
spamer
Software Developer
Старожил
 
Аватар для spamer
 
Регистрация: 19.12.2008
Сообщений: 2,070
По умолчанию

Всем привет. Столкнулся с проблемой.
Есть двумерный массив, который читается из текстового файла(содержание файла):
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1
1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1
1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1
1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1
1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1
1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1
1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1
1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1

Читаю вот так:
Код:
  mas : array [1..20,1..10] of integer;
  i,j:integer;
  f:textfile;

assignfile(f,'Test.txt');
reset(f);
for i:=1 to 20 do
for j:=1 to 10 do
read(f,mas[i,j]);
closefile(f)
Мене надо из этого массива построить карту. Я просто не пойму как мене на форме нарисовать сетку по этому массиву и что бы если элемент массива равен 1, то квадрат этой сетки зарисовать каким то цветом ??? Подскажите пожалуйста.

Пытаюсь прорисовать вот так:
Код:
for i := 1 to 20 do
for j := 1 to 10 do
begin
if mas[i,j] = 1 then
Image1.Canvas.Brush.Color := clRed
else
if mas[i,j] = 0 then
Image1.Canvas.Brush.Color := clWhite;

Image1.Canvas.Rectangle((i+1)*10,(j+1)*10,i*10,j*10);
end;
Оно рисует, но не правильно. Подскажите, что тут надо изменить???
Будь проще и люди к тебе потянутся

Последний раз редактировалось Stilet; 22.06.2009 в 10:43.
spamer вне форума Ответить с цитированием
Старый 21.06.2009, 00:46   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

например, рисовать на канве...

Код:
procedure TForm1.FormPaint(Sender: TObject);
var x,y,i,j : integer;
  delta : integer;
begin
  delta := 10; {квадратики будут по 10 пикселей}
  Canvas.Pen.Color := clBlue;
  Canvas.Pen.Style := psSolid;
  Canvas.Brush.Color := clRed;

  for i:=1 to 20 do
  for j:=1 to 10 do
  begin
    x:= (i-1)*delta;
    y:= (j-1)*delta;
    if mas[i,j]=1 then begin
          Canvas.Brush.Style := bsSolid;
          Canvas.Brush.Color := clRed;
       end
       else
         Canvas.Brush.Style := bsClear;
    Canvas.Rectangle(x, y, x + delta, y + delta);
  end;
end;
Добавлено.
пока писал пример кода рисования, Вы уже выложили свой вариант...
попробуйте для начала мой вариант. Если проблема останется — пишите, будем вместе разбираться...

Последний раз редактировалось Serge_Bliznykov; 21.06.2009 в 00:49.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 21.06.2009, 01:06   #3
spamer
Software Developer
Старожил
 
Аватар для spamer
 
Регистрация: 19.12.2008
Сообщений: 2,070
По умолчанию

Все равно такое рисует как и с моим кодом. Вот cкрин того что оно рисует
Будь проще и люди к тебе потянутся
spamer вне форума Ответить с цитированием
Старый 21.06.2009, 01:17   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

читаете неправильно.
поменяйте местами i и j :
Код:
  for j:=1 to 10 do
  for i:=1 to 20 do
     read(f,mas[i,j]);
Serge_Bliznykov вне форума Ответить с цитированием
Старый 21.06.2009, 01:20   #5
spamer
Software Developer
Старожил
 
Аватар для spamer
 
Регистрация: 19.12.2008
Сообщений: 2,070
По умолчанию

Serge_Bliznykov спасибо, помогло.

P.S. Я уже начал догадываться, что проблема где то в считывании массива, но не смог понять где именно.
Будь проще и люди к тебе потянутся
spamer вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
создать двумерный массив, заполнить случайными числами, сохранить в файл buba Паскаль, Turbo Pascal, PascalABC.NET 7 17.03.2015 20:08
Двумерный Массив n01R Помощь студентам 9 19.12.2009 16:41
C++. Двумерный массив Manofiron Помощь студентам 1 02.06.2009 20:10
Двумерный массив Veroni4ka Помощь студентам 3 12.05.2009 11:09