Книга Иcпользование API на Delphi 7 - читать онлайн бесплатно, автор Сергей Николаевич Талипов
bannerbanner
Вы не авторизовались
Войти
Зарегистрироваться
Иcпользование API на Delphi 7
Иcпользование API на Delphi 7
Добавить В библиотекуАвторизуйтесь, чтобы добавить
Оценить:

Рейтинг: 0

Добавить отзывДобавить цитату

Иcпользование API на Delphi 7

Сергей Талипов

Иcпользование API на Delphi 7

ЛЕКЦИЯ №1

1. РАБОТА С INI – ФАЙЛАМИ

Ini-файл – это текстовый файл, в котором информация сгруппирована по секциям, ключам. Данные файлы широко применяются во многих приложениях и в операционной системе Windows для хранения различных программных данных и настроек пользователя. В таком файле можно хранить, например, положение окон программы, дату, время и продолжительность работы программы, пути к разным данным и данным, выбранные в программе настройки пользователя Ниже приведена структура и пример Ini-файла:


Для работы с Ini-файлами применяется дополнительный модуль Delhi «inifiles». Ссылку на данный модуль необходимо прописать в разделе «uses» работающей с Ini-файлами форме программы. Вся работа с Ini-файлами осуществляется через тип «TiniFile» модуля «inifiles». Основные методы данного типа следующие:


CreateОткрытие Ini-файла для чтения или записиFreeЗакрытие открытого Ini-файлаUpdateFileОбновляет данные из/в файла на дискеSectionExistsПроверка существования в файле данной секцииValueExistsПроверка существования в файле ключа в данной секцииReadSectionsПолучение перечня всех секций файлаEraseSectionУдаление данной секции со всеми ее ключамиDeleteKeyУдаление ключа в данной секцииReadSectionПолучение перечня ключей данной секцииReadSectionValuesПолучение значений всех ключей (с именами) данной секцииReadStringЧтение строкового значения из ключа данной секцииReadBoolЧтение логического значения из ключа данной секцииReadDateЧтение даты из ключа данной секцииReadDateTimeЧтение даты и время из ключа данной секцииReadFloatЧтение вещественного значения из ключа данной секцииReadIntegerЧтение целого значения из ключа данной секцииReadTimeЧтение времени из ключа данной секцииWriteStringЗапись (обновление) строкового значения в ключ данной секцииWriteBoolЗапись логического значения в ключ данной секцииWriteDateЗапись даты в ключ данной секцииWriteDateTimeЗапись даты и времени в ключ данной секцииWriteFloatЗапись вещественного значения в ключ данной секцииWriteIntegerЗапись целого значения в ключ данной секцииWriteTimeЗапись времени в ключ данной секции

Рассмотрим на подробном примере процедуру записи информации в Ini-файл:

procedure TForm1.Button3Click(Sender: TObject);

var t_Ini: TIniFile;

  k: integer; s, path_pr, nfile: string; td: tdatetime;

begin

  k:=736; s:='Okey'; td:=now;

  path_pr:=ExtractFilePath(application.exename) +'tsn.ini';

  t_Ini := TIniFile.Create(nfile);

  try

  with t_Ini do begin

     WriteInteger('TSN', 'str1', k);

     WriteFloat('TSN', 'str2', 736.123);

     WriteString('TSN', 'str3', s);

     WriteDate('TSN', 'str4', strtodate('01.02.2012'));

     WriteTime('TSN', 'str5', td);

     Writebool('TSN', 'str6', true);

  end;

  except

    showmessage('Нет доступа к Ini-файлу !');

  end;

  t_Ini.Updatefile; t_Ini.Free;

end;


Рассмотрим на примере процедуру считывания ранее сохраненной информации из Ini-файла:


procedure TForm1.Button4Click(Sender: TObject);

var t_Ini: TIniFile;

  k: integer; s, path_pr, nfile: string; td: tdatetime;

