Delphi随笔二

一、关于界面
  界面对于一个程序,仿佛就是容貌对于一个人,重要性是不言而喻的。
  一个程序的界面做的很漂亮是很好,但是如果界面不能很好的反映功能,那再漂亮的界面都是垃圾一堆,这方面我是有体会的,当你的大部分精力全放在如何

做一个漂亮的界面的时候,灾难就降临了,你将永远无法把程序的功能做好!如果想把程序做好,就不要考虑漂亮的界面,等到功能全部实现的时候,界面自然

就会出现,到时候美化也不迟。
  这个问题上,Delphi的程序员可能遇到的最多,因为满天飞的都是漂亮的控件,这个也好,那个也好,不用真是可惜,于是找个一堆控件,一个个的试验过来

,功能全然不顾。其实用户用一个软件,不是因为界面漂亮,而是因为功能强。即使是在DOS窗口下跑的程序,只要功能强,用户照样会津津有味的使用,如果功

能弱的一塌糊涂,即使界面做成无比酷,最后的命运也是被删除。所以,写一个软件的时候,请首先从功能入手,而不是界面!
  那么是不是不用考虑漂亮的界面呢?也不是。终究漂亮的界面是很吸引眼球的,但是要是按照我的意思,先弄个普通的界面,最后美化,会造成一个问题,就

是要修改很多代码,比如:

procedure TMainForm.Button1Click(Sender : TObject)
begin
  FWidth := StrToInt(Edit1.Text);
  FHeight := StrToInt(Edit2.Text);
  FScreenSize := FWidth * FHeight;
end;

  上面的代码运行的时候是没有什么问题的,但是一旦你换了一个Edit控件,或者是只是换了Edit的名字,工作量就出来了,一个两个的变化还没有问题,假如

这个Edit1.Text在代码里出现了100多个地方呢?怎么办?我的方法是把程序的界面和功能分开!代码尽量不要和具体的控件相关联。如下:
procedure TMainForm.SetParam(const Width, Height : string);
begin
  FWidth := StrToInt(Width);
  FHeight := StrToInt(Height);
  FScreen := FWidth * FHeight;
end;
procedure TMainForm.Button1Click(Sender : TObject)
begin
  SetParam(Edit1.Text, Edit2.Text);
end;
  这个例子有点极端,好像是画蛇添足,但是当你大量的修改控件或者更换控件名字的时候,作用就显示出来了。到你最后想美化界面的时候,修改代码的工作

量会减轻很多。因为只要传入的参数更换一次就可以,而不是在无数的地方进行修改。
  原则:界面和实现分开

二、全局变量
  不要使用全局变量!!!即使设定的全局变量你认为一万年也不会变,也不要使用,因为说不定那天修改了一个功能,这个全局变量就要拆成两个变量了,那

么问题就会出现,还是通过参数传递吧。还是来个例子:
//main
const
  ShowWidth = 384;
  ShowHeight = 288;
...

// SetParamDlg 子窗口
  SpinEdit1.Value := MainForm.ShowWidth;
  SpinEdit2.Value := MainForm.ShowHeight;

  上面的代码工作的不错,但是假如有一天客户说我要分辨率可变,怎么办?在const里重新加入ShowWidth1、ShowWidth2、、、?最后const的体积会越来越大

,查const的时候会累死你,那换一种方法:
//main
function ReadWidth : integer;
function ReadHeigth : integer;

SetParamDlg.Width := ReadWidth;
SetParamDlg.Height := ReadHeight;

//SetParamDlg
  SpinEdit1.Value := FWidth;
  SpinEdit2.Value := FHeight;

  是不是比较好一点?
  原则:尽量在一开始设计的时候把所有看起来目前不会变化的参数也做成动态的。

三、一个小问题
  这是我在一个网站上看到的,比较有意思,而且感觉很容易犯,这里就抄袭一下了,不过这只是编程技巧,不是方法
function sum(a : array of word; count : word) : longword;
var
 i : word;
begin
 result := 0;
 for i := 0 to count - 1 do inc(result, a[ i ]);
end;

  上面的代码有问题么?乍看是没有问题,但是说不定什么时候他就当掉了。为什么?因为Count是个WORD,假如传入参数的时候Count=0会发生什么事情呢?对

了,WORD翻转了,那就等他循环FFFF次吧:)所以请注意无符号类型的操作!


累了,自己都感觉没写好,休息ing,欢迎砖头,欢迎高手来发表意见....

阅读终点,创作起航,您可以撰写心得或摘录文章要点写篇博文。去创作
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: Delphi的cnsm2encryptdata是一个函数,用于对数据进行加密处理的操作。该函数基于cnsm2加密算法,并可以将输入的数据进行加密转换。 cnsm2是一种国别密码算法,是中国对称密码算法标准之一。它采用了一种非对称的加密方法,具有高度的安全性和可靠性。与其他对称加密算法相比,cnsm2更适合用于加密较长的数据流。 使用delphi的cnsm2encryptdata函数,我们可以将需要保密的数据作为输入参数传递给该函数,并通过所提供的密钥进行加密操作。加密后的数据将被返回,可以用于传输、存储或处理。 在对数据进行加密操作时,进行cnsm2加密算法的选择是非常重要的。cnsm2加密算法具有较高的加密强度和安全性,可以有效地保护数据的保密性。同时,使用delphi编程语言进行加密操作,能够提供较高的编程灵活性和易用性,满足开发者的需求。 总结一下,delphi的cnsm2encryptdata函数是用于实现cnsm2加密算法对数据进行加密的操作。它能够保证数据的保密性和完整性,提供了一种可靠的加密处理方式,适用于各种数据保密需求的场景。 ### 回答2: delphi cnsm2encryptdata是一个Delphi编程语言中的函数或方法,用于将数据使用CN SM2算法进行加密。 CN SM2(中国国家密码管理局椭圆曲线公钥密码算法)是中国国家密码管理局发布的一种对称加密算法,以椭圆曲线为基础,并结合了数字签名、密钥交换和密钥派生等功能。它在保证安全性和效率方面有一定优势。 在Delphi中,使用cnsm2encryptdata函数可以通过CN SM2算法加密数据。该函数通常接收两个参数:待加密的数据和用于加密的公钥。具体的使用方法和参数可根据具体的开发环境和需求来决定。 调用cnsm2encryptdata函数后,该函数会将待加密的数据使用CN SM2算法进行加密,并返回加密后的数据。这些加密后的数据可以用于传输、存储或其他安全性要求较高的场景中,以确保数据的机密性和完整性。 总的来说,delphi cnsm2encryptdata是一个用于在Delphi编程语言中使用CN SM2算法进行数据加密的函数或方法。通过使用该函数,可以加强数据的安全性,保护敏感信息不被泄露或篡改。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

oldsword

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值