Логин: Пароль:    Регистрация Всеми возможностями сайта можно пользоваться
только после авторизации.
   Забыли пароль?

Поиск
L



Статистика
u
Пользователи онлайн: нет
Гостей онлайн: 11
Всего онлайн: 11
Зарегистрировано юзеров: 8001
Комментариев на сайте: 703
Новый юзер: Oknaplast



Последние комментарии
c
Eugeneidory прокомментировал "Урок 2 - Переменные и их типы":
http://bit.ly/2sdUrWH - РЕШЕНИЕ ЗАДАЧ ПОБЕЖДАЕМ ЗАЧЕТЫ, СЕССИЮ И ТРУДНЫЕ ПРЕДМЕТЫ Помощь в выполнении курсовых, дипломных контрольных и многих других работ Оставь заявку — остальное сделаем мы - Строго соблюдаем требования методички, знаем все ГОСТы и нормы АНТИПЛАГИАТА - Все работы проходят проверку качества перед отправкой клиенту, вы гарантировано получите отличный материал - Ваши деньги в безопасности. В случае несоответствующего выполнения работы мы вернем вам деньги http://bit.ly/2sdUrWH - РЕШЕНИЕ ЗАДАЧ - https://edmedicationsus.ru
Dennisvoifs прокомментировал "Урок 3 - Конструкция IF...THEN...ELSE":
Пункт коммерческого учета цена,Ктп комплектные трансформаторные подстанции москва, Производство ктп москва и многое другое на нашем специализированном сайте: - Добро пожаловать!https://sviloguzov.ru/

Урок 69 - Реестр Windows, (часть 2/2)


Пример. В новом проекте помещаем в форму следующие компоненты:
· 2 компонента CheckBox
· компонент ComboBox, установите в свойстве Items некоторые строки.
· 2 компонента Edit
· компонент DateTimePicker (страница Win32 палитры компонентов)

Процедура OnShow для окна Form1
procedure TForm1.FormShow(Sender: TObject);
Var 
	RegIniFile:TRegIniFile; // реестровый объект
begin
	RegIniFile:=TRegIniFile.Create('MySelfRegistryApplication'); // создание реестровой переменной
	Form1.Left:=RegIniFile.ReadInteger('Form1','Form1Left',Form1.Left); // левая граница окна
	Form1.Top:=RegIniFile.ReadInteger('Form1','Form1Top',Form1.Top); // верхняя граница окна
	Form1.Height:=RegIniFile.ReadInteger('Form1','Form1Height',Form1.Height); // высота окна
	Form1.Width:=RegIniFile.ReadInteger('Form1','Form1Width',Form1.Width); // ширина окна
	  
		// Восстановление состояния компонентов
		
	CheckBox1.Checked:=RegIniFile.ReadBool('Form1','CheckBox1Checked',CheckBox1.Checked);
	CheckBox2.Checked:=RegIniFile.ReadBool('Form1','CheckBox2Checked',CheckBox2.Checked);
	ComboBox1.ItemIndex:=RegIniFile.ReadInteger('Form1','ComboBox1ItemIndex',ComboBox1.ItemIndex);
	Edit1.Text:=RegIniFile.ReadString('Form1','Edit1Text',Edit1.Text);
	  
	if RegIniFile.ValueExists('MyFloat') then // если такой параметр существует, то:
		Edit2.Text:=FloatToStr(RegIniFile.ReadFloat('MyFloat')); // чтение числа с запятой
	  
	if RegIniFile.ValueExists('MyDate') then // если такой параметр существует, то:
		DateTimePicker1.Date:=RegIniFile.ReadDate('MyDate'); // чтение даты
	  
	RegIniFile.Free; // уничтожение вручную созданного объекта
end;
Процедура OnClose для окна Form1
procedure TForm1.FormClose(Sender: TObject; var Action: 
  TCloseAction);
Var 
	RegIniFile:TRegIniFile;
begin
	RegIniFile:=TRegIniFile.Create('MySelfRegistryApplication');
	RegIniFile.WriteInteger('Form1','Form1Left',Form1.Left);
	RegIniFile.WriteInteger('Form1','Form1Top',Form1.Top);
	RegIniFile.WriteInteger('Form1','Form1Height',Form1.Height);
	RegIniFile.WriteInteger('Form1','Form1Width',Form1.Width);
		// Сохранение состояния компонентов
	RegIniFile.WriteBool('Form1','CheckBox1Checked',CheckBox1.Checked);
	RegIniFile.WriteBool('Form1','CheckBox2Checked',CheckBox2.Checked);
	RegIniFile.WriteInteger('Form1','ComboBox1ItemIndex',ComboBox1.ItemIndex);
	RegIniFile.WriteString('Form1','Edit1Text',Edit1.Text);

	RegIniFile.WriteFloat('MyFloat',StrToFloat(Edit2.Text));
	RegIniFile.WriteDate('MyDate',DateTimePicker1.Date);
  
	RegIniFile.Free;
end;

 

  Обратите внимание, что в этом примере для записи состояния компонента Edit2 используется преобразование строковой величины в число. Если в этом компоненте будут недопустимые символы, то при закрытии окна будет выдаваться ошибка. Для разделения дробной от целой части (запятая), используйте соответствующий символ, установленный в конфигурации windows как символ разделителя.



Реестр


  После запуска и закрытия этой программы можно запустить редактор реестра и просмотреть результат записи данных. Они находятся в ключе HKEY_CURRENT_USER, подключе MySelfRegistryApplication, как было указано в программе. Данные состояния окна, компонентов CheckBox1, CheckBox2 и Edit1 находятся в секции Form1, остальные данные: число в компоненте Edit2, дата в компоненте DateTimePicker1 находятся непосредственно в ключе MySelfRegistryApplication.
Посмотреть на параметры, записанные вышерассмотренной программой автоматически при закрытии, можно на двух рисунках. В первом рисунке вы видите данные даты и дробного числа, во втором рисунке вы видите содержание секции Form1. Эта секция является одновременно подключом ключа MySelfRegistryApplication.
Удаление того или иного параметра приведет к сбросу сохраняемой величины и при запуске программы будет установлено начальное значение по умолчанию. Удаление всего ключа MySelfRegistryApplication приведет к сбросу всех данных нашей программы. Удалить параметр или ключ в редакторе реестра можно кнопкой Del или выбрав соответствующий пункт из выпадающего меню по правой кнопке мышки.
Программное удаление параметра осуществляется командой
  Хочу еще сказать, что с помощью реестра можно сохранять кроме вышерассмотренных типов данных еще формат времени, значение денежной единицы, нетипизированные данные. Последний тип данных может представлять собой шестнадцатиричный код некоторых данных.



Реестр


Некоторые команды для работы со строками

Вспомним, а для некоторых узнаем некоторые команды для работы со строками.
Строка является набором символов. Строковые переменные можно склеивать, разрезать, копировать, удалять символы.
Для склеивания нескольких строк можно воспользоваться знаком + как в арифметической операции сложения.
Копирование части строки в другую строку производится функцией Copy. Она возвращает результат копирования:
	
	РЕЗУЛЬТАТ:=Copy(ИСХОДНАЯ_СТРОКА, ПЕРВЫЙ_СИМВОЛ, ДЛИНА_ЧАСТИ_СТРОКИ);
Удаления части в строке производится процедурой
Delete:
	
	Delete(СТРОКА,ПЕРВЫЙ_СИМВОЛ, ДЛИНА);
Для вставки части строки в другую применяем процедуру Insert
	Insert(ВСТАВЛЯЕМАЯ_СТРОКА, РЕЗУЛЬТИРУЮЩАЯ_СТРОКА, НОМЕР_СИМВОЛА_ВСТАВКИ);
В любой момент можно узнать длину строки с помощью функции Length(СТРОКА), а установить длину строки можно процедурой
	
	SetLength(СТРОКА, НОВАЯ_ДЛИНА)
В pascal'е строковая переменная объявляется как тип String. Если объявляем такую переменную, значит мы будем ее использовать для работы со строками. Но в отличие от языка программирования pascal, в таких строках запрещен доступ к нулевому символу (в этом символе хранилось длина строки). Поскольку в операционной системе windows все строки имеют стандарт PChar (строки, заканчивающиеся символом #0), то тип String здесь оставлен для совместимости. Фактически длина строки String не ограничена 255 символами, как в pascal. Но применяя этот тип, вы незаметно для себя, применяете тип PChar. Все операции перевода одного типа в другой delphi производит автоматически.
Вот пример процедуры обработки строк.
procedure StringOper;
Var 
	st1,st2,st3,st4:String; // объявление строковых переменных
	i:integer; // целочисленная переменная
begin
	st1:='это 1 строка';
	st2:='это 2 строка';
	st3:=st1+' '+st2; // результат 'это 1 строка это 2 строка'
	st4:=Copy(st3,1,5); // копирование части строки. Результат 'это 1'
	Delete(st4,1,4); // удаление части строки. Результат '1'
	Insert(' строка',st4,2); // вставка части строки в строку st4. Результат '1 строка'
	st4[1]:='2'; // изменение первого символа строки с 1 на 2
	i:=Length(st4); // определение длины строки i=8
	SetLength(st4,7); // установка новой длины строки. Результат '1 строк'
end;


Удачи!
Встретимся в следующем уроке!


Источник: www.thedelphi.ru
Автор: Савельев Александр
Опубликовано: 28 Июля 2013
Просмотров:

Урок 68 - Реестр Windows, (часть 1/2) Урок 70 - Динамические библиотеки DLL

Зарегистрируйтесь или авторизуйтесь, чтобы добавлять комментарии.



аватар Добавил(а): AIGERIMDA [Новичок] Дата: 2015-11-24




аватар Добавил(а): rashpell [Новичок] Дата: 2020-03-01
Заказать seo поисковую оптимизацию сайта, Заказать услуги по продвижению сайта По всем возникшим вопросам Вы можете обратиться в скайп логин [b]pokras7777[/b]Раскрутка сайта под ключ .Так же собираем базы