На этом шаге мы рассмотрим пример использования компонента TNMUUProcessor.
Создаем новое приложение Delphi и помещаем на форму два поля редактирования для указания в них имен входных и выходных файлов, две командных кнопки, два групповых окна, в которые добавляем по две радиокнопки и компоненты ТOpenDialog и TNMUUProcessor. При нажатии на кнопку с надписью Выбрать, будет загружаться диалоговое окно выбора входного файла для кодирования или декодирования. Кнопка Выполнить будет выполнять нужную операцию над файлом, ту, которая выбрана в соответствующей радиокнопке.
Рис.1. Внешний вид приложения
Другая группа радиокнопок задает один из двух возможных алгоритмов кодирования. Обработчик события OnClick кнопки Выполнить приводится ниже. В этом обработчике создаются два потока - входной и выходной, затем в соответствии с выбором радиокнопок задается алгоритм кодирования и вызывается либо метод кодирования, либо декодирования. После этого потоки освобождаются.
procedure TForm1.Button2Click(Sender: TObject); //Кнопка "Выполнить" var InStream, OutStream: TFileStream; begin InStream := TFileStream.Create(Edit1.Text, fmOpenRead); OutStream := TFileStream.Create(Edit2.Text, fmCreate); try If RadioGroup2.ItemIndex=1 then NMUUProcessor1.Method := uuMIME else NMUUProcessor1.Method := uuCode; NMUUProcessor1.InputStream := InStream; NMUUProcessor1.OutputStream := OutStream; If RadioGroup1.ItemIndex=0 then NMUUProcessor1.Encode else NMUUProcessor1.Decode; finally InStream.Free; OutStream.Free; end; end;
Приведем текст приложения:
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls, NMUUE, ComCtrls; type TForm1 = class(TForm) Label1: TLabel; Edit1: TEdit; Button1: TButton; Label2: TLabel; Edit2: TEdit; RadioGroup1: TRadioGroup; RadioGroup2: TRadioGroup; Button2: TButton; NMUUProcessor1: TNMUUProcessor; OpenDialog1: TOpenDialog; StatusBar1: TStatusBar; procedure Button2Click(Sender: TObject); procedure NMUUProcessor1BeginDecode(Sender: TObject); procedure NMUUProcessor1BeginEncode(Sender: TObject); procedure NMUUProcessor1EndDecode(Sender: TObject); procedure NMUUProcessor1EndEncode(Sender: TObject); procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Button2Click(Sender: TObject); //Кнопка "Выполнить" var InStream, OutStream: TFileStream; begin InStream := TFileStream.Create(Edit1.Text, fmOpenRead); OutStream := TFileStream.Create(Edit2.Text, fmCreate); try If RadioGroup2.ItemIndex=1 then NMUUProcessor1.Method := uuMIME else NMUUProcessor1.Method := uuCode; NMUUProcessor1.InputStream := InStream; NMUUProcessor1.OutputStream := OutStream; If RadioGroup1.ItemIndex=0 then NMUUProcessor1.Encode else NMUUProcessor1.Decode; finally InStream.Free; OutStream.Free; end; end; procedure TForm1.NMUUProcessor1BeginDecode(Sender: TObject); begin StatusBar1.SimpleText := 'Декодируем файл'; end; procedure TForm1.NMUUProcessor1BeginEncode(Sender: TObject); begin StatusBar1.SimpleText := 'Кодируем файл'; end; procedure TForm1.NMUUProcessor1EndDecode(Sender: TObject); begin StatusBar1.SimpleText := 'Декодирование закончено'; end; procedure TForm1.NMUUProcessor1EndEncode(Sender: TObject); begin StatusBar1.SimpleText := 'Кодирование закончено'; end; procedure TForm1.Button1Click(Sender: TObject); begin If OpenDialog1.Execute then Edit1.Text := OpenDialog1.FileName; end; end.
На следующем шаге мы рассмотрим компонент TProwersock.