Вход

Поиск

Опрос

Какой материал вас больше интересует?
Всего ответов: 4

Чат

Партнеры

Последние престанище космос
Суббота, 20.04.2024, 05:01
Приветствую Вас Гость
Главная | Регистрация | Вход | RSS
Главная » Файлы » Другии материалы

Контрольная работа №2 по курсу «Операционные системы» Вариант 16
[ Скачать с сервера (254.5 Kb) ] 15.01.2016, 22:00

МИНОБРНАУКИ РОССИИ

ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ АВТОНОМНОЕ

ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ОБРАЗОВАНИЯ

«САМАРСКИЙ ГОСУДАРСТВЕННЫЙ АЭРОКОСМИЧЕСКИЙ УНИВЕРСИТЕТ имени академика С.П.КОРОЛЕВА (НАЦИОНАЛЬНЫЙ ИССЛЕДОВАТЕЛЬСКИЙ УНИВЕРСИТЕТ)» (СГАУ)

 

 

 

 

 

Факультет заочного обучения
 

 

 

 

 

 

Контрольная работа  №2

по курсу
«Операционные системы»

Вариант 16

 

 

 

 

 

 

 

 

 

Выполнил:

студент группы 9637 Б358
Мельник Д.В.
Проверил:

 Агафонова С.Е.

 

 

 

 

 

 

                                                   

 

 

 

 

 

Самара, 2016

Задание:

Опишите класс TRegistry модуля Registry.pas. Создайте приложение, которое хранит свои настройки в реестре. В качестве настроек должны быть целочисленные, текстовые, булевые данные. Включите в настройки также положение и размеры формы окна приложения.

Описание класса TRegistry

Прежде чем рассмотреть пример использования свойств и методов класса TRegistry, кратко перечислю их.

В следующей таблице перечислены свойства класса TRegistry.

Свойство

Описание

CurrentKey

Позволяет узнать текущую подсекцию, в которой проводятся операции по чтению и записи. Для изменения подсекции следует использовать методы OpenKey и OpenKeyReadOnly

CurrentPath

Позволяет узнать полное название текущей подсекции

LazyWrite

Задает способ обновления информации в реестре – непосредственно или после вызова метода CloseKey.

RootKey

Задает корневую секцию в реестре. По умолчанию установлено значение HKEY_CURRENT_USER

В следующей таблице перечислены методы класса TRegistry.

Метод

Описание

CloseKey

Записывает внесенные изменения и закрывает текущую подсекцию

Create

Создает экземпляр класса TRegistry и задает значение корневой секции - HKEY_CURRENT_USER

CreateKey

Создает подсекцию

DeleteKey

Удаляет подсекцию

DeleteValue

Удаляет значение элемента

Destroy

Уничтожает ранее созданный экземпляр класса TRegistry

GetDataInfo

Возвращает тип данных для указанного элемента

GetDataSize

Возвращает размер данных для указанного элемента

GetDataType

Возвращает тип данных для указанного элемента

GetKeyInfo

Возвращает информацию о текущем элементе

GetKeyNames

Возвращает имена подсекций для указанной секции

GetValueNames

Возвращает названия элементов для указанной подсекции

HasSubKeys

Позволяет узнать, имеются ли подсекции для указанной секции

KeyExists

Позволяет узнать, существует ли элемент

LoadKey

Создает новую подсекцию и загружает в нее информацию из указанного файла

MoveKey

Перемещает указанную подсекцию и все вложенные подсекции в заданное место

OpenKey

Открывает подсекцию

OpenKeyReadOnly

Открывает подсекцию только для чтения

ReadBinaryData

Считывает данные в бинарном формате

ReadBool

Считывает данные в булевом формате

ReadCurrency

Считывает данные в формате валюты

ReadDate

Считывает данные в формате даты

ReadDateTime

Считывает данные в формате “дата/время”

ReadFloat

Считывает данные в формате с плавающей точкой

ReadInteger

Считывает данные в целочисленном формате

ReadString

Считывает данные в строчном формате

ReadTime

Считывает данные в формате времени

RegistryConnect

Устанавливает соединение с реестром на другом компьютере

RenameValue

Переименовывает элемент

ReplaceKey

Замещает значение элемента значениями из файла

RestoreKey

Восстанавливает значение элемента из файла

SaveKey

Сохраняет значение элемента в файле

UnLoadKey

Удаляет подсекцию, загруженную методом LoadKey

ValueExists

Позволяет узнать, существует ли значение у элемента

WriteBinaryData

Записывает данные в бинарном формате

WriteBool

Записывает данные в булевом формате

WriteCurrency

Записывает данные в формате валюты

WriteDate

Записывает данные в формате даты

WriteDateTime

Записывает данные в формате “дата/время”

WriteExpandString

Записывает данные в формате "расширенно" строки

WriteFloat

Записывает данные в формате с плавающей точкой

WriteInteger

Записывает данные в целочисленном формате

WriteString

Записывает данные в строчном формате

WriteTime

Записывает данные в формате времени

После того как я кратко познакомил со свойствами и методами класса TRegistry, давайте рассмотрим несколько примеров их использования.

 

Инициализация

Перед использованием свойств и методов класса TRegistry, необходимо создать экземпляр этого класса. Например:

 Code:

var

R: TRegistry;

R := TRegistry.Create;

 

Задание корневой секции

Если вы собираетесь работать с секцией, отличной от HKEY_CURRENT_USER (это значение задается по умолчанию), то после инициализации вы должны изменить значение свойства RootKey. Возможны следующие значения:

Code:

HKEY_CLASSES_ROOT

HKEY_CURRENT_USER

HKEY_LOCAL_MACHINE

HKEY_USERS

HKEY_PERFORMANCE_DATA

HKEY_CURRENT_CONFIG

HKEY_DYN_DATA

 

Разработка программы

Реестр - это центральное хранилище информации о параметрах системы и установленных программах. В версиях Windows до Windows 95 программисты сохраняли параметры программ либо в INI-файлах WIN.INI и SYSTEM.INI, либо в дополнительных INI-файлах. Хотя использование INI-файлов поддерживается и в Win32, Microsoft настоятельно рекомендует для хранения необходимых в работе программы параметров пользоваться реестром. Реестр представляет собой иерархическую базу данных, cостоящую из секций, подсекций и элементов. Каждая секция имеет свое назначение. Хранить данные о пользовательских программах Microsoft рекомендует в секции HKEY_CURRENT_USER и подсекции Software. В этой подсекции вы создаете подсекцию, идентифицирующую вашу программу или фирму, и уже внутри нее располагаете данные.

 

Модуль Registry

Для упрощения работы с регистратором в состав Delphi (начиная с версии 2.0) входит модуль REGISTRY, содержащий реализацию трех классов, - TRegistry, TRegistryIniFile и TRegIniFile.

Внимание! Чтобы использовать свойства и методы классов TRegistry, TRegistryIniFile и TRegIniFile, необходимо включить в список uses модуль Registry.

 

TRegIniFile

Собственно говоря, задача класса TRegIniFile - упростить перенос 16-битных программ в среду Windows 95. Методы этого класса эквивалентны методам класса TIniFile в 16-битной версии Delphi. Класс TRegIniFile позволяет обращаться к секции HKEY_CURRENT_USER, считывать и записывать строки (методы ReadString и WriteString), целочисленные значения (методы ReadInteger и WriteInteger), логические значения (методы ReadBool и WriteBool), секции (методы ReadSection, ReadSections и ReadSectionValues), удалять секции (метод EraseSection) и элементы (метод DeleteKey). Рассмотрим на примерах, как используются функции этого класса.

Microsoft рекомендует записывать данные, относящиеся к вашей программе, в подсекции секции HKEY_CURRENT_USER_Software. Предположим (не особенно фантазируя на эту тему), что ваша программа называется RegDemo, и данные для нее располагаются в секции Software\RegDemo. Ниже мы покажем, как поместить в регистратор строчные, целочисленные и логические данные, а затем считать их, - этих операций будет достаточно для того, чтобы сохранить в регистраторе параметры нашей программы, а затем считать их.

Прежде чем записать данные в определенную секцию, ее необходимо создать. Это происходит при вызове конструктора объекта TRegIniFile. В качестве параметра вы указываете название секции, и если таковой не существует, она создается:

RegFile := TRegIniFile.Create(SubKey);

После того как файл регистратора открыт (и создана определенная секция), мы можем записать данные. Поддерживаются три типа данных: целочисленные, логические и строчные данные. Для записи этих данных существуют методы WriteInteger, WriteBool и WriteString. В качестве параметров указываются:

  • название подсекции;
  • название элемента;
  • записываемые данные.

Так, чтобы записать значение элемента MyIntVal в подсекции IntKey, следует выполнить код

RegFile.WriteInteger(IntKey, 'Int_Val', 32000);

а для того чтобы прочесть значение, необходимо вызвать метод ReadInteger (в качестве параметров указываются название подсекции, название элемента и значение по умолчанию):

RegFile.ReadInteger(IntKey, 'Int_Val', 0));

Для чтения логических и строчных данных используются соответственно методы ReadBool и ReadStr, а для их записи – методы WriteBool и WriteString.

 

 

 

 

Текст программы

unit Unit1;//Заголовок программы

interface

uses

  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

  Dialogs, Menus, StdCtrls, Registry;//Подключаемые библиотеки

type

  TForm1 = class(TForm)

    mm1: TMainMenu;

    N1: TMenuItem;

    btn1: TButton;

    edt1: TEdit;

    lbl1: TLabel;

    lbl2: TLabel;

    edt2: TEdit;

    lbl3: TLabel;

    lbl4: TLabel;

    edt3: TEdit;

    edt4: TEdit;

    lbl5: TLabel;

    lbl6: TLabel;

    chk1: TCheckBox;

    edt5: TEdit;

    procedure N1Click(Sender: TObject);

    procedure FormCreate(Sender: TObject);

    procedure chk1Click(Sender: TObject);

    procedure btn1Click(Sender: TObject);

  private

    { Private declarations }

  public

    { Public declarations }

  end;

var

  Form1: TForm1;

procedure MyCreateRegistr();//Процедура создания ключей в регистре

procedure MyReadRegistr();//Процедура считывания ключей в регистре

implementation

{$R *.dfm}

procedure MyReadRegistr();// процедура считывания ключей из регистра

var   Registry: TRegistry;// описание переменной регистр

begin

   Registry := TRegistry.Create;//Инициализация переменной регистр

   Registry.RootKey := HKEY_CURRENT_USER;//Определяем каталог считывания

   Registry.OpenKey('software\1MyKey',true);//включаем доступ к подкаталогу

   Form1.edt1.Text:=IntToStr(Registry.ReadInteger('S1'));//считываем ключ из регистра

   Form1.edt2.Text:=IntToStr(Registry.ReadInteger('S2')); //считываем ключ из регистра

   Form1.edt3.Text:=IntToStr(Registry.ReadInteger('S3')); //считываем ключ из регистра

   Form1.edt4.Text:=IntToStr(Registry.ReadInteger('S4')); //считываем ключ из регистра

   Form1.edt5.Text:=Registry.ReadString('Caption'); //считываем ключ из регистра

   Form1.chk1.Checked:=Registry.ReadBool('S5'); //считываем ключ из регистра

   Registry.CloseKey;//Закрывает право доступа

   Registry.Free;//Очищаем переменную

end;//Конец процедуры

procedure MyCreateRegistr();//Процедура создания ключей в регистре

var   Registry: TRegistry;// описание переменной регистр

begin

   Registry := TRegistry.Create;// инициализация переменной

   Registry.OpenKey('software\1MyKey',true);//открытие подкаталога для записи

   Registry.WriteString('Caption',Form1.edt5.Text);// запись переменной в ключ

   Registry.WriteInteger('S1',StrToInt(Form1.edt1.Text)); // запись переменной в ключ

   Registry.WriteInteger('S2',StrToInt(Form1.edt2.Text)); // запись переменной в ключ

   Registry.WriteInteger('S3',StrToInt(Form1.edt3.Text)); // запись переменной в ключ

   Registry.WriteInteger('S4',StrToInt(Form1.edt4.Text)); // запись переменной в ключ

   Registry.WriteBool('S5',Form1.chk1.Checked); // запись переменной в ключ

   Registry.CloseKey;//Закрытие доступа редактирования

   Registry.Free;//Уничтожение переменной регистр

end;//конец процедуры

procedure TForm1.N1Click(Sender: TObject);//Реализация кнопки выход

begin

Form1.Close();//Выход

end;

procedure TForm1.FormCreate(Sender: TObject);// Инициализация приложения

var   Registry: TRegistry;//описание переменной регистр

begin

 Registry := TRegistry.Create;// инициализация переменной регистр

 If Registry.KeyExists('software\1MyKey') then  MyReadRegistr()  else  MyCreateRegistr();// определяем существует ли каталог, если нет то создаем его из первоначальных настроек, если да то считываем настройки

end;

procedure TForm1.chk1Click(Sender: TObject);//запрет/разрешение записи настроек

begin

if Form1.chk1.Checked then

begin

  Form1.btn1.Enabled:=False;//запрещаем редактирование

end

else

begin

  Form1.btn1.Enabled:=True;//разрешаем редактирование

end;

end;

procedure TForm1.btn1Click(Sender: TObject);//процедура записи ключей

begin

     MyCreateRegistr();//Запись ключей в регистр

end;

end.//Конец программы

Работа программы.

Категория: Другии материалы | Добавил: Администратор
Просмотров: 358 | Загрузок: 287 | Комментарии: 1
Всего комментариев: 1
1 Администратор  
0
Скачать программу можно по ссылке http://deadspace.ucoz.ru/Files/kr-2.rar

Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]