MaterStudiorum.ru - домашняя страничка студента.
Минимум рекламы - максимум информации.


Авиация и космонавтика
Административное право
Арбитражный процесс
Архитектура
Астрология
Астрономия
Банковское дело
Безопасность жизнедеятельности
Биографии
Биология
Биология и химия
Биржевое дело
Ботаника и сельское хоз-во
Бухгалтерский учет и аудит
Валютные отношения
Ветеринария
Военная кафедра
География
Геодезия
Геология
Геополитика
Государство и право
Гражданское право и процесс
Делопроизводство
Деньги и кредит
Естествознание
Журналистика
Зоология
Издательское дело и полиграфия
Инвестиции
Иностранный язык
Информатика
Информатика, программирование
Исторические личности
История
История техники
Кибернетика
Коммуникации и связь
Компьютерные науки
Косметология
Краткое содержание произведений
Криминалистика
Криминология
Криптология
Кулинария
Культура и искусство
Культурология
Литература и русский язык
Литература(зарубежная)
Логика
Логистика
Маркетинг
Математика
Медицина, здоровье
Медицинские науки
Международное публичное право
Международное частное право
Международные отношения
Менеджмент
Металлургия
Москвоведение
Музыка
Муниципальное право
Налоги, налогообложение
Наука и техника
Начертательная геометрия
Новейшая история, политология
Оккультизм и уфология
Остальные рефераты
Педагогика
Полиграфия
Политология
Право
Право, юриспруденция
Предпринимательство
Промышленность, производство
Психология
Психология, педагогика
Радиоэлектроника
Разное
Реклама
Религия и мифология
Риторика
Сексология
Социология
Статистика
Страхование
Строительные науки
Строительство
Схемотехника
Таможенная система
Теория государства и права
Теория организации
Теплотехника
Технология
Товароведение
Транспорт
Трудовое право
Туризм
Уголовное право и процесс
Управление
Управленческие науки
Физика
Физкультура и спорт
Философия
Финансовые науки
Финансы
Фотография
Химия
Хозяйственное право
Цифровые устройства
Экологическое право
Экология
Экономика
Экономико-математическое моделирование
Экономическая география
Экономическая теория
Эргономика
Этика
Юриспруденция
Языковедение
Языкознание, филология
    Начало -> Информатика, программирование -> Семь чудес и два фокуса на Дельфи

Название:Семь чудес и два фокуса на Дельфи
Просмотров:92
Раздел:Информатика, программирование
Ссылка:Скачать(10 KB)
Описание:Верите ли Вы в чудеса или нет, Вы наверняка согласитесь со мной, что иногда что-то такое случается с кодом наших программ, и они вдруг перестают компилироваться или, что еще коварнее, начинают выдавать совершенно непредсказуемый результат.

Часть полного текста документа:

