Добавил:
Источник:
Uman
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:02 семестр / Задачи на Paskal / TextFile. Текстовые редакторы / Текстовый редактор с маской / Unit3
.pas unit Unit3;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Menus, Grids;
type
Mas=Array [1..50] of string;
TForm3 = class(TForm)
MainMenu1: TMainMenu;
N1: TMenuItem;
N2: TMenuItem;
N3: TMenuItem;
N4: TMenuItem;
N5: TMenuItem;
N6: TMenuItem;
N7: TMenuItem;
N8: TMenuItem;
N9: TMenuItem;
N10: TMenuItem;
OpenDialog1: TOpenDialog;
SaveDialog1: TSaveDialog;
Memo1: TMemo;
procedure N10Click(Sender: TObject);
procedure N9Click(Sender: TObject);
procedure N7Click(Sender: TObject);
procedure N6Click(Sender: TObject);
procedure N5Click(Sender: TObject);
procedure N4Click(Sender: TObject);
procedure N3Click(Sender: TObject);
procedure N2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form3: TForm3;
implementation
var sf:string;
{$R *.dfm}
procedure TForm3.N10Click(Sender: TObject);//Выборка по маске
var f: textfile; mas:string; r:string[100]; i,k:integer; y,zap:boolean;
begin
Memo1.Clear; //очищаем Мемо
if opendialog1.execute then
begin
sf:=opendialog1.FileName;
form3.Caption:=sf;
end; // 1)Выбираем файл, с которым будем работать
Assignfile(f,sf); reset(f);
mas:=InputBox('Ввод маски','Введите маску из 1 символа:','');
Memo1.Lines[0]:='Маcка - символ "'+mas+'".';
k:=1; zap:=false;
while not Eof(f) do begin
readln(f,r); i:=8; y:=false;
while y=false do begin
i:=i+1;
if r[i]=mas[1] then begin
Memo1.Lines.Add(inttostr(k)+' '+r);
k:=k+1; y:=true; zap:=true; end;
if i=21 then y:=true;
//Просматриваем каждую строку файла
//И оттправляем в Мемо, если символ совпадает
end;
end;
Closefile(f);
if zap=false then Memo1.Lines.Add('Совпадений не нашлось :/');
end;
procedure TForm3.N2Click(Sender: TObject);
begin
memo1.Clear;
sf:='';
form3.caption:='form3';
end;
procedure TForm3.N3Click(Sender: TObject);
begin
if memo1.modified then
case messagedlg('текст был изменен?'+#13+
'сохранить его?', mtconfirmation,[mbyes, mbno,mbcancel],0) of
mryes: n6click(self);
mrNo:;
mrCancel:exit;
end;
if opendialog1.execute then
begin
sf:=opendialog1.FileName;
memo1.Lines.LoadFromFile(sf);
form3.Caption:='form3'+' '+sf;
memo1.Modified:=false;
end;
end;
procedure TForm3.N4Click(Sender: TObject);
begin
if memo1.modified then
case messagedlg('текст был изменен?'+#13+
'сохранить его?', mtconfirmation,[mbyes, mbno,mbcancel],0) of
mryes: n5click(self);
mrNo:
begin
memo1.Clear;
form3.caption:='form1';
end;
mrCancel:exit;
end;
end;
procedure TForm3.N5Click(Sender: TObject);
begin
if sf='' then
n6click(self)
else
begin
memo1.lines.savetofile(sf);
memo1.Modified:=false;
end;
end;
procedure TForm3.N6Click(Sender: TObject);
begin
if savedialog1.Execute then
begin
sf:= savedialog1.FileName;
memo1.lines.savetofile(sf);
form3.Caption:='form3'+' '+sf;
memo1.Modified:=false;
end;
end;
procedure TForm3.N7Click(Sender: TObject);
begin
if memo1.modified then
case messagedlg('текст был изменен?'+#13+
'сохранить его?', mtconfirmation,[mbyes, mbno,mbcancel],0) of
mryes: n6click(self);
mrNo:;
mrCancel:exit;
end;
close;
end;
procedure TForm3.N9Click(Sender: TObject); //Процедура сортировки
var num,r:string; i,k,j:integer;
begin
if opendialog1.execute then
begin
sf:=opendialog1.FileName;
memo1.Lines.LoadFromFile(sf);
form3.Caption:=sf;
memo1.Modified:=false;
end; // 1) загружаем исходный файл в окно редактора
// 2)Вместо очистки файла создадим новый, чтобы не испортить исходный :)
k:=1; i:=1;
while k<>0 do begin
k:=0; for j:=0 to (Memo1.Lines.Count - i)-1 do
if Memo1.Lines[j]>Memo1.Lines[j+1] then
begin
r:=memo1.lines[j];
memo1.lines[j]:=memo1.lines[j+1];
memo1.lines[j+1]:=r; k:=k+1;
end; i:=i+1; end; //Отсортировали в Мемо строки по фамилиям
for i := 0 to Memo1.Lines.Count do begin
num:=Memo1.Lines[i];
Memo1.Lines[i]:=inttostr(i+1)+' '+ num; end; //Добавляем номера к фамилиям
Memo1.lines.savetofile('Сортированный список. txt');
//Записываем сортированный список в НОВЫЙ ФАЙЛ, чтобы не испортить старый :)
end;
end.
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Menus, Grids;
type
Mas=Array [1..50] of string;
TForm3 = class(TForm)
MainMenu1: TMainMenu;
N1: TMenuItem;
N2: TMenuItem;
N3: TMenuItem;
N4: TMenuItem;
N5: TMenuItem;
N6: TMenuItem;
N7: TMenuItem;
N8: TMenuItem;
N9: TMenuItem;
N10: TMenuItem;
OpenDialog1: TOpenDialog;
SaveDialog1: TSaveDialog;
Memo1: TMemo;
procedure N10Click(Sender: TObject);
procedure N9Click(Sender: TObject);
procedure N7Click(Sender: TObject);
procedure N6Click(Sender: TObject);
procedure N5Click(Sender: TObject);
procedure N4Click(Sender: TObject);
procedure N3Click(Sender: TObject);
procedure N2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form3: TForm3;
implementation
var sf:string;
{$R *.dfm}
procedure TForm3.N10Click(Sender: TObject);//Выборка по маске
var f: textfile; mas:string; r:string[100]; i,k:integer; y,zap:boolean;
begin
Memo1.Clear; //очищаем Мемо
if opendialog1.execute then
begin
sf:=opendialog1.FileName;
form3.Caption:=sf;
end; // 1)Выбираем файл, с которым будем работать
Assignfile(f,sf); reset(f);
mas:=InputBox('Ввод маски','Введите маску из 1 символа:','');
Memo1.Lines[0]:='Маcка - символ "'+mas+'".';
k:=1; zap:=false;
while not Eof(f) do begin
readln(f,r); i:=8; y:=false;
while y=false do begin
i:=i+1;
if r[i]=mas[1] then begin
Memo1.Lines.Add(inttostr(k)+' '+r);
k:=k+1; y:=true; zap:=true; end;
if i=21 then y:=true;
//Просматриваем каждую строку файла
//И оттправляем в Мемо, если символ совпадает
end;
end;
Closefile(f);
if zap=false then Memo1.Lines.Add('Совпадений не нашлось :/');
end;
procedure TForm3.N2Click(Sender: TObject);
begin
memo1.Clear;
sf:='';
form3.caption:='form3';
end;
procedure TForm3.N3Click(Sender: TObject);
begin
if memo1.modified then
case messagedlg('текст был изменен?'+#13+
'сохранить его?', mtconfirmation,[mbyes, mbno,mbcancel],0) of
mryes: n6click(self);
mrNo:;
mrCancel:exit;
end;
if opendialog1.execute then
begin
sf:=opendialog1.FileName;
memo1.Lines.LoadFromFile(sf);
form3.Caption:='form3'+' '+sf;
memo1.Modified:=false;
end;
end;
procedure TForm3.N4Click(Sender: TObject);
begin
if memo1.modified then
case messagedlg('текст был изменен?'+#13+
'сохранить его?', mtconfirmation,[mbyes, mbno,mbcancel],0) of
mryes: n5click(self);
mrNo:
begin
memo1.Clear;
form3.caption:='form1';
end;
mrCancel:exit;
end;
end;
procedure TForm3.N5Click(Sender: TObject);
begin
if sf='' then
n6click(self)
else
begin
memo1.lines.savetofile(sf);
memo1.Modified:=false;
end;
end;
procedure TForm3.N6Click(Sender: TObject);
begin
if savedialog1.Execute then
begin
sf:= savedialog1.FileName;
memo1.lines.savetofile(sf);
form3.Caption:='form3'+' '+sf;
memo1.Modified:=false;
end;
end;
procedure TForm3.N7Click(Sender: TObject);
begin
if memo1.modified then
case messagedlg('текст был изменен?'+#13+
'сохранить его?', mtconfirmation,[mbyes, mbno,mbcancel],0) of
mryes: n6click(self);
mrNo:;
mrCancel:exit;
end;
close;
end;
procedure TForm3.N9Click(Sender: TObject); //Процедура сортировки
var num,r:string; i,k,j:integer;
begin
if opendialog1.execute then
begin
sf:=opendialog1.FileName;
memo1.Lines.LoadFromFile(sf);
form3.Caption:=sf;
memo1.Modified:=false;
end; // 1) загружаем исходный файл в окно редактора
// 2)Вместо очистки файла создадим новый, чтобы не испортить исходный :)
k:=1; i:=1;
while k<>0 do begin
k:=0; for j:=0 to (Memo1.Lines.Count - i)-1 do
if Memo1.Lines[j]>Memo1.Lines[j+1] then
begin
r:=memo1.lines[j];
memo1.lines[j]:=memo1.lines[j+1];
memo1.lines[j+1]:=r; k:=k+1;
end; i:=i+1; end; //Отсортировали в Мемо строки по фамилиям
for i := 0 to Memo1.Lines.Count do begin
num:=Memo1.Lines[i];
Memo1.Lines[i]:=inttostr(i+1)+' '+ num; end; //Добавляем номера к фамилиям
Memo1.lines.savetofile('Сортированный список. txt');
//Записываем сортированный список в НОВЫЙ ФАЙЛ, чтобы не испортить старый :)
end;
end.