Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Вопрос по CenteredRect


vadim83 ©   (2015-07-07 21:14:00) 

Пытаюсь читать чужой код в проекте (XE2). Вижу какую-то "глупость" в виде:
procedure CalcMyRect1(var R: TRect);
var rc, R1: TRect;
begin
 rc := GetDefaultRect;
 R1 := R;
 R := CenteredRect(rc, R1);
end;


В другом месте есть такие варианты:
procedure CalcMyRect2(var R: TRect);
var rc, R1: TRect;
begin
 rc := GetDefaultRect;
 R1 := R;
 R := CenteredRect(rc, R1);
end;


Суть в том, что почему-то предыдущий разработчик "побоялся" передать в CenteredRect параметр R напрямую. Есть ли в этом особый смысл? А то мне начинается казаться, что я уже ничего не понимаю в паскале.

Код CenteredRect лежит себе в System.Types и ничего подозрительного не вызывает:
function CenteredRect(const SourceRect: TRect; const CenteredRect: TRect): TRect;
var
 Width, Height: Integer;
 X, Y: Integer;
begin
 Width := RectWidth(CenteredRect);
 Height := RectHeight(CenteredRect);
 X := (SourceRect.Right + SourceRect.Left) div 2;
 Y := (SourceRect.Top + SourceRect.Bottom) div 2;
 Result := Rect(X - Width div 2, Y - Height div 2, X + (Width + 1) div 2, Y + (Height + 1) div 2);
end;


Игорь Шевченко   (2015-07-07 21:44:00) [1]

vadim83   (07.07.15 21:28) [2]


R := CenteredRect (R, GetDefaultRect);


Так проще


> Есть ли в этом особый смысл?


Нет, смысла нету.


vadim83   (2015-07-07 21:28:00) [2]

Вторая функция получилась одинаковой с первой, вот она, там просто местами поменяны R1 и rc.

procedure CalcMyRect2(var R: TRect);
var rc, R1: TRect;
begin
rc := GetDefaultRect;
R1 := R;
R := CenteredRect(R1, rc);
end;


Дмитрий С   (2015-07-07 21:26:00) [3]

Полагаю, что он не смотрел как устроена CenteredRect, и побоялся того, что функция может не ожидать ссылку в одно и то же место в памяти в качестве параметра и возвращаемого результата.


Наверх

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