Главная » Статьи для тега "только"

Форматы адресации данных LBA и CHS

Добавлено Дата: 9 May, 2011 категория: Ассемблер, Железо

Если у программиста возникает потребность в работе с диском на низком уровне (то есть на уровне BIOS или дискового контроллера), то он должен знать формат носителя информации, чтобы получить доступ к данным. Понятие «формат носителя информации» включает в себя:

Читать »

Динамические массивы, строки и TMemoryStream

Добавлено Дата: 7 May, 2011 категория: Delphi

Читатель, несомненно, давно уже недоумевает: а зачем все это, если есть штука, которая так и называется — динамические массивы (они были введены в Delphi, начиная с версии 4)? Ну, во-первых, при побайтном поступлении больших чисел удобнее и быстрее механизма их преобразования, чем только что изложенный, я все равно не знаю (приближается к нему— по удобству— только механизм TStream, о котором далее). Но главное не в этом. Динамические массивы, в том числе строки типа string (которые отличаются от первых только тем, что в них не надо специально следить за текущей длиной, это делается автоматически), используют описанный ранее механизм динамического наращивания длины блоков памяти, и потому при больших объемах данных работают медленно. Утверждается, например, что время выполнения операции типа st:=st+chr (byte) пропорционально квадрату длины строки. Лучше уж использовать обычные массивы, но, на мой вкус, работа с указателями куда гибче и удобнее. Подчеркиваю — морочить себе этим всем голову стоит только при больших объемах данных, поступающих с большой скоростью. Иначе можно спокойно использовать любые механизмы.

Читать »

Режимы адресации и распределение видеопамяти

Добавлено Дата: 1 May, 2011 категория: Ассемблер, Железо

Как было указано выше, существует два основных метода адресации видеопамяти в графических режимах: устаревший сегментный и современный линейный. В режиме сегментации видеопамять поделена на 64-килобайтные кусочки — окна, причем в каждый момент времени для работы доступен только один такой сегмент. Доступ ко всем сегментам осуществляется через 64-килобайгный участок адресного пространства процессоров х86 с абсолютным адресом AOOOOh. Режим сегментации имеет два серьезных недостатка, заметно снижающих скорость работы видеосистемы:

Читать »

Доделываем SlideShow

Добавлено Дата: 30 April, 2011 категория: Delphi

Настало время нам довести до ума наш самый первый проект— SlideShow. Точнее, доделать функциональную часть— потому что в дальнейшем мы еще обязаны "прикрутить" к нему как минимум справку. Так как, несмотря на довольно навороченный код (а то ли еще будет!), у нас эта программа все равно останется в одном-единственном файле (кроме справки, которую все равно лучше располагать всегда отдельно) и не требует ровным счетом никаких системных установок1, то возиться с инсталлятором здесь просто ни к чему. И доведя в этой главе до некоторого логического конца функциональность SlideShow, а в следующей — расправившись со справкой, мы на этом с ней закончим. Я решил посвятить доработке SlideShow специальную главу, т. к., чтобы программой было удобно пользоваться, доделывать придется довольно много, и при этом все равно мы ее по большому счету не доделаем. Хотя некоторые приемы вы здесь встретите впервые, большинство операций вам уже знакомы по предыдущим главам — если бы мы вводили их здесь по ходу доработки, то эта глава растянулась бы на полкниги и освоить ее было бы значительно труднее.

Читать »

Полируем почти до блеска

Добавлено Дата: 29 April, 2011 категория: Delphi

Во-первых, т. к. процесс долгий (и в общем случае останется таковым даже после модернизации), никто не будет смотреть на экран все время, пока идет поиск, и неплохо бы выводить в заголовок свернутой программы проценты выполнения "плана" — фактически то, что показывает ползунок.

Читать »

Доработка программы Trace пример работы с DOC- и RTF-файлами

Добавлено Дата: 26 April, 2011 категория: Delphi

И тут мы вспомним про нашу программу Trace, которую я не без умысла довел до некоторого логического конца, и только теперь обратился к теме чтения DOC- и RTF-файлов. Можно ли включить функцию чтения этих форматов в нее и что из этого выйдет? Для этого нам придется сначала еще раз обратиться к демонстрационной программе WordTxt и погонять ее под различными версиями Office, Тогда мы увидим, что на OfTice ХР наше указание WordApp.visibie:=False действует очень своеобразно: при создании объекта Word ХР действительно не виден, но вот в процессе выполнения процедуры загрузки документа он появляется на экране, причем еще и норовит вылезти "on top". Word 97 ведет себя куда скромнее и действительно работает в фоновом режиме, как мы указали. По этой причине довести таким образом Trace до ума во всех вариантах не удастся — все время открытый (и тем более то появляющийся, то пропадающий) в процессе поиска Word нам не нужен совершенно. Так что версия программы Trace, которую мы сделаем, будет работать на поиск DOC- и RTF-файлов только в присутствии Word 97. Вполне вероятно, что нормальная работа возможна и в других отличных от Office ХР версиях, но я этого проверить не смог — читатель, несомненно, при желании сделает это без труда.

Читать »

Основы основ HTML

Добавлено Дата: 25 April, 2011 категория: Delphi

