Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ПЯВУ.docx
Скачиваний:
2
Добавлен:
23.04.2019
Размер:
210.36 Кб
Скачать

44.Класс tStream и его потомки – потоки данных.

Потоки данных в Delphi представляют собой обобщенную модель двоичных данных, для унификации ввода/вывода на разные носители информации. Родоначальником всех потоков является абстрактный класс TStream. Объекты класса TStream «умеют» открываться, читать, писать, изменять текущее положение и закрываться.

От этого класса порождены 6 специализированных потомков: TFileStream (файловый поток), TMemoryStream (обмен данными с памятью), TStringStream (строковый поток), TBLOBStream (поток обмена данными с полями типа ВLОB), TWinSocketStream (поток обмена с cокетами), ТОLЕStream (используется в технологии СОМ). Каждый из этих потомков обладает возможностью сохранять в потоке или читать из него объекты — эта способность является главным отличием потоков от обычных файловых операций. Поэтому, область их применения отлична от файлов — потоки находят применение в первую очередь при работе с компонентами.

Многие классы имеют унифицированные методы LoadFromStream, SaveToStream, которые обеспечивают обмен данными с потоками.

Свойства потоков:

Property position:int64 read getposition write setposition;-определяет текущую позицию потока,то есть то место,начиная с которого будет происходить обмен данными с программой.

Propery size: int64 read getsize write setsize;-определяет размер потока в байтах.

Методы потока класса TStream:

Function copyfrom(source:Tsream;count:longint):longint;-копирует из потока sourcecount байт,начиная с текущей позиции потока.

Function read(var buffer;count:longint):longint;virtual;abstract;-читает из потока count байт в буфер buffer.сдвигает текущую позицию на количество прочитанных байтов.

В основе операций считывания и записи данных в потоке лежат методы Read, Write. Именно они вызываются для реального выполнения внутри методов ReadBuffer, WriteBuffer, ReadComponent, WriteComponent. Эти методы являются абстрактными, они перекрываются в потомках, обеспечивая работу с конкретным физическим носителем данных потока.

Метод Seek используется для изменения текущей позиции в потоке: если Origin=soFromBeginning(0), то Offset определяет новую позицию в потоке; если Origin=soFromEnd(2), позиция смещается на Offset байт от конца потока.

Группа методов обеспечивает чтение (ReadComponentRes) и запись (WriteComponentRes) из потока ресурса компонента. Они используются при создании компонента на основе данных о них, сохраненных в формате файлов ресурсов.

45. Глобальный объект Application.

Объект Application относится к классу TApplication и инкапсулирует важнейшие свойства и методы программы как таковой. В частности, он обрабатывает клавши быстрого доступа, исключительные ситуации и т.д. Основные свойства класса ТApplication приведены в табл. 6.1. Ряд свойств объекта Application могут быть изменены командой Project->Options.св-ва:

Property active:Boolean read fAtive;-равно true если любое окно программы имеет фоку ввода.

Property exename:string read getexename;-имя исполняемого файла с путем.

Property helpfile:string read FhelpFile write FHelpFile;-имя файла справочной службы.

Методы:procedure activehint(cursorPos:TPoint);-показывает оперативную подсказку в заданной координатам cursorpos позиции экрана.

Procedure bringToFront;-помещает окно,которое было активным в последний раз,поверх остальных окон.

Procedure cancelHint;-запрещает поеаз оперативный подсказки;

С помощью методов HandleException и ProcessMessages программа может временно приостановить свою работу до тех пор, пока не будут обработаны все предназначенные ей сообщения. Это бывает необходимо для обновления видимых компонентов в процессе отображения длительного времени цикла работы (например, ProgressBar).

Функция MessageBox дает удобное средство вывода на экран небольшого сообщения. Параметр Flags задает количество и тип кнопок на окне (ОК, Cancel), а также кнопку по умолчанию; он же определяет вид изображений в окне (восклицательный знак, буква i и т.п.) и другие параметры окна. Функция MessageBox возвращает целое значение от 1 до 6, определяющее тип нажатой клавиши или О — в случае ошибки.

События класса TAррlication:

Property OnActivate:TNotifyEvent read FOnActivate write FONActivate;-возникает,когда прогрмма получает фокус ввода.

Property OnDeactivate:TNotifyEvent read FOnDeactivate write FOnDeactivate;-возникает,когда программа треряет фокус ввода.

Событие onIdle возникает, когда программа обнаруживает, что ее очередь сообщений пуста. Обработчик этого события может незаметно для пользователя ВЫПОЛНИТЬ вспомогательную работу, например, проверить орфографические ошибки или собрать и обработать статистические данные. При этом выполняемая в обработчике работа не должна занимать много времени. Если фоновая работа занимает много времени, ее следует разбить на части и периодически вызывать метод HandleMessage. Обработчик в параметре Done сообщает о необходимости продолжить фоновую работу (Done=False) или об ее завершении. В первом случае программа просмотрит очередь сообщений и после ее очистки вернет управление обработчику onIdle. Во втором случае программа будет ожидать поступления новых сообщений. Вообще, в 32-разрядлых версиях Windows рекомендуется вместо этого способа организовывать отдельный поток команд и фоновую работу осуществлять в нем.

46. Глобальный объект Screen. Объект Screen класса ТScreen инкапсулирует свойства и методы, упрощающие работу с дисплеем компьютера, например с для изменения указателя мыши используется его свойство Cursor. Большинство свойств объекта Screen доступны только для чтения. Наиболее важные свойства:property activecontrol:twincontrol;-ссылка на элемент с фокус ввода.

Property activeform:tform;-ссылка на фокусом ввода.

Property cursor:Tcursor;-текущий указатель мыши для окон программы.

Property cursor[Index:integer]:hcursor;-открывает доступ к зарегестрированным указателям мыши по индексам.

Property forms[index:integer]:TForm;-открывает доступ к окну программы по его индексу.

Property height:integer-высота экрана в пикселях.

Property menufont:tfont-шриф команды меню.

Property width:integer;-ширина экрана в пикселях;

Property datamodules[index:integer]:TDataModule;-список модулей данных.

При работе под управлением W2000/ХР программа может работать со множеством мониторов, которые в совокупности образуют первичный монитор, составленный из остальных слева направо и сверху вниз. Ряд свойств DesktopXXXХ определяют положение и размеры текущего монитора в координатах первичного. Если программа работает с единственным монитором, значения этих свойств и свойств XXXХ (Height, Width и т.д.) совпадают. Свойство MonitorCount содержит общее количество обслуживаемых мониторов.

С объектом Screen связаны 2 события:

Property OnActiveControlChange: TNotifyEvent — возникает при переходе фокуса ввода от одного элемента другому;

Property OnActiveFormChange: TNotifyEvent — возникает при переходе фокуса ввода от одной формы к другой