Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 02.11.2010, 17:21
EvgenDRV EvgenDRV вне форума
Прохожий
 
Регистрация: 24.07.2010
Сообщения: 2
Репутация: 10
По умолчанию Проблема с циклами (for)

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

Код:
procedure TMainForm.Timer1Timer(Sender: TObject);
var
n,s,st,i,s2,st2,i2, n2:Integer;
b,z:Cardinal;
begin
SampleGrabber1.GetBitmap(Image.Picture.Bitmap);
s:=119;
st:=159;
for i:=0 to s do
for n:=0 to st do
   begin
b:= GetYValue(image.Picture.Bitmap.Canvas.Pixels[n,i]);
if b>110 then
       begin
       Label1.Caption:='x='+IntToStr(n);
       Label2.Caption:='y='+IntToStr(i);
       exit;
       end;
    end;
//первую точку нашли, ищем вторую... не РАБОТАЕТ МХА-А-А
               s2:=119;
               st2:=n+20;

               for i2:=i+10 to s2 do
               for n2:=n-20 to st2 do

               begin
                 z:= GetYValue(image.Picture.Bitmap.Canvas.Pixels[n2,i2]);
                 if z>110 then
                    begin
                    Label3.Caption:='x='+IntToStr(n2);
                    Label4.Caption:='y='+IntToStr(i2);
                    exit;
                    end;
               end;
end;
Ответить с цитированием
  #2  
Старый 02.11.2010, 17:36
Аватар для Electronic_Arts
Electronic_Arts Electronic_Arts вне форума
Местный
 
Регистрация: 13.07.2006
Адрес: на земле
Сообщения: 562
Версия Delphi: Delphi 11
Репутация: 18
Восклицание

Убери

Код:
...
...
EXIT;
...
...

оно останавливает действие...
__________________
Нет ничего не возможного. Вопрос только во времени...
Ответить с цитированием
  #3  
Старый 02.11.2010, 17:42
EvgenDRV EvgenDRV вне форума
Прохожий
 
Регистрация: 24.07.2010
Сообщения: 2
Репутация: 10
По умолчанию

но тогда будет искать последнюю крайнюю точку... а мне первый цикл нужно сразу остановаить как только первый пиксель появиться. Цикл останавливал другим способом без exit;
s:=i;
st:=n;
непомогло... и кстати если просто exit; убрать второй цикл всё равно не запускается(

Последний раз редактировалось EvgenDRV, 02.11.2010 в 17:48.
Ответить с цитированием
  #4  
Старый 02.11.2010, 18:05
Аватар для v1s2222
v1s2222 v1s2222 вне форума
Продвинутый
 
Регистрация: 07.09.2010
Сообщения: 726
Репутация: 26711
По умолчанию

Вместо Exit - Break попробуй, т.к. Exit выйдет из всех циклов.
__________________
Помогаю за Спасибо
Ответить с цитированием
  #5  
Старый 03.11.2010, 12:22
Аватар для friz
friz friz вне форума
Местный
 
Регистрация: 04.04.2008
Адрес: Минск
Сообщения: 596
Версия Delphi: 2007 & JAVA EE
Репутация: 10670
По умолчанию

exit- выходит из процедуры а break - прекращает цикл
__________________
Последний раз редактировалось Admin, Сегодня в 10:32.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 17:13.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter