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-20 17:56:00) [1]

Наконец-то решил проблемму. Оказалось, всего-то не доставало еще нескольких влагов )


ANB   (2008-05-20 09:42:00) [2]


> TEhDBGrid :) вкупе с ораклом и реализацией открытия минных
> полей через хранимку

Милин. Такая идея мне в голову не приходила :) Кистате, возможно, реализация была бы еще проще.


Anatoly Podgoretsky   (2008-05-19 22:02:00) [3]


> Werewolf-Prankster   (19.05.08 16:45) [23]

Что то не создано.


Amoeba   (2008-05-19 19:49:00) [4]

Речь идет о TDrawGrid с его событиями OnDrawCell и OnClick, методом MouseToCell и рядом свойств.


Werewolf-Prankster   (2008-05-19 19:40:00) [5]

2Palladin
Чесно говоря, ничего не понял из того что ты сказал )


Palladin   (2008-05-19 18:07:00) [6]

TDrawGrid, наверное, если ANB не имел ввиду TEhDBGrid :) вкупе с ораклом и реализацией открытия минных полей через хранимку

вот это было бы круто :)


Werewolf-Prankster   (2008-05-19 18:05:00) [7]

Только есть одна большая проблемма. Я не знаю что такое грид


ANB   (2008-05-19 17:52:00) [8]


> У меня уже нет времени что либо переделывать. Можно ли как-
> то подправить этот код?

Сапер пишется с нуля на гриде за 2 часа.
Лучше все переделать.


Werewolf-Prankster   (2008-05-19 16:50:00) [9]

Хэх, будут меня ругать за дабл пост...

>B - Это поле лейблов выполняющих роль кнопки (не надо меня ругать за >такую криворукость)
>Label - Само поле
Label - Поле из мин и цифр.


Werewolf-Prankster   (2008-05-19 16:48:00) [10]

Вот забыл, еще так пробовал:

if (pole[a,b]=' ') and (pole[a,b]<>'X') then
  begin
   TLabel(FindComponent ('B'+inttostr(a)+inttostr(b))).visible:=false;
   pole[a,b]:='X';
   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


Werewolf-Prankster   (2008-05-19 16:47:00) [11]

B - Это поле лейблов выполняющих роль кнопки (не надо меня ругать за такую криворукость)
Label - Само поле


Werewolf-Prankster   (2008-05-19 16:45:00) [12]

2Palladin
>то есть все tag у всех TLabel изначально выставленны в 1 я так понял

Правильно

>а текст ошибки приведи здесь, я изображение посмотреть не могу

"Project Saper.exe raised exception class EAccessViolation with message 'AccessViolation at address 0043141B in module' 'Saper.exe'. Read of address 00000057'. Process stopped..."


Palladin   (2008-05-19 16:35:00) [13]

что то нифига не понял, то у тебя компоненты с B начинаются, то с Label...


Palladin   (2008-05-19 16:33:00) [14]


> TLabel(FindComponent ('Label'+inttostr(a)+inttostr(b))).
> tag=1

то есть все tag у всех TLabel изначально выставленны в 1 я так понял

а текст ошибки приведи здесь, я изображение посмотреть не могу


Werewolf-Prankster   (2008-05-19 15:22:00) [15]

Код мне писать не надо, просто объясните в чем ошибка, а я уже буду пробовать разобраться.


Werewolf-Prankster   (2008-05-19 15:10:00) [16]

2Сергей М.
>>Только не говори, что понятие рекурсии вам не преподавали)
Нет, чесно. Я сейчас в техникуме, и на первом курсе мы в основном проходили только основные алгоритмы и принципы, начиная с блок схем. Так про рекурсию я слышу в первые.
>>А раньше, когда времени было достаточно, ты чем был занят ?)
А раньше мучался сам ))

2Palladin
:)
Вот попробовал с флагом, но теперь другая ошибка:

if (pole[a,b]=' ') and (TLabel(FindComponent ('Label'+inttostr(a)+inttostr(b))).tag=1) then
  begin
   TLabel(FindComponent ('B'+inttostr(a)+inttostr(b))).visible:=false;
   TLabel(FindComponent ('Label'+inttostr(a)+inttostr(b))).tag:=0;    
   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


http://img222.imageshack.us/img222/4467/errorwd4.gif


Сергей М.   (2008-05-19 15:04:00) [17]


> если не сдам на этой неделе, не получу 5


А раньше, когда времени было достаточно, ты чем был занят ?)


> визуальный режим Delphi мы начали учить 4-5 пар назад


Да он здесь собственно и ни причем.
Только не говори, что понятие рекурсии вам не преподавали)


Palladin   (2008-05-19 15:03:00) [18]

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


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

2Palladin
Я мельком слыщал про переменную Tag, она, насколько я понимаю, уникальна для каждого объекта. Как к ней обратиться?


Palladin   (2008-05-19 14:59:00) [20]

и флага открыто поле или закрыто у тебя конечно нет? ты понимаешь, что твой алгоритм скачет между двумя (и более полями) потому что не знает как ему остановиться?


Страницы:   1 2

Наверх

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