马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
刚开始学Delphi,还是看到零基础Delphi005,课内有一个上机练习,就是写完那个演示的计算器,以下是我写的,以及还有一些疑问,请大大帮我解惑,先上源码。unit Unit1;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
Button3: TButton;
Button4: TButton;
Button5: TButton;
Button6: TButton;
Button7: TButton;
Button8: TButton;
Button9: TButton;
Button10: TButton;
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Label1: TLabel;
Label2: TLabel;
procedure Button8Click(Sender: TObject);
procedure Edit1Click(Sender: TObject);
procedure Edit2Click(Sender: TObject);
procedure Edit3Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
procedure Button5Click(Sender: TObject);
procedure Button6Click(Sender: TObject);
procedure Button7Click(Sender: TObject);
procedure Button9Click(Sender: TObject);
procedure Button10Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button10Click(Sender: TObject);
begin
Label1.Caption:='shr';
Edit3.Text:='此功能不会写';
//Edit3.Text:=StrToInt( Shr IntToStr(Edit1.Text) ); //向右位移,这样是错的
//Edit3.Text:=StrToInt(IntToStr(Edit1.Text) Shr IntToStr(Edit2.Text));//向右位移这样也是错的
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
Label1.Caption:=' +';
Edit3.Text:=IntToStr(StrToInt(Edit1.Text)+StrToInt(Edit2.Text));//这行是加法
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
Label1.Caption:=' -';
Edit3.Text:=IntToStr(StrToInt(Edit1.Text)-StrToInt(Edit2.Text));//这行是减法
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
Label1.Caption:=' ×';
Edit3.Text:=FloatToStr(StrToFloat(Edit1.Text)*StrToFloat(Edit2.Text));//这行是乘法
end;
procedure TForm1.Button4Click(Sender: TObject);
begin
Label1.Caption:=' ÷';
Edit3.Text:=FloatToStr(StrToFloat(Edit1.Text)/StrToFloat(Edit2.Text)); //这行是除法
end;
procedure TForm1.Button5Click(Sender: TObject);
begin
Label1.Caption:='Not';
Edit3.Text:=IntToStr( Not StrToInt(Edit1.Text) );
end;
procedure TForm1.Button6Click(Sender: TObject);
begin
Label1.Caption:='And';
Edit3.Text:=InttOStr(StrToInt(Edit1.Text) And StrToInt(Edit2.Text));
end;
procedure TForm1.Button7Click(Sender: TObject);
begin
Label1.Caption:='or';
Edit3.Text:=IntToStr(StrToInt(Edit1.Text) Or StrToInt(Edit2.Text));
end;
procedure TForm1.Button8Click(Sender: TObject);
begin
Label1.Caption:='xor';
Edit3.Text:=IntToStr(StrToInt(Edit1.Text) Xor StrToInt(Edit2.Text));
end;
procedure TForm1.Button9Click(Sender: TObject);
begin
Label1.Caption:='shl';
Edit3.Text:='此功能不会写';
//Edit3.Text:=StrToInt(IntToStr(Edit1.Text) Shl IntToStr(Edit2.Text)); //向左位移这样也是错的
//Edit3.Text:=StrToInt( Shl IntToStr(Edit1.Text) );//这样也是错的
end;
procedure TForm1.Edit1Click(Sender: TObject);
begin
Edit1.Text:='';
end;
procedure TForm1.Edit2Click(Sender: TObject);
begin
Edit2.Text:='';
end;
procedure TForm1.Edit3Click(Sender: TObject);
begin
Edit3.Text:='';
end;
end.
问题1:向左位移(shl)函数和向右位移(shr)函数怎么用,在源码里那几行我有注释,课内小甲鱼老师也没有讲解。
问题2:关于Not、And、Or、Xor、Shl、Shr的算法,有没有详细一点的讲解,视频看了3遍,看的时候我倒是能记住,一转头就忘了,一头雾水所有东西都混在一起了,特别是And,那个按位取反好像还要加一减一什么的,还有符号位,我高中没毕业....是在弄不清
问题3:我用的是Rad Studio xe6,也就是Delphi xe6,我写出来的程序就是计算器这种简单的程序都有10.2MB,小甲鱼老师视频里我记得好像是520KB左右,我也问过别人别人问我是不是在debug模式下编译的,xe6默认的生成文件夹的名字就是‘debug’,然后他就叫我去看看是不是在deug模式下编译的就没声了,我也不知道是这个模式下编译的程序是会比较大还是比较小,有没有什么解决办法,写好的程序都传不上论坛了。
写好的程序已经上传到360云盘,有兴趣的朋友可以下载看看。
http://yunpan.cn/QakyTnUpN3dp6 (提取码:f6ea)
|