头号甜心.Beauti 发表于 2014-8-19 22:14:48

刚写的计算器,出自——零基础Delpghi005

刚开始学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)


无所谓无的 发表于 2014-8-19 23:21:08

是 Delphi吧!!!

无所谓无的 发表于 2014-8-19 23:23:04

Debug 编译的 很大·!!用Release 应该是 2M 多点!!

头号甜心.Beauti 发表于 2014-8-19 23:38:34

无所谓无的 发表于 2014-8-19 23:23
Debug 编译的 很大·!!用Release 应该是 2M 多点!!

感谢你我百度到现在终于找到在哪里切换了

comeheres 发表于 2014-8-19 23:58:21

光看视频不行,同时找本书,推荐delphi5开发人员指南、delphi精要等等

comeheres 发表于 2014-8-20 00:02:46

delphi版本越高,编译出来的程序体积也越大,不过编译Release版,再用压缩壳压缩下程序,大小也能接受。。。。

头号甜心.Beauti 发表于 2014-8-20 00:14:25

comeheres 发表于 2014-8-20 00:02
delphi版本越高,编译出来的程序体积也越大,不过编译Release版,再用压缩壳压缩下程序,大小也能接受。。 ...

请问你知道怎样吧Autosize的默认属性设置为False吗

cable5881 发表于 2014-8-20 08:34:09

我也才刚刚学习,先收藏哈!!!

小栗子 发表于 2014-8-20 09:13:39

路过支持下,,,

comeheres 发表于 2014-8-20 09:43:24

头号甜心.Beauti 发表于 2014-8-20 00:14
请问你知道怎样吧Autosize的默认属性设置为False吗

要改源码吧,或者已经继承下该控件的基类,自己写个新控件

comeheres 发表于 2014-8-20 09:44:10

自己 打成了 已经,额

irvine726 发表于 2014-8-20 16:17:46

谢谢分享

irvine726 发表于 2014-8-20 16:21:57

谢谢分享

gyixue 发表于 2014-8-26 20:37:06

学习一下{:9_241:}
页: [1]
查看完整版本: 刚写的计算器,出自——零基础Delpghi005