Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2017.03.19;
Скачать: CL | DM;

Вниз

Вопрос по CenteredRect   Найти похожие ветки 

 
vadim83   (2015-07-07 21:14) [0]

Пытаюсь читать чужой код в проекте (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:26) [1]

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


 
vadim83   (2015-07-07 21:28) [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:44) [3]

vadim83   (07.07.15 21:28) [2]


R := CenteredRect (R, GetDefaultRect);


Так проще


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


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



Страницы: 1 вся ветка

Текущий архив: 2017.03.19;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.004 c
2-1436523298
Цукор5
2015-07-10 13:14
2017.03.19
открыть папку по некоторому пути (Win7,8)


15-1458927964
эндсоувот
2016-03-25 20:46
2017.03.19
???


2-1435930281
Степанов Михаил В.
2015-07-03 16:31
2017.03.19
Ошибка структуры БД


2-1436212529
Дмитрий С
2015-07-06 22:55
2017.03.19
Сравнение Double


1-1349853892
mfender
2012-10-10 11:24
2017.03.19
Переменные из окна браузера