unit UnitMain;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ShellAPI;
type
TFormMain = class(TForm)
LabelFileName: TLabel;
EditFileName: TEdit;
ButtonOpen: TButton;
OpenDialog: TOpenDialog;
LabelA: TLabel;
EditA: TEdit;
LabelB: TLabel;
EditB: TEdit;
ButtonFind: TButton;
ButtonHelp: TButton;
LabelResults: TLabel;
LabelMinOdd: TLabel;
EditMinOdd: TEdit;
LabelMax: TLabel;
EditMax: TEdit;
procedure ButtonFindClick(Sender: TObject);
procedure ButtonOpenClick(Sender: TObject);
procedure ButtonHelpClick(Sender: TObject);
procedure EditFileNameChange(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
FormMain: TFormMain;
implementation
{$R *.dfm}
// Обработчик щелчка по кнопке поиска
procedure TFormMain.ButtonFindClick(Sender: TObject);
var
f: TextFile; // Файл, в котором ищутся строки
a: Integer; // Нижняя граница интервала
b: Integer; // Верхняя граница интервала
minOdd: Integer; // Минимальное нечетное число
max: Integer; // Максимальное число
temp: Integer; // Временная переменная
begin
// Получение исхоных данных
try
a := StrToInt(EditA.Text);
b := StrToInt(EditB.Text);
except
ShowMessage('Нецелочисленное значение границы интервала');
Exit;
end;
if a > b then
begin
ShowMessage('Нижняя граница интервала больше верхней');
Exit;
end;
AssignFile(f, EditFileName.Text);
// Инициализация рзультатов
minOdd := b + 1;
max := a - 1;
// Поиск по файлу
try
Reset(f);
while not EoF(f) do
begin
if EoLn(f) then
Readln(f);
if not EoF(f) then
begin
try
Read(f, temp);
except
ShowMessage('Нецелочисленные данные в исходном файле');
Exit;
end;
if (temp >= a) and (temp <= b) then
begin
if (temp < minOdd) and Odd(temp) then
minOdd := temp;
if temp > max then
max := temp;
end;
end;
end;
CloseFile(f);
// Вывод результатов
if minOdd <= b then
EditMinOdd.Text := IntToStr(minOdd)
else
EditMinOdd.Text := 'Не найдено';
if max >= a then
EditMax.Text := IntToStr(max)
else
EditMax.Text := 'Не найдено';
LabelResults.Visible := true;
LabelMinOdd.Visible := true;
LabelMax.Visible := true;
EditMinOdd.Visible := true;
EditMax.Visible := true;
except
ShowMessage('Не удалось открыть файл "' + EditFileName.Text + '"');
end;
end;
// Обработчик щелчка по кнопке открытия файла
procedure TFormMain.ButtonOpenClick(Sender: TObject);
begin
if OpenDialog.Execute then
EditFileName.Text := OpenDialog.FileName;
end;
// Обработчик щелчка по кнопке вызова справки
procedure TFormMain.ButtonHelpClick(Sender: TObject);
begin
ShellExecute(0, 'open', 'MinOddMaxNum.chm', nil, nil, SW_MAXIMIZE);
end;
// Обработчик изменения исходных данных
procedure TFormMain.EditFileNameChange(Sender: TObject);
begin
// Сокрытие результатов
LabelResults.Visible := false;
LabelMinOdd.Visible := false;
LabelMax.Visible := false;
EditMinOdd.Visible := false;
EditMax.Visible := false;
end;
end.