Секреты программирования. Примеры разработки. Обзоры программёрского софта, блогов и форумов и просто полезные советы!
- Главная
- Библиотека программиста
- Компоненты для Delphi и C++ Builder
- О блоге
- Партнёрам
RSS Новости
Рубрики
Интересно почитать
- Ставим МТС коннект модем на Linux (Ubuntu, Mandriva и др.)
- Урок Delphi – Учимся подключать .INI файлы в свои Delphi-приложения.
Полезные записи
- Урок PHP — Как отправить электронное письмо с адресом чужого e-mail ящика?!
- Обзор бесплатного софта pdf to word converter
- Ставим МТС коннект модем на Linux (Ubuntu, Mandriva и др.)
- Урок Delphi – Учимся подключать .INI файлы в свои Delphi-приложения.
- Пишем алгоритм простого шифрования текста на Delphi
- Узелок впрок! Динамическое создание визульных элементов
- Класс для открытия шелла с перенаправлением I/O
Комментаторы
Архивы
Мы читаем
Статистика блога
Урок Delphi – Учимся подключать .INI файлы в свои Delphi-приложения.
Posted by devprog на 25 июля, 2010
урок на Делфи — 39. Открыть чужую программу
Сегодня мы рассмотрим, как подключать инициализационные файлы в свои приложения на Delphi . Инициализационные .INI файлы представляют собой, обычные текстовые файлы, которые вы могли наблюдать обычно в папках с программами на вашем компьютере. Они используются для хранения пользовательских настроек и параметров и обычно открываются любыми текстовыми редакторами и имеют такой формат:
Работать с .INI файлами в Delphi очень просто. Основной базовый класс для работы с ними это TIniFile, который позволяет производить над ними все операции записи и считывания, перезаписи пользовательских настроек. Есть еще класс TMemIniFile, который отличается и первого TIniFile, тем, что все данные записываются в оперативную память компьютера, и сохраняются на диске только в момент вызова UpdateFile метода. Оба этих класса содержаться в модуле IniFile и для того, чтобы мы смогли использовать .INI файлы и работать с этими классами в ваших приложениях, вы должны добавить модуль IniFiles в секцию Uses.
Создать объект класса TIniFile или TMemIniFile очень просто, для этого нужно передать конструктору имя .INI файла. В случае, если данного файла не существует, он создается автоматически. Для чтения/записи из/в .INI файл пользовательских значений программно существуют методы
ReadSrting / WriteString;
ReadDate / WriteDate;
ReadInteger / WriteInteger;
ReadBool / WriteBool;
Довольно теории, теперь попробуем попрактиковаться и написать небольшое приложение, наглядно демонстрирующее работу с инициализационными файлами в Delphi и классом TIniFile. Наше приложение после запуска считает из .INI файла информацию о положении и размерах окна, а так же содержимого поля ввода типа Edit, а когда мы закроем приложение оно вновь запишет в .INI файл свои новые( если мы поменяли размер окна или что-то написали в поле ввода) данные, с которыми оно откроется в следующий раз.
Установка Delphi / Autocom 2017 v R3 Final
Открываем Delphi, помещаем на форму компоненты Edit(поле ввода) и Button(обычная кнопка). Будем обрабатывать события компонента Form, главной формы при создании OnCreate и закрытии OnClose, а также события нажатия на кнопку Button OnClick.
Добавляем в секцию подключаемых модулей Uses модуль IniFile, в котором содержится класс TIniFile, с которым наше приложение будет работать.
В самом начале работы программы (в теле обработчика события создания формы OnCreate) мы попробуем прочитать данные из .INI файла. Чтобы это реализовать, создадим объект класса TIniFile, вызвав его конструктор, с именем нужного файла. Имя файла мы получим из имени исполняемого файла приложения Application.ExeName, изменив его расширение на “ini” с помощью функции ChangeFileExt.
Извлекать из .INI файла отдельные значения мы будем с помощью методов: ReadInteger, ReadString и ReadBool. Эти функции имеют 3 аргумента
- Read/Write*(имя типа данных Integer, String или Bool)* ( 1N , 2N, 3N ) ;
- 1N — первый аргумент, имя секции, в нашем случае это будет Form
- 2N — второй аргумент, имя параметра (Top, Left, Text и т.п.)
- 3N – третий аргумент, указывает значение по умолчанию(100, 200, 300 и т.п.) если используется Read* чтение, в случае Write* записи, это будет записываемое значение.
Извлечь значения из .INI файла нам возможно и не удастся не только в аварийном случае, но и по нескольким из причин, например, отсутствие инициализационного файла, или секции. Поэтому, для обработки подобных или еще более серьезных ошибок мы будем использовать защищенный блок try … finally .
procedure TForm1.FormCreate(Sender: TObject);
var
IniSoub: TIniFile;
begin
Caption := ‘*.INI’;
Button1.Caption := ‘
//создаем объект класса TIniFile
IniSoub := TIniFile.Create(ChangeFileExt(Application.ExeName, ‘.ini’));
try // пробуем прочитать данные
Edit1.Text := IniSoub.ReadString(‘Edit’, ‘Text’, »);
Top := IniSoub.ReadInteger(‘Form’, ‘Top’, 100);
Left := IniSoub.ReadInteger(‘Form’, ‘Left’, 100);
Height := IniSoub.ReadInteger(‘Form’, ‘Height’, 100);
Width := IniSoub.ReadInteger(‘Form’, ‘Wedth’, 147);
IF IniSoub.ReadBool(‘Form’, ‘Maximized’, false) then
WindowState := wsMaximized
else
WindowState := wsNormal;
finally
IniSoub.Free; //освобождаем память
end;
end;procedure TForm1.Button1Click(Sender: TObject);
begin
Close;
end;
Когда мы закрываем программу, событие закрытия формы OnClose обработается и запишет текущие значения (высота, размер окна, и т.п.) в инициализационный файл с помощью методов класса TIniFile :
WriteString()
WriteInteger()
WriteBool()
Pro-Delphi
Научиться программировать не так сложно, как кажется. Уроки по принципу от простого к сложному. Исходные тексты программ. Видео уроки.
Страницы
пятница, 10 июня 2011 г.
Урок 12. Добавление в проект формы “О программе”
В предыдущем уроке я обещал рассказать о том, как добавить в проект, состоящий из одной формы, еще одну и из нее сделать форму “О программе”.
Наберитесь терпения, этот урок Delphi будет не таким простым, как предыдущий.
Приступим.
Откройте проект с программой “Таймер”, и выберите пункт меню
File — New — Form Delphi For Win 32. В проект будет добавлена новая форма.
В Инспекторе объектов измените свойства формы:
Caption — О программе,
Position — poScreenCenter (при открытии форма будет всегда выводиться в центре экрана).
Name — AboutFrm.
Visible — False (после создания форма будет оставаться невидимой)
KeyPreview — True (форма будет реагировать на нажатие клавишей).
Расположите на форме панель, несколько меток, гиперссылку и кнопку.
Сохраните модуль формы под именем About.pas.
Перейдите в раздел Implementation главной формы таймера, добавьте ключевое слово Uses и дайте описание модуля About в нем. В принципе, Вы вправе дать это описание выше, в разделе interface Uses, но. О разнице двух объявлений читайте в учебниках.
Откройте код проекта, воспользовавшись меню Project — View Source.
Найдите в тексте строчку:
Application.CreateForm(TAboutFrm, AboutFrm);.
выделите ее и вырежте (Ctrl-X) для того, чтобы новая форма, добавленная в проект, не создавалась и не выводилась на экран сразу после старта программы.
Перейдите в главную форму таймера, найдите заготовку процедуры, обрабатывающей вызов справки и вставьте этот оператор в тело данной процедуры.
Добавьте ниже два оператора:
AboutFrm.ShowModal; // Вывод формы на эран
// в модальном окне (другие окна недоступны)
AboutFrm.Free; // Освобождение памяти
// после окончания работы с формой
На этом урок можно закончить. Но! В наглядном видео уроке, который Вы можете посмотреть или скачать , показан еще один момент — удаления формы из проекта.
PS Полный текст модуля формы “О программе” приведен ниже:
unit about;
uses Windows, Classes, Graphics, Forms, Controls, StdCtrls,
Dialogs, Buttons, ExtCtrls, SysUtils, OK_CANCEL, MyLabels, SHELLAPI,
MyLinkLabel, PrDLinkLabel;
type
TAboutFrm = class(TForm)
Panel1: TPanel;
ProgramIcon: TImage;
ProductName: TLabel;
Version: TLabel;
Copyright: TLabel;
MyVersion: TLabel;
Label1: TLabel;
MyOkButton1: TMyOkButton; // Кнопка с рисунком,
// можно заменить на стандартную
PrDLinkLabel1: TPrDLinkLabel;
procedure MyOkButton1Click(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure FormActivate(Sender: TObject);
private
< Private declarations >
Function CurrentFileInfo(AFileName: string): string; // Источник — База знаний Delphi
// Как вариант, можно взять здесь:
// http://www.delphisources.ru/pages/faq/base/versioninfo.html
public
< Public declarations >
end;
var
AboutFrm: TAboutFrm;
implementation
Function TAboutFrm.CurrentFileInfo(AFileName: string): string;
// Компиллятор выдает некритическую ошибку при использовании этой функции
var
szName: array[0..255] of Char;
P: Pointer;
Value: Pointer;
Len: UINT;
GetTranslationString: string;
FFileName: PChar;
FValid: boolean;
FSize: DWORD;
FHandle: DWORD;
FBuffer: PChar;
begin
try
FFileName := StrPCopy(StrAlloc(Length(AFileName) + 1), AFileName);
FValid := False;
FSize := GetFileVersionInfoSize(FFileName, FHandle);
if FSize > 0 then
try
GetMem(FBuffer, FSize);
FValid := GetFileVersionInfo(FFileName, FHandle, FSize, FBuffer);
except
raise;
end;
Result := »;
if FValid then
VerQueryValue(FBuffer, ‘VarFileInfoTranslation’, p, Len)
else
p := nil;
if P <> nil then
GetTranslationString := IntToHex(MakeLong(HiWord(Longint(P^)),
LoWord(Longint(P^))), 8);
if FValid then
begin
StrPCopy(szName, ‘StringFileInfo’ + GetTranslationString +
‘FileVersion’);
if VerQueryValue(FBuffer, szName, Value, Len) then
Result := StrPas(PChar(Value));
end;
finally
try
if FBuffer <> nil then
FreeMem(FBuffer, FSize);
except
end;
try
StrDispose(FFileName);
except
end;
end;
end;
procedure TAboutFrm.FormActivate(Sender: TObject);
begin
MyVersion.Caption:=CurrentFileInfo(Paramstr(0));
ProductName.Caption:=Application.Title;
Label1.Caption:=’Москва — 2010 год’;
icon:=Application.Icon;
ProgramIcon.Picture.LoadFromFile(‘Clock.ico’);
end;
procedure TAboutFrm.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Action:= caFree;
end;
Источник: pro-delphi.blogspot.com
Как создать и открыть Excel — файл в Delphi
Далее поместим на форму компонент TButton и в обработчике событий OnClick запишем следующий код:
procedure TForm1 . Button1Click ( Sender : TObject ) ;
XL : Variant ;
XL : = CreateOLEObject ( ‘Excel.Application’ ) ; // Создание OLE объекта
XL . WorkBooks . add ; // Создание новой рабочей книги
XL . visible : = true ;
Результатом выполнения станет запуск программы Microsoft Excel и открытие нового листа.
Для открытия уже существующего документа Excel следует воспользоваться методом Open:
Если необходимо открыть документ Excel только для чтения, пишем следующее:
Для закрытия документа Excel:
XL . Application . Quit ;
Если Вам необходимо при открытии файла использовать не абсолютный, а относительный путь, то необходимо предварительно воспользоваться функцией GetDir, рассмотрим пример ниже:
procedure TForm1 . Button1Click ( Sender : TObject ) ;
XL : Variant ;
AppLocation : string ;
XL : = CreateOLEObject ( ‘Excel.Application’ ) ; // Создание OLE объекта
ShowMessage ( ‘Cannot start MS Excel.’ ) ;
GetDir ( 0 , AppLocation ) ; // Возвращает текущий каталог диска
XL . visible : = true ;
Одноклассники
Все материалы и продукты на этом сайте опубликованы для целей ознакомления для зарегистрированных пользователей фирм производителей материала или продукта, или его авторов. Помните, что скачанные материалы или продукты, Вы используете на свой страх и риск. Автор и администрация этого сайта не несет никакой ответственности за использование этих материалов или продуктов третьими лицами. В случае, если вы используете один из перечисленных здесь материалов или продуктов, Вы обязаны официально приобрести его у фирмы производителя или автора.
Источник: okolokompa.com