Реферат: Семь чудес и два фокуса на Дельфи

Давайте еще раз, повнимательнее рассмотрим выражение abs(low(integer)). Что можно еще сказать про него? Не смотря на наличее в нем функций, это - константа

Читаем Help потеме "Constant expressions":

...Constant expressions cannot include variables, pointers, or function calls, except calls to the following predefined functions: Abs...Low...

попробуем описать константу со значением равным этому выражению:

...

const

ci = abs(low(integer));

...

Figure 3.

Код компилируется. Значит мы - правы, а это значит, что результат выражения определяется еще на стадии компиляции. Далее, low(integer)) имеет целый тип. Abs от integer - тоже целое, а нам нужно int64. Поробуем переписать код следующим образом:

procedureTfrmAllMiracles.btnAbsMrclClick (Sender: TObject);

const

ci = abs(low(integer));

var

i1: int64;

begin

// i1:= abs((low(integer)));

i1:= abs(int64(low(integer)));

ShowMessage(IntToStr(i1));

end;

Figure 4.

Теперь - заработало. Секрет "Абсолютного чуда" раскрыт! Кстати, abs(int64(low(integer))) - тоже константа.

Следующее чудо - пример того, как вполне правильный код отказывается компилироваться.

Чудотретье (One more low integer miracle).

Новая кнопка на форме будет реагировать на нажатие следующим образом:

procedure TfrmAllMiracles.btnLowIntMrclClick( Sender: TObject);

var

lowInt: integer;

begin

К-во Просмотров: 810
Бесплатно скачать Реферат: Семь чудес и два фокуса на Дельфи