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

ShowMessageFmt('%d',[lowInt]);

end;

Figure 4.

Совершенно обычная процедура. У нас возникло желание присвоить некоторой переменной вполне законное значение. Ноэтоткоднекомпилируется:

Overflow in conversion or arithmetic operation

Жмем F1 на сообщении об ошибке и читаем:

The compiler has detected an overflow in an arithmetic expression: the result of the expression is too large to be represented in 32 bits.

Видимо компилятор пытается определить константу целого типа со значением 2147483648, а только затем изменить ее знак, но это ему не удается. Перепишемкод:

procedure TfrmAllMiracles.btnLowIntMrclClick( Sender: TObject);

var

lowInt: integer;

begin

lowInt := -int64(2147483648);

// lowInt := -2147483648;

ShowMessageFmt('%d',[lowInt]);

end;

Figure 5.

Вот теперь - все нормально. Пример очень незамысловат, но дает нам представление о том, как компилятор Delphi обрабатывает константы и определяет их тип.

А вот следующее чудо - пример того, к какой путанице может привести перегрузка функций. Такие чудеса мы зачастую сами устраиваем себе по невнимательности, а потом часами ищем ошибки.

Чудо четвертое (String Trick).

Ну, что ж, добавим опять кнопку на нашу форму и зададим следующий код для события OnClick:

procedure TfrmAllMiracles.btnCopyMrclClick (Sender: TObject);

const

cs: array[0..1] of char='01';

begin

ShowMessage(copy(cs,0,1)+copy(cs,1,1));

end;

Figure 6.

Я знаю, что вы уже ждете подвоха и все же результат может оказаться неожиданным: "00".

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