高手坐镇(35)
数字职场
编程开发领域很广,开发途中遇到的问题千奇百怪,碰到问题找不到解决方法怎么办?需要高人指点!为此,我们特意开设此栏目,邀请四方开发高手来帮助大家。如果你在开发途中遇到问题,如果你有能力解决这些问题,欢迎与我们联系,来信请发到pcw-chendx@vip.sina.com。
软件读取系统时间
题目难度:★★★★
读者来信:我用VC编写了一个程序,我想给程序添加一个新功能,获取系统当前时间并实时显示在程序右上角,时间要求精确到秒,我试了半天,没有弄出来,特来求教!
软件开发者 李洪刚:VC窗体显示时间很简单,主要用CTime类和SetTimer函数。在窗口创建的时候添加定时器,用 time=CTime::GetCurrentTime();得到当前时间,用time.Format()函数转换时间的格式精确到秒即可。示例如下:
在classview中添加windows消息函数VM_create,添加代码:
int CCommDlg::OnCreate(LPCREATESTRUCT lpCreateStruct)
{ SetTimer(1,1000,NULL);//安装定时器,并将时间间隔设为1000毫秒
}
添加定时器相应函数并更新控件(用于显示时间),在classview中添加windows消息函数 VM_timer,添加代码:
void CCommDlg::OnTimer(UINT nIDEvent)
{
CTime time;
time=CTime::GetCurrentTime(); //得到当前时间
CString s=time.Format("%Y-%m-%d %H:%M:%S");//转换时间格式为年-月-日 时-分-秒
m_time=s; //设置标签的文字
UpdateData(FALSE);//更新
}
英语和数学是编程的基础
题目难度:★★★
读者来信:今年开始我们班教授C语言,我翻了一下书,头疼!我的英语和数学都不好,这会影响我学习这门语言吗?高手指点一下!
软件开发者 李洪刚:对于学编程的学生来说,英语和数学是必要的基础。首先,很多参考资料都是英文文档,学好英语对理解C语言很有帮助。其次,算法是编程的精髓,而数学是算法的基础,有句名言说“程序= 数据结构+ 算法”,集合、矩阵、图论、微积分等等都是算法的基础。所以,学好英语和数学是学习编程的基础。
TXT文件加密软件
题目难度:★★★★
读者来信:老师给我们布置一道课外思考题,用VB2008编一个TXT文件加密软件,我希望高手给我提供一些思路,谢谢!
软件开发者 李洪刚:加密的要点是算法,TXT文件加密算法方法很多,此处简单介绍XOR算法以供你开启思路。若有更高需求,可以采用更安全的算法,例如DES算法、IDEA算法等。以下是加密算法函数的示例代码:
加密后的文本 = XorOut(密码, 原始文本)
'对xor算法而言,解密和加密过程是完全一样的
Private Function XorOut(ByRef strNum As String, ByRef strText As String) As String
Dim i As Integer
Dim XorValue1 As Short
Dim XorValue2 As Short
Dim strResult As String
For i = 1 To Len(strText)
XorValue1 = Asc(Mid(strText, i, 1))
XorValue2 = Asc(Mid(strNum, (i Mod Len(strNum)) + 1, 1))
strResult = strResult & Chr(XorValue1 Xor XorValue2)
Next
XorOut = strResult
End Function
FORTRAN数值问题
题目难度:★★★
读者来信:我是一名FORTRAN的初学者,我有两个疑问想请教,unity=0.0d0, d0表示什么意思?如果是d-9,又表示什么意思?
高级工程师 小恐龙:在FORTRAN中,双精度常数都用指数形式表示,例如1.0e-3表示 1/1000,1.0d-9表示1/1000000000。