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

📄 unit2.pas

📁 一个从UML的状态图的MDL文件获取测试用例的源码
💻 PAS
字号:
unit Unit2;

interface

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

type
  TForm2 = class(TForm)
    SaveDialog1: TSaveDialog;
    SaveDialog2: TSaveDialog;
    GroupBox1: TGroupBox;
    Label1: TLabel;
    Edit1: TEdit;
    ComboBox1: TComboBox;
    Label2: TLabel;
    BitBtn2: TBitBtn;
    Memo1: TMemo;
    GroupBox2: TGroupBox;
    Label3: TLabel;
    Memo2: TMemo;
    BitBtn1: TBitBtn;
    GroupBox3: TGroupBox;
    Label4: TLabel;
    BitBtn3: TBitBtn;
    Memo3: TMemo;
    procedure FormCreate(Sender: TObject);
    procedure BitBtn1Click(Sender: TObject);
    procedure BitBtn2Click(Sender: TObject);
    procedure BitBtn3Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form2: TForm2;

implementation
uses mainUnit;
{$R *.dfm}

procedure TForm2.FormCreate(Sender: TObject);
begin
   memo1.Width:=form2.GroupBox1.Width;
end;

procedure TForm2.BitBtn1Click(Sender: TObject);
begin
 if form2.SaveDialog1.Execute then
    Memo2.Lines.SaveToFile(SaveDialog1.FileName);
end;

procedure TForm2.BitBtn2Click(Sender: TObject);
var
  i,j:integer;
  p:Pedge_node;
  stack:array[0..MAX] of edge_pair;
  top:integer;
  aim:integer;
  rrr,event:string;
begin
  if ComboBox1.Text<>'' then
  begin
    top:=0;
    rrr:='';
    event:='';
    i:=form1.findnumber(ComboBox1.Text);
    if (Pvertex_node(stategrafh.Items[i]).vertexname<>'start') and (i<stategrafh.Count) then
       begin
         form2.Memo1.Lines.Add('******************************************');
         form2.Memo1.Lines.Add('开始节点start到目标节点'+Pvertex_node(stategrafh.Items[i]).vertexname+'的路径为: ');
         for j:=0 to stategrafh.Count-1   do      //找到到目标节点的最后一条边,
         begin
          if (answer[j].second)=i then
           begin
             stack[top].first:= answer[j].first;
             stack[top].second:= answer[j].second;
             top:=top+1;
             aim:=answer[j].first;
             break;
           end
           else ;
          end;
          while stack[top-1].first<>form1.findnumber('start') do //递归地往前搜索直到到达开始节点
             for j:=0 to stategrafh.Count-1   do
                if answer[j].second = aim then
                begin
                 stack[top].first:= answer[j].first;
                 stack[top].second:= answer[j].second;
                 top:=top+1;
                 aim:= answer[j].first;
                 break;
                end;
          while top>0 do
          begin
            top:=top-1;
            p:=Pvertex_node(stategrafh.Items[stack[top].first]).link;

            while (p<>nil) and (p.nextnodenum<>stack[top].second) do
               p:=p.nextedge;
              if p.nextnodenum = stack[top].second   then
                 event:=p.edgename
              else showmessage('这条边不存在');
              rrr:=rrr+Pvertex_node(stategrafh.Items[stack[top].first]).vertexname+'---------->'+Pvertex_node(stategrafh.Items[stack[top].second]).vertexname+'        EVENT:  '+event+'           ';
          end;
          memo1.Clear;
         //form2.Memo2.Lines.Add(rrr);
         form2.Memo1.Lines.Add(rrr);
       end;
  end
  else
   showmessage('你还没有选择目标状态或目标状态存在!');
end;

procedure TForm2.BitBtn3Click(Sender: TObject);
begin
   if  Form2.SaveDialog2.Execute then
   memo3.Lines.SaveToFile(SaveDialog2.FileName);
end;

end.

⌨️ 快捷键说明

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