📄 algorithmsexamplemain.pas
字号:
unit AlgorithmsExampleMain;
interface
uses
{$IFDEF WIN32}
Windows, Messages, Forms, ComCtrls, Graphics, Controls,
Dialogs, StdCtrls,
{$ENDIF}
{$IFDEF LINUX}
QForms, QStdCtrls, QControls, QComCtrls,
{$ENDIF}
SysUtils, Classes,
JclContainerIntf, JclArrayLists, JclLinkedLists;
type
TMainForm = class(TForm)
PageControl1: TPageControl;
tbsApply: TTabSheet;
tbsFind: TTabSheet;
tbsCountObject: TTabSheet;
tbsCopy: TTabSheet;
tbsReverse: TTabSheet;
tbsSort: TTabSheet;
btnApplyGenerate: TButton;
btnApply: TButton;
lbxApply: TListBox;
btnFindGenerate: TButton;
btnFind: TButton;
lbxFind: TListBox;
edtFind: TEdit;
btnCountGenerate: TButton;
btnCount: TButton;
lbxCount: TListBox;
edtCount: TEdit;
btnCopyGenerate: TButton;
btnCopy: TButton;
lbxCopySrc: TListBox;
lbxCopyDes: TListBox;
btnReverseGenerate: TButton;
btnReverse: TButton;
lbxReverse: TListBox;
btnSortGenerate: TButton;
btnSort: TButton;
lbxSort: TListBox;
lblFound: TLabel;
lblCount: TLabel;
edtApply: TEdit;
procedure btnApplyGenerateClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure btnApplyClick(Sender: TObject);
procedure btnFindGenerateClick(Sender: TObject);
procedure btnFindClick(Sender: TObject);
procedure btnCountGenerateClick(Sender: TObject);
procedure btnCountClick(Sender: TObject);
procedure btnCopyGenerateClick(Sender: TObject);
procedure btnCopyClick(Sender: TObject);
procedure btnReverseGenerateClick(Sender: TObject);
procedure btnReverseClick(Sender: TObject);
procedure btnSortGenerateClick(Sender: TObject);
procedure btnSortClick(Sender: TObject);
private
public
List: IJclList;
end;
var
MainForm: TMainForm;
implementation
{$R *.dfm}
uses JclAlgorithms;
procedure TMainForm.btnApplyGenerateClick(Sender: TObject);
var
I: Integer;
It: IJclIterator;
begin
List.Clear;
for I := 1 to 10 do
List.Add(TObject(I));
lbxApply.Items.Clear;
It := List.First;
while It.HasNext do
lbxApply.Items.Add(IntToStr(Integer(It.Next)));
end;
procedure TMainForm.FormCreate(Sender: TObject);
begin
List := TJclArrayList.Create(16, False);
end;
function Add2(AObject: TObject): TObject;
begin
Result := TObject(Integer(AObject) + 2);
end;
procedure TMainForm.btnApplyClick(Sender: TObject);
var
It: IJclIterator;
Value: Integer;
begin
Value := StrToIntDef(edtApply.Text, 0);
JclAlgorithms.Apply(List.First, Value, Add2);
lbxApply.Items.Clear;
It := List.First;
while It.HasNext do
lbxApply.Items.Add(IntToStr(Integer(It.Next)));
end;
procedure TMainForm.btnFindGenerateClick(Sender: TObject);
var
I: Integer;
It: IJclIterator;
begin
List.Clear;
for I := 1 to 10 do
List.Add(TObject(I));
lbxFind.Items.Clear;
It := List.First;
while It.HasNext do
lbxFind.Items.Add(IntToStr(Integer(It.Next)));
end;
procedure TMainForm.btnFindClick(Sender: TObject);
var
It: IJclIterator;
Value: Integer;
begin
Value := StrToIntDef(edtFind.Text, 0);
It := JclAlgorithms.Find(List.First, List.Size, TObject(Value), SimpleCompare);
if It = nil then
lblFound.Caption := 'Not found'
else
lblFound.Caption := 'Found';
end;
procedure TMainForm.btnCountGenerateClick(Sender: TObject);
var
I: Integer;
It: IJclIterator;
begin
Randomize;
List.Clear;
for I := 1 to 10 do
List.Add(TObject(Random(10) + 1));
lbxCount.Items.Clear;
It := List.First;
while It.HasNext do
lbxCount.Items.Add(IntToStr(Integer(It.Next)));
end;
procedure TMainForm.btnCountClick(Sender: TObject);
var
Count: Integer;
Value: Integer;
begin
Value := StrToIntDef(edtCount.Text, 0);
Count := JclAlgorithms.CountObject(List.First, List.Size, TObject(Value), SimpleCompare);
lblCount.Caption := IntToStr(Count);
end;
procedure TMainForm.btnCopyGenerateClick(Sender: TObject);
var
I: Integer;
It: IJclIterator;
begin
Randomize;
List.Clear;
for I := 1 to 10 do
List.Add(TObject(Random(10) + 1));
lbxCopySrc.Items.Clear;
It := List.First;
while It.HasNext do
lbxCopySrc.Items.Add(IntToStr(Integer(It.Next)));
end;
procedure TMainForm.btnCopyClick(Sender: TObject);
var
AnotherList: IJclList;
It: IJclIterator;
begin
AnotherList := TJclArrayList.Create(16, False);
JclAlgorithms.Generate(AnotherList, 10, TObject(0));
JclAlgorithms.Copy(List.First, List.Size, AnotherList.First);
lbxCopyDes.Items.Clear;
It := AnotherList.First;
while It.HasNext do
lbxCopyDes.Items.Add(IntToStr(Integer(It.Next)));
end;
procedure TMainForm.btnReverseGenerateClick(Sender: TObject);
var
I: Integer;
It: IJclIterator;
begin
List.Clear;
for I := 1 to 10 do
List.Add(TObject(I));
lbxReverse.Items.Clear;
It := List.First;
while It.HasNext do
lbxReverse.Items.Add(IntToStr(Integer(It.Next)));
end;
procedure TMainForm.btnReverseClick(Sender: TObject);
var
It: IJclIterator;
begin
JclAlgorithms.Reverse(List.First, List.Last);
lbxReverse.Items.Clear;
It := List.First;
while It.HasNext do
lbxReverse.Items.Add(IntToStr(Integer(It.Next)));
end;
procedure TMainForm.btnSortGenerateClick(Sender: TObject);
var
I: Integer;
It: IJclIterator;
begin
Randomize;
List.Clear;
for I := 1 to 10 do
List.Add(TObject(Random(10) - 5));
lbxSort.Items.Clear;
It := List.First;
while It.HasNext do
lbxSort.Items.Add(IntToStr(Integer(It.Next)));
end;
procedure TMainForm.btnSortClick(Sender: TObject);
var
It: IJclIterator;
begin
JclAlgorithms.Sort(List, 0, 9, IntegerCompare);
lbxSort.Items.Clear;
It := List.First;
while It.HasNext do
lbxSort.Items.Add(IntToStr(Integer(It.Next)));
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -