|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Проблема с циклами (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
|
||||
|
||||
Убери
Код:
... ... EXIT; ... ... оно останавливает действие... Нет ничего не возможного. Вопрос только во времени... |
#3
|
|||
|
|||
но тогда будет искать последнюю крайнюю точку... а мне первый цикл нужно сразу остановаить как только первый пиксель появиться. Цикл останавливал другим способом без exit;
s:=i; st:=n; непомогло... и кстати если просто exit; убрать второй цикл всё равно не запускается( Последний раз редактировалось EvgenDRV, 02.11.2010 в 17:48. |
#4
|
||||
|
||||
Вместо Exit - Break попробуй, т.к. Exit выйдет из всех циклов.
Помогаю за Спасибо |
#5
|
||||
|
||||
exit- выходит из процедуры а break - прекращает цикл
Последний раз редактировалось Admin, Сегодня в 10:32. |