Семь чудес и два фокуса на Дельфи Максим Кузьминский
    Верите ли Вы в чудеса или нет, Вы наверняка согласитесь со мной, что иногда что-то такое случается с кодом наших программ, и они вдруг перестают компилироваться или, что еще коварнее, начинают выдавать совершенно непредсказуемый результат. И вот тогда, сознайтесь, вас начинают посещать странные мысли об участии во всех этих чудесах неких потусторонних сил.
    В этой статье мы попытаемся сдернуть таинственный покров с нескольких, самых простых "чудес" и убедимся, что все это - только обман, иллюзия, а зачастую - искусное мошенничество.
    Мы рассмотрим семь (из многих) таких чудес и попробуем разгадать их секреты. Поняв механизм их происхождения, мы, в заключении, покажем два примера использования этих тайных сил в "мирных целях". Наша цель - лучше узнать Delphi и в будущем избежать некоторых труднообъяснимых ошибок.
    Для того, что бы вы поняли, что я имею в виду, давайте рассмотрим один очень простой пример.
    Чудо Первое (Round Miracle).
    Откройте Delphi, создайте новый проект, назовите его AllMiracles, положите кнопку на главную форму и напишите в обработчике события OnClick следующий код:
    procedure TfrmAllMiracles.btnRoundMrclClick(Sender: TObject);
    begin
    ShowMessage( IntToStr( Round(3.5) - Round(2.5) ) );
    end;
    Figure 1.
    А теперь остановитесь и скажите, какой результат вы ожидаете увидеть. Я надеюсь вы не сказали "1", ведь иначе это не было бы чудо. Те, у кого хорошо развита интуиция, могут сказать "0", и это будет еще дальше от правильного ответа. И только те, кто часто играет в Спортлото или, на худой конец, внимательно читает документацию, ответит "2" и это будет правильно. Не верите? - жмите F9.
    Читаем Help по функции Round:
    Round returns an Int64 value that is the value of X rounded to the nearest whole number. If X is exactly halfway between two whole numbers, the result is always the even number.
    Вот такое оно, "Круглое чудо".
    Надеюсь, теперь вы поняли, о чем мы будем говорить сегодня. В этой статье нет сложных, замысловатых примеров. Код - предельно упрощен что бы выделить саму суть проблемы. А наше с вами дело - разобраться в ней и, если можно, исправить ситуацию. Как, например, в следующем случае.
    Чудо Второе (Absolute Miracle).
    Положите на главную форму созданного ранее проекта новую кнопку и напишите в его обработчике события OnClick такой код:
    procedure TfrmAllMiracles.btnAbsMrclClick (Sender: TObject);
    var
    i1: int64;
    begin
    i1:= abs(low(integer));
    ShowMessage(IntToStr(i1));
    end;
    Figure 2.
    Прежде чем нажать F9, проанализируем написаное. Low от integer - значение известное всем, записанное даже в Help'е и равное -2147483648, т.е. число отрицательное.
    Help не говорит о функции Abs ничего нового:
    Abs returns the absolute value of the argument X. X is an integer-type or real-type expression.
    Переменная i1 описана как int64, и это правильно, потому что 2147483648 - уже выходит за границы типа integer. Это значение (2147483648) мы и ожидаем увидеть на экране, не так ли? А вот и нет. Проверьте. На экране вновь - 2147483648. Как абсолютное значение может быть отрицательным?
    Давайте еще раз, повнимательнее рассмотрим выражение 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.
    Код компилируется. ............




Нет комментариев.



Оставить комментарий:

Ваше Имя:
Email:
Антибот:  
Ваш комментарий:  



Похожие работы:

Название:Система забезпечення безпечності харчових продуктів НАССР (Hazard Analysis Control Critical Points)
Просмотров:202
Описание: РЕФЕРАТ   з екотрофології     На тему: «Система забезпечення безпечності харчових продуктів – НАССР (Hazard Analysis Control Critical Points)» Зміст 1. Система забезпечення безпечності харчових продуктів

Название:Creation of control system by a personnel how to begin with a zero
Просмотров:345
Описание: Theme Creation of control system by a personnel : how to begin with a zero PLAN Entry 1. Managers are from a personnel 2. Skilled strategy Conclusion 3. Basic processes which must exist in a company, from the point of view of management human capitals Literature ENTRY

Название:Чудо о Теофиле (Le miracle de Theopfile)
Просмотров:122
Описание:Рютбеф (Rutebeuf) ок. 1230-1285. Французская литература.

Название:Путешествуя по TObject. Или как оно работает
Просмотров:337
Описание:Каждый класс в Delphi является наследником TObject, и, соответственно, обладает всеми его свойствами и методами. Это, несомненно, полезный факт, но каковы его методы и свойства, каковы его основные свойства и как их можно использовать?

Название:Gun control
Просмотров:106
Описание: America is faced with a growing problem of violence. Streets have become a battlefield where the people can be beaten for a couple dollars, where women can be brutally attacked and raped. Every day criminals t

 
     

Вечно с вами © MaterStudiorum.ru