|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#31
|
||||
|
||||
А что в нем так? Вот что это такое?
Код:
SetLength(byteArray, 5); for i := 0 to (Length(byteArray)-1) do begin byteArray[0] := StrToInt(Edit1.Text); byteArray[1] := StrToInt(Edit2.Text); byteArray[2] := StrToInt(Edit3.Text); byteArray[3] := StrToInt(Edit4.Text); byteArray[4] := StrToInt(Edit5.Text); end; Дальше идем. Код:
z1:=0; while z1 > 0 do Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |
#32
|
|||
|
|||
Я думаю что лучше всего здесь подойдет оператор цикла с постусловием (" repeat... until... ; "), как мне лучше прописать условие для этого цикла?
|
#33
|
||||
|
||||
Пробуй так:
Код:
while True do begin ... if z1 = 0 then Break; end; repeat ... if z1 = 0 then Break; until True; Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |
#34
|
|||
|
|||
Если использовать:
Код:
while True do begin ... if z1 = 0 then Break; end; Код:
repeat ... if z1 = 0 then Break; until True; |
#35
|
|||
|
|||
возможно что то не так с телом цикла, а не с самим циклом? посмотрите, пожалуйста может найдете ошибку.
|
#36
|
||||
|
||||
Так не нужно копировать бездумно. Я не зря троеточие поставил, там должен выполняться твой код, а заодно изменяться значение z1.
Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |
#37
|
|||
|
|||
ну я так и делал...
|
#38
|
||||
|
||||
Код:
while True do begin min1 := 0; for I := 1 to (Length(byteArray)-1) do if byteArray[i] < byteArray[min1] then min1 := i; x1 := StrToInt(Edit21.Text); case min1 of 0 : begin Edit1.Color := clLime; yy1 := StrToInt(Edit16.text); z1 := x1 - yy1 - z1; end; 1 : begin Edit2.Color := clLime; yy1 := StrToInt(Edit17.text); z1 := x1 - yy1 - z1; end; 2 : begin Edit3.Color := clLime; yy1 := StrToInt(Edit18.text); z1 := x1 - yy1 - z1; end; 3 : begin Edit4.Color := clLime; yy1 := StrToInt(Edit19.text); z1 := x1 - yy1 - z1; end; 4 : begin Edit5.Color := clLime; yy1 := StrToInt(Edit20.text); z1 := x1 - yy1 - z1; end; end; for I := min1 to Length(byteArray) - 2 do byteArray[i] := byteArray[I + 1]; SetLength(byteArray, Length(byteArray) - 1); if z1 = 0 then Break; end; Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |
#39
|
|||
|
|||
ввел первоначальное значение z1 и даже в теле цикла все через case прописал. все равно ошибка......
|
#40
|
||||
|
||||
Ты издеваешься? Штатный телепат сейчас не в сети, а я не знаю, что там происходит в строке 17. Ой ошибся в 34, не... наверное в 45.
Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |
#41
|
|||
|
|||
вот что у меня получилось
Код:
procedure TForm1.BitBtn2Click(Sender: TObject); var byteArray : Array of integer; i:integer; min1,x1,yy1,z1: Integer; begin SetLength(byteArray, 5); byteArray[0] := StrToInt(Edit1.Text); byteArray[1] := StrToInt(Edit2.Text); byteArray[2] := StrToInt(Edit3.Text); byteArray[3] := StrToInt(Edit4.Text); byteArray[4] := StrToInt(Edit5.Text); z1:=0; repeat min1 := 0; for I := 1 to (Length(byteArray)-1) do if byteArray[i] < byteArray[min1] then min1 := i; x1 := StrToInt(Edit21.Text); case min1 of 0 : begin Edit1.Color := clLime; yy1 := StrToInt(Edit16.text); z1 := x1 - yy1 - z1; end; 1 : begin Edit2.Color := clLime; yy1 := StrToInt(Edit17.text); z1 := x1 - yy1 - z1; end; 2 : begin Edit3.Color := clLime; yy1 := StrToInt(Edit18.text); z1 := x1 - yy1 - z1; end; 3 : begin Edit4.Color := clLime; yy1 := StrToInt(Edit19.text); z1 := x1 - yy1 - z1; end; 4 : begin Edit5.Color := clLime; yy1 := StrToInt(Edit20.text); z1 := x1 - yy1 - z1; end; end; for I := min1 to Length(byteArray) - 2 do byteArray[i] := byteArray[I + 1]; SetLength(byteArray, Length(byteArray) - 1); if z1 <= 0 then Break; until True; Label16.Caption:= IntToStr(z1); end; |
#42
|
||||
|
||||
Нужно тестировать в пошаговом режиме прервётся цикл или зациклится, дерзай.
Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |
#43
|
|||
|
|||
цикл прерывается. как избежать прирывания?
|
#44
|
||||
|
||||
Ну почему из тебя слова клещами вытаскивать нужно? Кому сдавать программу мне или тебе? Как, при каких услових прерывается? "шагать" пробовал?
Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |
#45
|
|||
|
|||
Код:
repeat min1 := 0; for I := 1 to (Length(byteArray)-1) do if byteArray[i] < byteArray[min1] then min1 := i; x1 := StrToInt(Edit21.Text); case min1 of 0 : begin Edit1.Color := clLime; yy1 := StrToInt(Edit16.text); z1 := x1 - yy1 - z1; end; 1 : begin Edit2.Color := clLime; yy1 := StrToInt(Edit17.text); z1 := x1 - yy1 - z1; end; 2 : begin Edit3.Color := clLime; yy1 := StrToInt(Edit18.text); z1 := x1 - yy1 - z1; end; 3 : begin Edit4.Color := clLime; yy1 := StrToInt(Edit19.text); z1 := x1 - yy1 - z1; end; 4 : begin Edit5.Color := clLime; yy1 := StrToInt(Edit20.text); z1 := x1 - yy1 - z1; end; end; for I := min1 to Length(byteArray) - 2 do byteArray[i] := byteArray[I + 1]; SetLength(byteArray, Length(byteArray) - 1); if z1 <= 0 then Break; //шагает отсюда until True; Label16.Caption:= IntToStr(z1); //сразу сюда, не затрагивая until end; |