📄 unit2.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 + -