高手坐镇(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。