unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Addbtn: TButton; Memo1: TMemo; Label1: TLabel; DelBtn: TButton; InputdataEdt: TEdit; Label2: TLabel; Button1: TButton; Button2: TButton; Button3: TButton; procedure FormActivate(Sender: TObject); procedure FormKeyPress(Sender: TObject; var Key: Char); procedure AddbtnClick(Sender: TObject); procedure DelBtnClick(Sender: TObject); procedure Button1Click(Sender: TObject); function Fact(num:integer):integer; procedure Button2Click(Sender: TObject); procedure Button3Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation const maxsize = 5; type TStackStructure = record items: array[1..maxsize] of string; top:integer; end; var stack:TStackStructure; {$R *.dfm} function TForm1.Fact(num:integer):integer; begin if num=1 then Result:=1 else Result:=num * Fact(num-1); end; procedure TForm1.FormActivate(Sender: TObject); var i:integer; begin for i:=1 to maxsize do stack.items[i]:=''; top:=0; end; procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char); begin if key=#27 then close; end; procedure TForm1.AddbtnClick(Sender: TObject); var temp:string; i:integer; begin if stack.top = maxsize then begin memo1.Lines.Add('堆疊已滿'); abort; end; //將資料加入stack中-S inc(stack.top); stack.items[stack.top]:= inputdataEdt.Text; //將資料加入stack中-E //將stack資料列印出來-S temp:=''; for i:=1 to stack.top do temp:=temp+stack.items[i]+' '; memo1.Lines.Add(temp); //將stack資料列印出來-E end; procedure TForm1.DelBtnClick(Sender: TObject); var temp:string; i:integer; begin if stack.top = 0 then begin memo1.Lines.Add('堆疊已無任何資料'); abort; end; //將資料加入stack中-S //memo1.Lines.Add('***刪除***' + stack.items[stack.top]); stack.items[stack.top]:= ''; dec(stack.top); stack.items[stack.top]:= ''; dec(stack.top); //將資料加入stack中-E //將stack資料列印出來-S temp:=''; for i:=1 to stack.top do temp:=temp+stack.items[i]+' '; memo1.Lines.Add(temp); //將stack資料列印出來-E end; procedure TForm1.Button1Click(Sender: TObject); var ans:integer; begin ans:=Fact(strtoint(inputdataEdt.Text)); memo1.Lines.Add(inttostr(ans)); end; procedure TForm1.Button2Click(Sender: TObject); var temp,ans:string; i:integer; begin temp:='ABCDEFG'; // Copy(S; Index, Count: Integer): string; //ans:=copy(temp,2,3); //memo1.Lines.Add(ans); //memo1.Lines.Add( inttostr(length(temp)) ); for i:=1 to length(temp) do begin memo1.Lines.Add(copy(temp,i,1)); end; //memo1.Lines.Add(copy(temp,i,1)); end; procedure TForm1.Button3Click(Sender: TObject); var temp:string; i:integer; // ans:char; begin temp:='25436'; for i:=1 to length(temp) do begin if (copy(temp,i,1) >= '0') and (copy(temp,i,1) <= '9') then memo1.Lines.Add(copy(temp,i,1)); end; end; end.