begin

  path_pr:=ExtractFilePath(application.exename) +'tsn.ini';

  t_Ini := TIniFile.Create(nfile);

  try

  with t_Ini do begin

     k:=ReadInteger('TSN', 'str1', -1); showmessage(inttostr(k));

     s:=ReadString('TSN', 'str3', '-1'); showmessage(s);

     td:=ReadDate('TSN', 'str4', strtodate('1.1.2000'));

     showmessage(datetostr(td));

     showmessage(floattostr(ReadFloat('TSN', 'str2', -1.123)));

     showmessage(timetostr(ReadTime('TSN2', 'str5', now)));

     showmessage(inttostr(byte(ReadBool('TSN2', 'str6', false))));

  end;

  except

    showmessage('Нет доступа к Ini-файлу !');

  end;

  t_Ini.Free;

end;


ЛЕКЦИЯ №2

1. РАБОТА С РЕЕСТРОМ WINDOWS


Реестр Windows – это база данных, в которой операционная система Windows и внешние программы сохраняют нужные им данные. Логическая структура реестра напоминает строение Ini-файла, отличие состоит в том, что Ini-файл состоит из разделов (секций) и ключей раздела со значениями, а реестр состоит из разделов, вложенных подразделов (неограниченное число) и ключей (параметров) разделов/подразделов со значениями.


Реестр Windows имеет древовидную структуру, подобную файловой системе, где разделы и подразделы соответствуют каталогам и подкаталогам, а ключи со значениями – именам файлов:


Рис. 1


Любая программа может сохранять свои данные или в реестре Windows или в Ini-файлах. Достоинства и недостатки использования реестра и Ini-файлов следующие:


ПараметрИспользование реестра WindowsИспользование Ini-файловПеренос данных с компьютера на компьютерТрудность переноса данных с использованием экспорта/импорта ветвей реестра через программу редактора реестра («regedit»)Легкость переноса данных путем простого копирования Ini-файла с одного компьютера на другойМодификация данныхЧерез функции прикладной программы или программу редактора реестраЧерез функции прикладной программы или корректировки в обычном текстовом редактореПривязка к конкретному пользователю WindowsАвтоматически на уровне операционной системы через корневой раздел «HKEY_CURRENT_USER»Трудно через функции прикладной программыПривязка к конкретному компьютеруАвтоматически на уровне операционной системы через корневой раздел «HKEY_LOCAL_MACHINE»Трудно через функции прикладной программы

Таблица 1


Реестр состоит из шести корневых разделов, два из которых представляют наибольший интерес: раздел «HKEY_LOCAL_MACHINE» предназначен для хранения данных, доступных всем пользователям Windows, а раздел «HKEY_CURRENT_USER» хранит данные, доступные только для текущего пользователя Windows. Другие корневые разделы обычно используются только операционной системой и некоторыми системными программами.


Язык программирования Delphi 5 позволяет производить с реестром Windows любые манипуляции через подключение модуля «Registry» в разделе «interface -> uses». Рассмотрим на примере основные базовые операции при записи и считывании данных с реестра:


procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);

{ Процедура записи данных в реестр }

var Reg: tRegistry;

