Форум: "Начинающим";
Текущий архив: 2017.03.19;
Скачать: [xml.tar.bz2];
ВнизВопрос по 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;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.001 c