Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Снежинкам / Пример String

.doc
Скачиваний:
10
Добавлен:
02.02.2015
Размер:
40.45 Кб
Скачать

unit Fview;

interface

uses

SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls,

Forms, Dialogs, StdCtrls, Menus;

type TForml = class(TForm)

Bevel1: TBeve1;

Memo1: TMemo;

MainMenul: TMainMenu;

Filel: TMenuItem;

Openl: TMenuItem;

N1: TMenuItem;

Save1: TMenuItern;

SaveAs1: TMenuItem;

N2: TMenuItem;

Exit1: TMenuItem;

Panel1: TPanel;

Button1: TButton;

RadioButtonl: TRadioButton;

RadioButton2: TRadioButton;

OpenDialogl: TOpenDialog;

SaveDialogl: TSaveDialog;

procedure OpenlClick(Sender: TObject);

procedure SavelClick(Sender: TObject);

procedure SaveAslClick(Sender: TObject);

procedure RadioButtonlClick(Sender: TObject);

procedure RadioButton2Click(Sender: TObject);

procedure ButtonlClick(Sender: TObject);

procedure FormCreate(Sender: TObject);

procedure ExitlClick(Sender: TObject);

private

{ Private declarations }

sortMode: boolean; { true для сортировки по возрастанию, a false - по убыванию }

public

{ Public declarations }

end;

{ Новый класс StringList, поддерживающий сортировку как по возрастанию, так и по убыванию }

TNewStringList = class(TStringList)

public

procedure Sortup; { метод, реализующий сортировку по возрастанию }

procedure Sortdn; { метод, реализующий сортировку по убыванию }

procedure Reverse; { метод, обеспечивающий изменение порядка строк в списке }

end;

var

Forml: TForml;

implementation

{$R *.DFM}

procedure TForml.OpenlClick(Sender: TObject);

begin

{ вызвать стандартный OpenDialog для получения требуемого файла }

if OpenDialogl.Execute then begin

Memo1.Lines.LoadFromFile(OpenDialogl.FileName);

{ Загрузить мемо из файла }

SaveDialog1.FileName := OpenDialogl.FileName;

{ Определить имя файла для сохранения }

Caption := OpenDialogl.FileName;

{ Установить заголовок формы }

end;

end;

procedure TForm1.Save1Click(Sender: TObject);

begin

Memo1.Lines.SaveToFile(SaveDialogl.FileName);

{ Сохранить мемо в файл }

end;

procedure TForm1.SaveAs1Click(Sender: TObject);

Begin

if SaveDialogl.Execute then { Разрешить пользователю выбрать имя файла для сохранения }

begin

Memo1.Lines.SaveToFile(SaveDialogl.FileName); { Сохранить в файл с новым именем }

Caption := SaveDialogl.FileName; { Установить новый заголовок формы }

OpenDialogl.FileName := Caption; { Установить новое имя в OpenDialog }

end;

end;

{ определение функций и процедур для нового класса строк }

procedure TNewStringList.Sortup;

begin

Sorted := true; { просто установить свойство Sorted из TStringList }

end;

procedure TNewStringList.Sortdn;

begin

Sorted := true; { установить свойство Sorted для сортировки по возрастанию }

Reverse; { и затем вызвать Reverse для изменения порядка следования строк в списке }

end;

procedure TNewStringList.Reverse;

var

i: integer;

lc: integer;

begin

lc := Count div 2; { это количество перестановок, которые необходимо выполнить }

for i := 0 to lc - 1 do

begin

exchange(i, Count - 1 - i); {ну это совсем просто }

end;

end;

procedure TForm1.RadioButtonlClick(Sender: TObject);

begin

sortMode := true; { записать изменение в sortMode }

end;

procedure TForm1.RadioButton2Click(Sender: TObject);

begin

sortMode := false; { записать изменение в sortMode }

end;

procedure TForml.ButtonlClick(Sender: TObject);

var

ts: TNewStringLis t;

begin

if sortMode = true then begin

ts := TNewStringList.Create; { создать новый экземпляр списка строк }

ts.assign(Memol.Lines); { скопировать содержимое мемо в список строк }

ts.Sortup; { сортировать по возрастанию }

Memo1.Lines.Assign(ts); { присвоить результаты сортировки в мемо }

ts.free; { разрушить рабочий объект }

end else begin

ts := TNewStringList.Create;

ts.assign(Memol.Lines);

ts.Sortdn; { данный вызов - это единственное отличие сортировки по убыванию }

Memo1.Lines.Assign(ts);

ts.free;

end;

end;

procedure TForm1.FormCreate(Sender: TObject);

begin

{ соответствующим образом проинициализировать }

RadioButton1.Checked := true;

RadioButton1Click(Sender); { установить начальное состояние в сортировку по возрастанию }

end;

procedure TForm1.ExitlClick(Sender: TObject);

begin

halt; { завершить программу }

end;

end.

Соседние файлы в папке Снежинкам