Небольшую справку в формате HTML можно сделать, конечно, в любом HTML-редакторе. Способ этот не является оптимальным по одной только причине: практически любой редактор создает HTML-код. намного превышающий по объему необходимый и достаточный. Рекордсменом в этом смысле является, конечно, MS Word и, к счастью почти забытый, MS FrontPage, но и остальные немногим лучше. Я покажу сейчас, как можно превратить вручную с помощью всего нескольких тегов HTML любой текст в красивую и удобную справку. При создании HTML-странички таким образом удобно использовать текстовые редакторы, которые имеют подсветку синтаксиса HTML. Некоторые из них (Edit Plus) позволяют при этом и одновременно просматривать вид готовой странички в параллельном окне (обычно используя точно такой же WebBrowser, как и у нас в программе Trace), но это необязательно — проверять результат можно и через стандартный браузер.

Читать »

Клавиатурный шпион

Добавлено Дата: 21 April, 2011 категория: Delphi

Для того чтобы отработать создание ловушек и заодно создать заготовку для переключателя клавиатуры, мы сначала сделаем простой вариант ловушки, который будет ничем иным, как типичным Spyware — т. е. программой- шпионом, которая перехватывает нажатия всех системных клавиш и отправляет их в текстовый файл. Настоящий "шпион" должен еще регистрироваться в реестре для автоматического запуска и периодически отправлять созданный файл по электронной почте, а нам это ни к чему — мы будем создавать такой перехватчик, разумеется, не для шпионажа, и даже не просто для тренировки, а с вполне прагматической целью— изучение описанного ранее параметра LParam для всяких дополнительных клавиш, которые нельзя различить через MapVirtualKey.

Читать »

Начинаем работу Создаем типичное приложение

Добавлено Дата: 19 April, 2011 категория: Delphi

В качестве базового приложения мы создадим просмотрщик слайдов. Это, с одной стороны, функционально достаточно богатая вещь, и содержит в себе примеры многих типичных задач, возникающих при создании пользовательских программ. С другой стороны— само по себе приложение несложное, что позволит нам не отвлекаться на частности. В иллюстративных целях я опишу процесс создания достаточно подробно. Хотя в этой главе вы ничего, выходящего за рамки обычной работы в среде Delphi, не встретите, но подробности позволят даже самому неискушенному читателю избежать потерь времени на разрешение многих частных проблем, возникающих при создании приложений. А тем, кто процесс создания приложения уже знает достаточно хорошо, я все же рекомендую не просто скопировать проект с прилагаемого диска, а просмотреть эту главу хотя бы по диагонали — возможно, вы встретите здесь некоторые вещи, о которых ранее не знали.

Читать »

Переключатель с заменой системной иконки — промежуточный вариант

Добавлено Дата: 16 April, 2011 категория: Delphi

Начнем с иконок. Главную иконку приложения заменим на Keyboard.ico (находится в папке с проектом). Для того чтобы добавить свои иконки, нам придется несколько забежать вперед и включить их в ресурсы приложения (о ресурсах мы подробнее поговорим в следующих главах).

Читать »

Сворачивание приложения в Tray Bar вместо минимизации

Добавлено Дата: 11 April, 2011 категория: Delphi

Это действие нам понадобится в дальнейшем (см. главу 10). Реализация его сложнее, здесь нет столь же простого пути, как при дефокусировке и при закрытии формы — отдельно события onMinimize для формы не существует. Существует только событие Application.onMinimize для приложения в целом — как же его использовать?

Читать »

Регистры видеоконтроллера

Добавлено Дата: 10 April, 2011 категория: Ассемблер, Железо

Необходимость непосредственной работы с регистрами видеоконтроллера реально возникает только после перехода в защищенный режим работы процессора Intel х86, когда недоступны видеофункции BIOS.

Управление режимом работы внешнего устройства путем прямой записи информации в его регистры — анахронизм, и довольно опасный. Установка режима, не поддерживаемого подключенным к контроллеру монитором, или запись ошибочного значения в один из регистров может привести к поломке оборудования (контроллера или монитора). Все операции переключения режимов может и должен выполнять собственный процессор контроллера, а не центральный процессор компьютера. Однако, пока изготовители вынуждены придерживаться допотопной технологии управления (для обеспечения совместимости с VGA), необходимо помнить правила работы с регистрами видеоконтроллера.

Читать »

Программа для чтения данных с GPS-навигатора

Добавлено Дата: 10 April, 2011 категория: Delphi

Теперь создадим для примера вполне практическую программу для общения компьютера с GPS-навигатором по протоколу NMEA. В качестве прототипа используем процедуру с использованием компонента AsyncFree, но читатель, при нежелании устанавливать этот компонент, без сомнения, легко перепишет ее с использованием функций API. Тем более что общение с устройством тут полностью одностороннее.

Читать »

Резидентный переключатель раскладки

Добавлено Дата: 8 April, 2011 категория: Delphi

Отметим для начала, что в Windows понятие "раскладка" достаточно размытое, и об этом подробнее мы будем говорить в следующей главе. Здесь мы только установим, что под "раскладкой" будем понимать то, что имелось в виду традиционно — а именно переключение вида отображаемых экранных символов при нажатин клавиш на клавиатуре.

Читать »

Прием и передача в реальном времени

Добавлено Дата: 7 April, 2011 категория: Delphi

В DOS для организации режима реального времени было достаточно просто зациклить процедуру, которая все время определяет, поступил ли байт в приемный регистр UART, и при поступлении немедленно его обрабатывает. Второй вариант— организовать работу по аппаратным прерываниям от СОМ-порта. По прерыванию принятый байт складывается в некий буфер в памяти, сама же прогрвмма при этом мало чем отличается от первого варианта — она так или иначе в цикле должна проверять наличие байтов в буфере.

Читать »