Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Ошибка: "Project xxxx raised exception class..." [D7, XP]


Страницы:   1 2

Werewolf-Prankster ©   (2008-05-18 23:33:00) 

Делаю Сапер.
Код открытия пустых клеток:
Procedure TForm1.Open (x1,y1:integer); //Открытие клетки
var a,b:integer;
begin
 a:=x1;
 b:=y1;
 if (a<10) and (a>0) and (b<10) and (b>0) then
 begin
if (pole[a,b]=' ') then
  begin
   TLabel(FindComponent ('B'+inttostr(a)+inttostr(b))).visible:=false;
   open(a+1,b);
   open(a-1,b);
   open(a,b+1);
   open(a,b-1);
   //По диагонали
   open(a+1,b+1);
   open(a-1,b+1);
   open(a-1,b-1);
   open(a+1,b-1);
  end
  else
    if (pole[a,b]<>'©') and (pole[a,b]<>' ') then
     TLabel(FindComponent ('B'+inttostr(a)+inttostr(b))).visible:=false;
 end;      
end;


Но при приближении "уничтожения" кнопок к краю, выскакивает такая ошибка: http://img225.imageshack.us/img225/1844/errorib2.jpg

Не пойму в чем проблемма, помогите пожалуйста )


Werewolf-Prankster   (2008-05-19 14:58:00) [21]

2Сергей М.
Я только учусь, и если не сдам на этой неделе, не получу 5 ))

PS То что оговаривалось в другой теме, я не понял лишь по своей неосведомленности, т.к. визуальный режим Delphi мы начали учить 4-5 пар назад )


Сергей М.   (2008-05-19 14:57:00) [22]


> У меня уже нет времени что либо переделывать


А что за спешка ?


Werewolf-Prankster   (2008-05-19 14:56:00) [23]

2Palladin это значит что поле без цифр и мин.


Palladin   (2008-05-19 14:55:00) [24]


> Werewolf-Prankster   (19.05.08 14:54) [10]

а ты подумай... что значит условие if (pole[a,b]=' ') ?


Werewolf-Prankster   (2008-05-19 14:54:00) [25]

2Palladin
И что же? :)


Palladin   (2008-05-19 14:54:00) [26]

Можно. Я даже вижу что ты не сделал для полного счастья.


Werewolf-Prankster   (2008-05-19 14:50:00) [27]

2Германн
Чесно, большую чать этой темы увидел только что.
2All
У меня уже нет времени что либо переделывать. Можно ли как-то подправить этот код?


Renegat   (2008-05-19 08:56:00) [28]

У меня однажды была ситуация, когда рекурсивная процедура не учитывала границы массива, и в итоге выходила за его пределы настолько, что рушила всю секцию данных :)


Германн   (2008-05-19 01:13:00) [29]


> Amoeba ©   (19.05.08 00:39) [4]
>
> Судя по приведенному коду интерфейс спроектирован крайне
> неудачно. Такие задачи решаются иначе. Для игрового поля
> сапера надо использовать DrawGrid. И никакого полчища Label'ов
> тогда не не понадобится.
>

Автору на это намекали, но он не внял.
http://delphimaster.ru/cgi-bin/forum.pl?id=1210427273&n=18


guav   (2008-05-19 01:00:00) [30]

Ну допустим  a = 9 b = 5, из Open вызывается open(a+1,b); a = 10, b = 5 , оттуда open(a-1,b); снова a = 9, b = 5...


Amoeba   (2008-05-19 00:39:00) [31]

Судя по приведенному коду интерфейс спроектирован крайне неудачно. Такие задачи решаются иначе. Для игрового поля сапера надо использовать DrawGrid. И никакого полчища Label'ов тогда не не понадобится.


Werewolf-Prankster   (2008-05-19 00:01:00) [32]

2No_Dead
Нет, просто копирнул с Help'a, т.к. влом былопереписывать код ошибки.
ЗЫ Лежит скрином

2Сергей М.
Не подскажете что можно сделать?


No_Dead   (2008-05-18 23:56:00) [33]

> Project xxxx

))) это ж какое имя должно быть%) ... секретное:)... наверно какое-то магическое слово


Сергей М.   (2008-05-18 23:54:00) [34]

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

Ищи ошибку в логике определения условия выхода из рекурсивного вызова


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо