pupsik писал(а):А кто его знает. Писал на глаз.
Функция проста по логике и мала по тексту.
Значит, городить огород ради некой "правильности" - глупо. По моему личному мнению.
Модератор: Модераторы
pupsik писал(а):А кто его знает. Писал на глаз.
sign писал(а):Не понимаю, чего боятся некоторых конструкций языка?
Я вот так всегда пишу, удобно и всё ясно:
- Код: Выделить всё
function TSheet.IconFocus: TIBase;
var i: Integer;
begin
for i := 0 to FSBox.ControlCount-1 do
if (FSBox.Controls[i] is TIBase) and (TIBase(FSBox.Controls[i]).Status=csFocus)
then Exit(TIBase(FSBox.Controls[i]));
Result := nil;
end;
pupsik писал(а):А кто его знает. Писал на глаз.
- Код: Выделить всё
function TSheet.IconFocus: TIBase;
var
i: Integer;
a_a : boolean;
begin
Result := nil;
i := 0;
a_a := False;
repeat
if FSBox.Controls[i] is TIBase) and (TIBase(FSBox.Controls[i]).Status=csFocus then
a_a := True;
inc(i);
until a_a or i := FSBox.ControlCount-1;
if not a_a then
Result := nil
else
Result := TIBase(FSBox.Controls[i]);
end;
:= 0;
Result := nil;
while ( i < FSBox.ControlCount ) and ( Result = nil ) do begin
if (FSBox.Controls[i] is TIBase) and (TIBase(FSBox.Controls[i]).Status=csFocus)
then Result := TIBase(FSBox.Controls[i]);
inc(i);
end;
i:= 0;
Result := nil;
while (i < FSBox.ControlCount) and (FSBox.Controls[i] is TIBase) and (TIBase(FSBox.Controls[i]).Status=csFocus) do
inc(i);
if i < FSBox.ControlCount then
Result := TIBase(FSBox.Controls[i]);
dedm0zaj писал(а):недавно использовал гото как выход из системы циклов. это было реально удобно.
Дож писал(а):(2) поменяв простой for-range цикл на repeat-until
Mirage писал(а):Дож писал(а):(2) поменяв простой for-range цикл на repeat-until
Вы на полном серьёзе утверждаете, что цикл for, по факту состоящий из присваивания и собственно цикла, проще, нежели просто цикл?
for i := 0 to FSBox.ControlCount-1 do
DoSomething;
i := 0;
repeat
DoSomething;
inc(i);
until a_a or i := FSBox.ControlCount-1;
Вернуться в Обучение Free Pascal
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3