⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 unit1.pas

📁 JAVA线程表现方式
💻 PAS
字号:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls;

type
  TSortForm = class(TForm)
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    StartBtn: TButton;
    BubbleSortBox: TPaintBox;
    SelectionSortBox: TPaintBox;
    QuickSortBox: TPaintBox;
    Bevel1: TBevel;
    Bevel2: TBevel;
    Bevel3: TBevel;
    Label4: TLabel;
    Label5: TLabel;
    Label6: TLabel;
    Timer1: TTimer;
    Timer2: TTimer;
    Timer3: TTimer;
    procedure BubbleSortBoxPaint(Sender: TObject);
    procedure QuickSortBoxPaint(Sender: TObject);
    procedure SelectionSortBoxPaint(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure StartBtnClick(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
    procedure Timer2Timer(Sender: TObject);
    procedure Timer3Timer(Sender: TObject);
  private
    { Private declarations }
    ThreadsRunning:Integer;
    procedure RandomizeArrays;
    procedure ThreadDone(Sender:TObject);
  public
    { Public declarations }
    procedure PaintArray(Box:TPaintBox; const A:array of Integer);
  end;

var
  SortForm: TSortForm;
  i1,i2,i3:integer;

implementation

uses Unit2;

{$R *.dfm}
type
  PSortArray = ^TSortArray;
  TSortArray = array[0..140] of Integer;
var
  ArraysRandom:boolean;
  BubbleSortArray, SelectionSortArray, QuickSortArray:TSortArray;

procedure TSortForm.PaintArray(Box:TPaintBox; const A:array of Integer);
var
  i:Integer;
begin
  with Box do
  begin
    Canvas.Pen.Color:=clRed;
    for i:= Low(A) to High(A) do PaintLine(Canvas,i,a[i]);

  end;
end;

procedure TSortForm.BubbleSortBoxPaint(Sender: TObject);
begin
  PaintArray(BubbleSortBox,BubbleSortArray);
end;

procedure TSortForm.QuickSortBoxPaint(Sender: TObject);
begin
  PaintArray(QuickSortBox,QuickSortArray);
end;

procedure TSortForm.SelectionSortBoxPaint(Sender: TObject);
begin
  PaintArray(SelectionSortBox,SelectionSortArray);
end;

procedure TSortForm.FormCreate(Sender: TObject);
begin
  RandomizeArrays;
end;

procedure TSortForm.StartBtnClick(Sender: TObject);
begin
  RandomizeArrays;
  ThreadsRunning:=3;
  with TBubbleSort.Create(BubbleSortBox,BubbleSortArray) do
    begin
    timer1.Enabled:=true;
    OnTerminate:=ThreadDone;
    end;
  with TSelectionSort.Create(SelectionSortBox,SelectionSortArray) do
    begin
    timer2.Enabled:=true;
    OnTerminate:=ThreadDone;
    end;
  with TQuickSort.Create(QuickSortBox,QuickSortArray) do
    begin
    timer3.Enabled:=true;
    OnTerminate:=ThreadDone;
    end;

end;

procedure TSortForm.RandomizeArrays;
var
  I:Integer;
begin
  if not ArraysRandom then
  begin
    Randomize;
    for i:= Low(BubbleSortArray) to High(BubbleSortArray) do
      BubbleSortArray[I]:=Random(170);
    SelectionSortArray:=BubbleSortArray;
    QuickSortArray:=BubbleSortArray;
    ArraysRandom:=True;
    Repaint;
  end;
end;

procedure TSortForm.ThreadDone(Sender: TObject);
begin
  Dec(ThreadsRunning);
  if ThreadsRunning = 0 then
  begin
    StartBtn.Enabled:=True;
    ArraysRandom:=False;
  end
  else
  begin
    StartBtn.Enabled:=False;
    ArraysRandom:=True;
  end;
end;

procedure TSortForm.Timer1Timer(Sender: TObject);
begin

  if timer1.Enabled then
  i1:=i1+1;
  label4.Caption:=inttostr(i1)+'ms';
end;

procedure TSortForm.Timer2Timer(Sender: TObject);
begin
if timer2.Enabled then
  i2:=i2+1;
  label5.Caption:=inttostr(i2)+'ms';
end;

procedure TSortForm.Timer3Timer(Sender: TObject);
begin
if timer3.Enabled then
  i3:=i3+1;
  label6.Caption:=inttostr(i3)+'ms';
end;

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -