高手坐镇(25)
编程学堂
求助邮箱:pcw-chendx@vip.sina.com。欢迎高手加入我们的答疑团队。
APP:开发APP要看哪些书
题目难度:★★
读者来信:看了第23期《自学PHP要看哪些书》,偶也来问问,勿怪哈!偶问的是开发APP程序需要看哪些书(最好是针对iOS的),谢谢!
编辑 陈邓新:苹果APP商店的确吸引眼球,难怪很多读者关注它。不过,苹果系统的APP比较独特,它用的语言主要是Object-C(该语言类似C++语言),所以你第一步要做的是学习C++语言。
掌握了C++语言,再过渡到Object-C语言就比较轻松了,所以你要看一些C语言的书,例如《Visual C++入门教程》等。解决了语言问题,剩下的就是熟悉苹果的SDK,熟悉了它就可以快速开发出APP了,你可以看看《AppStore掘金——iPhoneSDK应用程序开发》等书籍。
VB:简易的赛车游戏
题目难度:★★★
读者来信:我正在开发一款简易的赛车游戏(这是一道练习题),老是编译不成功,想知道哪里出了问题。希望得到《电脑报》高手的指点。
程序员 赵哥:你的代码我看了,比较混乱,有部分代码的意思没有看明白,呵呵!我在网上看到了这道题,其实就是最初级的方块游戏,只要设置好界面,编写游戏控制代码和循环代码即可。我给你一份源代码,你编译试试。关键代码如下(完整代码下载地址:http://www.icpcw.com/bzsoft):
'布局界面
Private Sub Command1_Click()
cx = Width / 2 - 3 * D / 2
cy = Height - D
drawcar
For i = 1 To 20
l1(i) = 0
l2(i) = 0
drawway (i)
Next i
Timer1.Enabled = True
Private Sub drawcar()
Line (cx, BT - 100)-Step(3 * D, D), BackColor, BF
Line (cx + D, BT - 200)-Step(D, D), BackColor, BF
Line (cx, BT - 100)-Step(3 * D, D), RGB(225, 0, 0), BF
Delphi:软件如何在线升级
题目难度:★★★★★
读者来信:《电脑报》的各位高手好,小弟有礼啦!我去年买的电脑,然后看到很多黑客故事,非常羡慕和崇拜他们,于是萌生了想当黑客的念头。我曾经问过负责安全的编辑陈邓新,他告诉我想当一名真正的黑客,一定要掌握编程语言。
得到启示后,我学习了两种编程语言——现在我已经可以编写一些小软件了。学习过程中,我碰到一个问题,那就是软件(Delphi)如何在线升级呢?希望高手可以给我完整的源代码,辛苦啦!
程序员 故乡的云:希望你成为“白帽”黑客,为网络安全尽一份力。你的这个问题并不难,主要是判断文件的时间,如果文件时间比服务器上的文件时间早,就进行在线升级。是不是很简单?不知道你编写的是什么软件,所以我只能给你经典的相关源代码,你下载下来多研究一下。关键代码如下(完整代码下载地址:http://www.icpcw.com/bzsoft):
function ExistNewfile&:boolean;
var i,iFileHandle:integer;
FileDateTime:TDateTime;
AppIni:TiniFile;
g_path:string;
url:string;
files:TStrings;
begin
result:=false;
url:='http://yousoft.hi.com.cn/update.htm/'; //要升级的服务器
g_path:=ExtractFilePath(application.ExeName); //升级程序的路径
if copy(g_path,length(g_path),1)<>'\' then g_path:=g_path+'\';
if copy(url,length(url),1)<>'/' then url:=url+'/';
//下载升级信息文件
try
HTTPFiles.InputFileMode := true;
HTTPFiles.OutputFileMode := FALSE;
HTTPFiles.ReportLevel := Status_Basic;
HTTPFiles.Body:=g_path+'update/update.ini'; //下载后保存到程序的update目录下
HTTPFiles.Get(url);
except
result:=false; //'取得升级信息出错,不用再继续
exit;
end;
try
files:=TStringlist.Create; //有哪些文件?
AppIni := TIniFile.Create(g_path+'\update\update.ini');
AppIni.ReadSections(files);
for i:=0 to files.Count-1 do
try
iFileHandle :=FileOpen(g_path+files[i],fmShareDenyNone);
FileDateTime:=FileDateToDateTime(FileGetDate(iFileHandle)); //取得文件时间
FileClose(iFileHandle);
//是否要下载文件
if FileDateTime begin result:=true;