begin

  Reg:=tRegistry.Create;

  Reg.RootKey:=HKEY_LOCAL_MACHINE;

  try

    if Reg.OpenKey('\Software\TSN736\', true) then begin

      if not Reg.KeyExists('setup') then Reg.CreateKey('setup');

      if Reg.OpenKey('\Software\TSN736\setup', false) then begin

        Reg.WriteInteger('Left', form1.left); Reg.WriteInteger('Top', form1.top);

        Reg.CloseKey;

      end;

    end;

  finally

    Reg.Free;

  end;

end;


procedure TForm1.FormCreate(Sender: TObject);

{ Процедура чтения данных с реестра }

var Reg: tRegistry;

begin

  Reg:=tRegistry.Create;

  Reg.RootKey:=HKEY_LOCAL_MACHINE;

  try

    if Reg.OpenKey('\Software\TSN736\setup', false) then begin

       try form1.left:=Reg.ReadInteger('Left'); except; end;

       try form1.top:=Reg.ReadInteger('Top'); except; end;

        Reg.CloseKey;

    end;

  finally

    Reg.Free;

  end;

end;



ЛЕКЦИЯ №3

1. ПРЕОБРАЗОВАНИЕ ТИПОВ. ДОСТУП К ОБЪЕКТАМ И КОМПОНЕНТАМ ЧЕРЕЗ УКАЗАТЕЛИ


При написании обработчиков событий для компонент практически всегда в процедуру передается указатель «Sender» типа «TObject». Данный указатель как правило указывает (ссылается) на тот визуальный компонент, который вызывает данную процедуру. Параметр «Sender» является некоторым усовершенствованным аналогом ссылочной переменной языка Pascal.


Использование параметра «Sender» позволяет делать процедуры – обработчики событий универсальными, позволяющими работать не с одним конкретным компонентом, а с несколькими, имеющими одинаковый тип. Например, можно написать процедуру перемещения кнопки по экрану и привязать эту процедуру ко всем кнопкам формы, после чего все кнопки также смогут перемещаться по экрану. Для этого в процедуре-обработчике необходимо пользоваться только «Sender» конструкциями, а не явными указаниями на компоненты.


Рассмотрим способы доступа к компонентам через указатель «Sender» и методы преобразования типов:


procedure TForm1.Button2Click(Sender: TObject);

var s: TObject; ss: string;

{ Пример опознания типа объекта по указателю "Sender" }

begin

  s:=Sender; { или так: s:=button2; }

  ss:='tbutton'; { запишем имя типа кнопки в строк. переменную }

  if s.ClassNameIs(ss) then showmessage('Кнопка!');

  if (s is tbutton) then showmessage('Это кнопка типа "TButton" !')

    else showmessage('Это "'+s.ClassName+'" !');

  { Можно так }

  try (s as tbutton).caption:='Ok!!!'; except end;

  { Или так }

  tbutton(s).caption:='Ok!!!';

  { Или вот-так, если свойство не "Protected" и не "Read-only" }

  tcontrol(s).left:=300;

end;


ЛЕКЦИЯ №4

1. ТЕХНОЛОГИЯ ПЕРЕТАСКИВАНИЯ ОБЪЕКТОВ «DRAG & DROP»


Технология «Drag & Drop» («Перетащи и кинь») предназначается для перемещения (перетаскивания) данных из одних визуальных компонент в другие в процессе работы программы с помощью мыши. Данная технология делает интерфейс программы более удобным и быстрым и используется во многих системных и прикладных Windows-программах.


Технология «Drag & Drop» позволяет, например, копировать строку текста (пункт) из одного компонента формы «ListBox» в другой компонент «ListBox» или предложение из одного компонента «Memo» в другой компонент «Memo». Технология «Drag & Drop» позволяет перемещать данные из любого визуального компонента в любой другой визуальный компонент для любой формы текущего приложения. С окнами других приложений данная технология по умолчанию не работает.


Для перетаскивания данных из одних визуальных компонент в другие с помощью технологии «Drag & Drop» необходимо на этапе создания программы настроить компоненты на данную технологию и запрограммировать алгоритм их поведение при перетаскивании из (в) них данных.

Конец ознакомительного фрагмента.

Текст предоставлен ООО «ЛитРес».

Прочитайте эту книгу целиком, купив полную легальную версию на ЛитРес.

Безопасно оплатить книгу можно банковской картой Visa, MasterCard, Maestro, со счета мобильного телефона, с платежного терминала, в салоне МТС или Связной, через PayPal, WebMoney, Яндекс.Деньги, QIWI Кошелек, бонусными картами или другим удобным Вам способом.

Вы ознакомились с фрагментом книги.

Для бесплатного чтения открыта только часть текста.

Приобретайте полный текст книги у нашего партнера:

Полная версия книги