马化腾:一推就倒!中国技术实力只是表面辉煌罢了

点击上方“CSDN”,选择“置顶公众号”

关键时刻,第一时间送达!

在 26 日的“未来论坛 X 深圳峰会”上,腾讯公司董事会主席兼 CEO、未来科学大奖·数学与计算机科学奖捐赠人马化腾就中兴事件、国产芯片、基础学科、移动支付等话题发表了自己的看法。

在谈到中兴事件时马化腾表示,“(它)把大家都打醒了”。虽然今天中兴事件正在得到妥善的解决,但仍要更加关注基础学科的研究——国内基础学科非常薄弱,所谓的“新四大发明”、移动支付等等也只是表面辉煌罢了,实际却是“沙滩建楼,一推就倒”。


马化腾表示,“所有人都清楚我们不能再抱有侥幸心理”,大家应该清醒地意识到,“移动支付再先进,没有手机终端、芯片和操作系统,竞争实力也不够

“所以,一定要投入更多资源在基础科学方面,这其中包括生物、物理、材料学,还有生命科学。”他坦言,很多基础学科投入巨大,且短期不太赚钱。所以,中国科学若要发展,需要政府产、学、研的通力合作

马化腾还表示,他最近也在思考,腾讯能不能从芯片到操作系统,或者从人工智能到量子计算多做更多的事情,这也是业界对于腾讯的期待。“这个事情难度不小,而且有可能永远做备胎,永远不可能被用”,但他表示,“我觉得现在做备胎也是有价值的,没有备胎(则)会永远被人掐住喉咙。”

以下为马化腾现场演讲全文,消息来源为深圳新闻网:

尊敬的各位领导、各位嘉宾,大家下午好!

非常荣幸,这是我两年内第三次参加“未来论坛”的活动,第一次参加时,我还是旁观者见证,当时我还没有成为捐赠人。

第二届我很荣幸成为捐赠人之一,全程参与了整个颁奖的过程,非常正式,还要打领带、念诗等等,像我这样的广东普通话去朗诵确实是为难我了,当时还练了好久。

后来,我们说这个大奖非常成功,业内也有相当大的影响力,是不是能请获奖的这些科学家在其他城市走一走?跟当地的年轻人交流?当时,我在未来论坛的群里面第一时间举手报名,我说那来深圳吧,这个地方更加需要。

粤港澳大湾区的科技环境,就像刚才王强书记讲的,深圳的国际PCT专利在全国的占比接近一半,南山又占到了深圳的一半,甚至最高峰时达到全国的25%,一个区在整个国家的专利申请中能达到1/4强,我觉得这可以说是国内第一大区。虽然刚才王强书记说,南山的GDP从区里面比,是全国第三,但从密度来说算第一。 我想今天我们来到南山举办这个活动,也非常有意义。

刚才我们在会议室交流的时候,也提到中国的科学、科技有一个特点,“北方以基础学科为主,但南方以科技应用较强。”的确是这样,像我们所处的互联网行业,虽然现在讲“新四大发明”,讲移动支付在全球领先,但实际上这还都只是科技应用,回归到基础科学研究来说,整个中国其实基础还是非常薄弱。

尤其是最近的中兴事件,更加让大家清醒的意识到:移动支付再先进,没有手机终端,没有芯片和操作系统,竞争起来的话,你的实力也不够。今天中兴事件正在得到妥善的解决,但是我们还是不能掉以轻心,现在这个时候,大家要更加关注基础学科的研究。

过去,大家更关注实用主义,但是这之后,我想所有人都清楚我们不能再抱有侥幸心理,一定要投入更多资源去做基础科学研究。未来科学大奖和论坛应该说恰逢其时,非常有前瞻性。两年前可能没有想到有今天这样的情况,但是今天大家感触良多。

我觉得,要发展基础科学研究,还有很多事情要做,包括政府、产学研等几方面都要通力合作。大家往往看到做基础研究不赚钱,遥遥无期,投入很大,做应用能更加简单一点。很多人也对像腾讯等企业提出要求,说你们作为市值比较大的科技企业应该做些什么?很多人给我们提建议,我最近也在思考,很多人说你们能不能从芯片到操作系统,或者从人工智能到量子计算多做点事情?

过去我们觉得这个产业链离我们很远,做软件、做服务离芯片好像远了一点。但实际上我们做了很多数据中心,包括云,我们对很多服务器端,甚至包括芯片的需求是有一定的影响力的,也就是说我们可以倒逼芯片设计行业针对我们的服务和需求做设计,特别是我们的应用服务是海量的,用户规模特别大,这是我们第一时间能够想到的。

如果我们还能介入支持一些芯片的研发,可能更好。但是这一点坦率来说我们未必擅长,可能还要借助产业链的其他力量,去做这个事情。

另外一方面,也有人提建议说,我记得饶毅教授给我提建议,国家很多大学对基础学科的人才需求很大,但由于很多大学经费是有限制的,所以说业内这些企业,包括很多基金会,能不能重点针对一些基础学科的这些科学家,吸引他们回国,来到各个大学,资助他们去做基础研究?这个思路也给我很大的启发。

也有人建议,我们受制于芯片和操作系统。为什么被操作系统受制?在于它很多应用与系统是不兼容的,比如说在手机端,微软在手机端的操作系统份额几乎降到1%以下,因为很多应用不支持它,它的份额不大。像微信以前还有手机端Windows版本,现在份额太小了不开发了,越不开发运行Windows版本的手机应用,买的人就越少,这是一个相辅相成的过程。

所以我们作为一个应用开发商,包括我们在应用里做的小程序,如果有可能在国产芯片上能直接支持到更多服务,一次开发,在整个国产芯片上能够运行,包括国产操作系统上也能够运行,我觉得可以有机会用OTT方式解决很多问题,这也是业界可能对腾讯的期待。这个事情还非常有前瞻性,难度不小,而且有可能永远做备胎,永远不可能被用,这是一个很现实的问题,但是我觉得现在做备胎是有价值的,没有备胎会永远被人掐住喉咙,这是一个思考。

我记得华为任正非在内部也在讲,他们研发海思芯片,就是说你们可能永远是做备胎的,当时很多人不理解,但是今天这个格局可能大家更加理解。所以我想说整个业界,所有在座的朋友都要更加关注基础学科,当然不仅是信息科技了,包括生物、物理、材料学,还有生命科学,都是我们的基础学科,另外一个非常重要的内容,就是要更加发挥粤港澳大湾区的优势,这里面大家可以联动起来,共同为这个目标而努力。

今天的主角是在座的科学家。我特别感动,虽然是春天,但是春天脚步太快了,今天已经感觉夏天了,三十几度,我感觉大家对科学的热情更加火热,再次感谢大家来到现场,谢谢大家!

  征稿啦!

CSDN 公众号秉持着「与千万技术人共成长」理念,不仅以「极客头条」、「畅言」栏目在第一时间以技术人的独特视角描述技术人关心的行业焦点事件,更有「技术头条」专栏,深度解读行业内的热门技术与场景应用,让所有的开发者紧跟技术潮流,保持警醒的技术嗅觉,对行业趋势、技术有更为全面的认知。
如果你有优质的文章,或是行业热点事件、技术趋势的真知灼见,或是深度的应用实践、场景方案等的新见解,欢迎联系 CSDN 投稿,联系方式:微信(guorui_1118,请备注投稿+姓名+公司职位),邮箱(guorui@csdn.net)。

————— 推荐阅读 —————

点击图片即可阅读

展开阅读全文

最考验技术实力的题

07-21

去一家大软件公司应聘,要求改写程序,把下列加密DELPHI写的模块,改成ASP实现的完全正确的功能,最后实在没办法搞定就放弃了,本来DELPHI与ASP都不是能相比的rnunit Des;rnrninterfacernrnuses SysUtils;rnrntypern TKeyByte = array[0..5] of Byte;rn TDesMode = (dmEncry, dmDecry);rnrnfunction EncryStr(Str, Key: string): string; //加密函数 key为密钥匙,可以自己任意定义rnfunction DecryStr(Str, Key: string): string; //解密函数rnfunction EncryStrHex(Str, Key: string): string; //加密函数rnfunction DecryStrHex(StrHex, Key: string): string; //加密函数rnrnconstrn BitIP: array[0..63] of Byte =rn (57, 49, 41, 33, 25, 17, 9, 1,rn 59, 51, 43, 35, 27, 19, 11, 3,rn 61, 53, 45, 37, 29, 21, 13, 5,rn 63, 55, 47, 39, 31, 23, 15, 7,rn 56, 48, 40, 32, 24, 16, 8, 0,rn 58, 50, 42, 34, 26, 18, 10, 2,rn 60, 52, 44, 36, 28, 20, 12, 4,rn 62, 54, 46, 38, 30, 22, 14, 6);rnrn BitCP: array[0..63] of Byte =rn (39, 7, 47, 15, 55, 23, 63, 31,rn 38, 6, 46, 14, 54, 22, 62, 30,rn 37, 5, 45, 13, 53, 21, 61, 29,rn 36, 4, 44, 12, 52, 20, 60, 28,rn 35, 3, 43, 11, 51, 19, 59, 27,rn 34, 2, 42, 10, 50, 18, 58, 26,rn 33, 1, 41, 9, 49, 17, 57, 25,rn 32, 0, 40, 8, 48, 16, 56, 24);rnrn BitExp: array[0..47] of Integer =rn (31, 0, 1, 2, 3, 4, 3, 4, 5, 6, 7, 8, 7, 8, 9, 10,rn 11, 12, 11, 12, 13, 14, 15, 16, 15, 16, 17, 18, 19, 20, 19, 20,rn 21, 22, 23, 24, 23, 24, 25, 26, 27, 28, 27, 28, 29, 30, 31, 0);rnrn BitPM: array[0..31] of Byte =rn (15, 6, 19, 20, 28, 11, 27, 16, 0, 14, 22, 25, 4, 17, 30, 9,rn 1, 7, 23, 13, 31, 26, 2, 8, 18, 12, 29, 5, 21, 10, 3, 24);rnrn sBox: array[0..7] of array[0..63] of Byte =rn ((14, 4, 13, 1, 2, 15, 11, 8, 3, 10, 6, 12, 5, 9, 0, 7,rn 0, 15, 7, 4, 14, 2, 13, 1, 10, 6, 12, 11, 9, 5, 3, 8,rn 4, 1, 14, 8, 13, 6, 2, 11, 15, 12, 9, 7, 3, 10, 5, 0,rn 15, 12, 8, 2, 4, 9, 1, 7, 5, 11, 3, 14, 10, 0, 6, 13),rnrn (15, 1, 8, 14, 6, 11, 3, 4, 9, 7, 2, 13, 12, 0, 5, 10,rn 3, 13, 4, 7, 15, 2, 8, 14, 12, 0, 1, 10, 6, 9, 11, 5,rn 0, 14, 7, 11, 10, 4, 13, 1, 5, 8, 12, 6, 9, 3, 2, 15,rn 13, 8, 10, 1, 3, 15, 4, 2, 11, 6, 7, 12, 0, 5, 14, 9),rnrn (10, 0, 9, 14, 6, 3, 15, 5, 1, 13, 12, 7, 11, 4, 2, 8,rn 13, 7, 0, 9, 3, 4, 6, 10, 2, 8, 5, 14, 12, 11, 15, 1,rn 13, 6, 4, 9, 8, 15, 3, 0, 11, 1, 2, 12, 5, 10, 14, 7,rn 1, 10, 13, 0, 6, 9, 8, 7, 4, 15, 14, 3, 11, 5, 2, 12),rnrn (7, 13, 14, 3, 0, 6, 9, 10, 1, 2, 8, 5, 11, 12, 4, 15,rn 13, 8, 11, 5, 6, 15, 0, 3, 4, 7, 2, 12, 1, 10, 14, 9,rn 10, 6, 9, 0, 12, 11, 7, 13, 15, 1, 3, 14, 5, 2, 8, 4,rn 3, 15, 0, 6, 10, 1, 13, 8, 9, 4, 5, 11, 12, 7, 2, 14),rnrn (2, 12, 4, 1, 7, 10, 11, 6, 8, 5, 3, 15, 13, 0, 14, 9,rn 14, 11, 2, 12, 4, 7, 13, 1, 5, 0, 15, 10, 3, 9, 8, 6,rn 4, 2, 1, 11, 10, 13, 7, 8, 15, 9, 12, 5, 6, 3, 0, 14,rn 11, 8, 12, 7, 1, 14, 2, 13, 6, 15, 0, 9, 10, 4, 5, 3),rnrn (12, 1, 10, 15, 9, 2, 6, 8, 0, 13, 3, 4, 14, 7, 5, 11,rn 10, 15, 4, 2, 7, 12, 9, 5, 6, 1, 13, 14, 0, 11, 3, 8,rn 9, 14, 15, 5, 2, 8, 12, 3, 7, 0, 4, 10, 1, 13, 11, 6,rn 4, 3, 2, 12, 9, 5, 15, 10, 11, 14, 1, 7, 6, 0, 8, 13),rnrn (4, 11, 2, 14, 15, 0, 8, 13, 3, 12, 9, 7, 5, 10, 6, 1,rn 13, 0, 11, 7, 4, 9, 1, 10, 14, 3, 5, 12, 2, 15, 8, 6,rn 1, 4, 11, 13, 12, 3, 7, 14, 10, 15, 6, 8, 0, 5, 9, 2,rn 6, 11, 13, 8, 1, 4, 10, 7, 9, 5, 0, 15, 14, 2, 3, 12),rnrn (13, 2, 8, 4, 6, 15, 11, 1, 10, 9, 3, 14, 5, 0, 12, 7,rn 1, 15, 13, 8, 10, 3, 7, 4, 12, 5, 6, 11, 0, 14, 9, 2,rn 7, 11, 4, 1, 9, 12, 14, 2, 0, 6, 10, 13, 15, 3, 5, 8,rn 2, 1, 14, 7, 4, 10, 8, 13, 15, 12, 9, 0, 3, 5, 6, 11));rnrn BitPMC1: array[0..55] of Byte =rn (56, 48, 40, 32, 24, 16, 8,rn 0, 57, 49, 41, 33, 25, 17,rn 9, 1, 58, 50, 42, 34, 26,rn 18, 10, 2, 59, 51, 43, 35,rn 62, 54, 46, 38, 30, 22, 14,rn 6, 61, 53, 45, 37, 29, 21,rn 13, 5, 60, 52, 44, 36, 28,rn 20, 12, 4, 27, 19, 11, 3);rnrn BitPMC2: array[0..47] of Byte =rn (13, 16, 10, 23, 0, 4,rn 2, 27, 14, 5, 20, 9,rn 22, 18, 11, 3, 25, 7,rn 15, 6, 26, 19, 12, 1,rn 40, 51, 30, 36, 46, 54,rn 29, 39, 50, 44, 32, 47,rn 43, 48, 38, 55, 33, 52,rn 45, 41, 49, 35, 28, 31);rnrnvarrn subKey: array[0..15] of TKeyByte;rnrnimplementationrnrnprocedure initPermutation(var inData: array of Byte);rnvarrn newData: array[0..7] of Byte;rn i: Integer;rnbeginrn FillChar(newData, 8, 0);rn for i := 0 to 63 dorn if (inData[BitIP[i] shr 3] and (1 shl (7 - (BitIP[i] and $07)))) <> 0 thenrn newData[i shr 3] := newData[i shr 3] or (1 shl (7 - (i and $07)));rn for i := 0 to 7 dorn inData[i] := newData[i];rnend;rnrnprocedure conversePermutation(var inData: array of Byte);rnvarrn newData: array[0..7] of Byte;rn i: Integer;rnbeginrn FillChar(newData, 8, 0);rn for i := 0 to 63 dorn if (inData[BitCP[i] shr 3] and (1 shl (7 - (BitCP[i] and $07)))) <> 0 thenrn newData[i shr 3] := newData[i shr 3] or (1 shl (7 - (i and $07)));rn for i := 0 to 7 dorn inData[i] := newData[i];rnend;rnrnprocedure expand(inData: array of Byte; var outData: array of Byte);rnvarrn i: Integer;rnbeginrn FillChar(outData, 6, 0);rn for i := 0 to 47 dorn if (inData[BitExp[i] shr 3] and (1 shl (7 - (BitExp[i] and $07)))) <> 0 thenrn outData[i shr 3] := outData[i shr 3] or (1 shl (7 - (i and $07)));rnend;rnrnprocedure permutation(var inData: array of Byte);rnvarrn newData: array[0..3] of Byte;rn i: Integer;rnbeginrn FillChar(newData, 4, 0);rn for i := 0 to 31 dorn if (inData[BitPM[i] shr 3] and (1 shl (7 - (BitPM[i] and $07)))) <> 0 thenrn newData[i shr 3] := newData[i shr 3] or (1 shl (7 - (i and $07)));rn for i := 0 to 3 dorn inData[i] := newData[i];rnend;rnrnfunction si(s, inByte: Byte): Byte;rnvarrn c: Byte;rnbeginrn c := (inByte and $20) or ((inByte and $1E) shr 1) orrn ((inByte and $01) shl 4);rn Result := (sBox[s][c] and $0F);rnend;rnrnprocedure permutationChoose1(inData: array of Byte;rn var outData: array of Byte);rnvarrn i: Integer;rnbeginrn FillChar(outData, 7, 0);rn for i := 0 to 55 dorn if (inData[BitPMC1[i] shr 3] and (1 shl (7 - (BitPMC1[i] and $07)))) <> 0rn thenrn outData[i shr 3] := outData[i shr 3] or (1 shl (7 - (i and $07)));rnend;rnrnprocedure permutationChoose2(inData: array of Byte;rn var outData: array of Byte);rnvarrn i: Integer;rnbeginrn FillChar(outData, 6, 0);rn for i := 0 to 47 dorn if (inData[BitPMC2[i] shr 3] and (1 shl (7 - (BitPMC2[i] and $07)))) <> 0rn thenrn outData[i shr 3] := outData[i shr 3] or (1 shl (7 - (i and $07)));rnend;rnrnprocedure cycleMove(var inData: array of Byte; bitMove: Byte);rnvarrn i: Integer;rnbeginrn for i := 0 to bitMove - 1 dorn beginrn inData[0] := (inData[0] shl 1) or (inData[1] shr 7);rn inData[1] := (inData[1] shl 1) or (inData[2] shr 7);rn inData[2] := (inData[2] shl 1) or (inData[3] shr 7);rn inData[3] := (inData[3] shl 1) or ((inData[0] and $10) shr 4);rn inData[0] := (inData[0] and $0F);rn end;rnend;rnrn 论坛

哇,金山的大旗倒啦,中国软件····

11-21

没有什么只是一个挣钱的方法rnrn一个最好的网络赚钱方法;rn也是一个最简单的网络赚钱方法;rnrn大家好! 本人毕业也快两年多了。 rnrn如今呆得实在无聊,除了上网还是上网! rnrn在网上漫游过程中,我发现了一个问题, rnrn为什么各个网站都说能为你赚到很多钱呢? rnrn就连读一封 E-mail 点几回广告栏都能挣到钱? rnrn难以置信,天下哪有免费的午餐? rnrn可呆着实在是无聊啊,反正闲着也是闲着, rnrn找了一个不要身份证,不要会员费, rnrn只要有个地址,电话号码就能挣到钱的网站, rnrn申请成了会员……(反正挣不到钱也不会吃亏^o^) rnrn等了一个月,两个月…… rnrn什么汇款单?连个影子都没有! rnrn不过一想,无所谓了……反正也没吃亏… ^^ rnrn就当是鬼迷心窍一回吧! rnrn可一直到了3个月…… rnrn突然……汇款单到了?! 不看不知道,一看吓一跳! rnrn9百多美金?折合人民币不就是7千多了吗? rnrn半信半疑,到了银行,交了几十元的手续费,换回了7千多…… rnrn真像做梦一样……买了一些一直想买的东东…… rnrn兴奋之余,又开始了我的宣传!宣传越多,挣的越多吗 ^o^ rnrn果然,不到一个月,又飞来了一张单子! rnrn1千3百多美金…… 真是难以置信! rnrn又过了一个月上涨到了2千4百多美金…… rnrn如今,不用上班也有钱花了,真是乐哉乐哉! rnrn你不信?那没办法!只可惜这白花花的银子喽…… rnrn不过,古人云:“宁可信其有,不可信其无”啊…… rnrn反正也不吃亏,就当疯一回试试看嘛…… rnrnrn***********************************************************rn如果你没有兴趣或对此表示反感,下面可以不看了!rn***********************************************************rnrn****加入方法*** 很简单的哦*** rnrn访问:rnrnhttp://www.mintmail.com/?m=1119685rnrnrn进入上面网站(点击不成,复制、粘贴到地址栏) rnrn打开网页,点击右上方 click here 活动图标, rnrn或点击蓝色 FREE Sign-up page 字样也可! rnrn然后,跟着提示,一步一步输入信息就ok了。 rnrn值得高兴的是它能识别中文信息,而能100%加入! rnrn下面是我为了方便大家的加入详细说明了加入过程中的细节 rnrn- First name*: 名字(例:文杰 ) rnrn- Last Name*: 姓 (例:肖 ) rnrn- Company Name: 可不填 rnrn- Street Address*: 家庭住址:(一定要详细填写,不然收不到汇款rn单喽!) rnrn例:上海市 **地方 rnrn- City*: 城市名 (例:ShangHai 英文填写 ) rnrn- State*: 可不填 rnrn- Zip*: 邮编 ( 填 邮编 ) rnrn- Country*: 国家( 选 china ) rnrn- Phone*: 电话号码 ( 国家代码 86 + 去掉区位号前0 的电话号rn码) rnrn例:010-64243365 → 86-10-64243365) rnrn- Fax: 可不填 rnrn- E-mail*: 电子信箱(所有的交流都通过信箱传递,所以务必填写正rn确) rnrn- Confirm E-mail*: 再次输入信箱地址 ***** rnrn- Year of birth*: 出生年例:1970、1980 rnrn- Gender*: 性别 Male(男), Femaie (女) rnrn- Password*: 密码 (6位以上)****** rnrn- Confirm Password: 确认密码 (必须与上相同)****** rnrn- how do you want to receive commissions that you earn? rnrn以什么形式接收礼品? rnrn*gift certificates(double$$) 奖品 *cash 现金 rnrn如要奖品能收到双倍价格的东西, rnrn但都是一些英文版的书籍、磁带、光盘 等 rnrn对于中国人来说,还是选择现金比较合算些,请选择 cash rnrn- do you want to be notified when your referrals sing up? rnrn加入会员成功时通知你吗?选 yes rnrn- MintMail.com 请选择自己的爱好或兴趣 (最多可选10种) rnrn- Submit 点击它 屏幕上就会出现 thank you 的字样 rnrn同时你的ID(用户名 数字)和密码也会出现在屏幕上 rnrn记住它,加入完毕,一切ok了!恭喜发财 ^o^ rnrn然后,5分钟之内你会收到一封欢迎信!.rnrn rnrn*****宣传方法***** rnrnhttp://www.mintmail.com/?m=1119685把最后的数字1119685改为你的rnID(数字) rnrn先介绍给你的亲朋好友们 ^^* rnrn然后,到各个网站的留言板中,把上面的内容全部复制、粘贴进去! rnrn不过,一定要记住把1119685改为你的ID哦 rnrn不然,你是在为我宣传了!而不是你 ^o^ rnrn好了,那就祝你多多发财了…… rnrn不,应该是祝我们一起发大财!这才对啊!^^* rnrnBye! rnrnrnrnrn 论坛

获取文件版本信息的类,如果大家觉得有用就推一推,没用就算了

06-03

起因是想写一个对话框,忽然发现获取当前文件的版本信息很困难,曾经在网上找了很长时间相应的代码,几乎一样的原因:LangID被设置成040904e4,不同用,可是这个LangID还挺难找出来,今天终于找到了一个通用的解决法子,写了个类,大家愿意用就用用看,我不保留版权哦:),对了,如果那位仁兄做出了更完善的版本,记得给小弟发一份,不胜感谢,我这里就算抛砖引玉吧rnrnunit APP;rnrninterfacernrnuses Classes, Dialogs, SysUtils,forms,types,windows;rnrnTypern TAppObj = classrn privatern protectedrn Buf:PChar;rn publicrn InfoNum:integer;rn constructor Create;rn destructor Destroy; override;rn Function Path:string;rn Function Title:string;rn Function Version:string;rn Function FileName:string;rn Function LangID:string;rn Function VersionInfo(Key:string):string;overload;rn Function VersionInfo(Index:Integer):string;overload;rn end;rnimplementationrnrnconstructor TAppObj.Create;rnvar n:DWord;rn S:string;rnbeginrn S:=Application.ExeName ;rn n := GetFileVersionInfoSize(PChar(S),n);rn if (n>0) then beginrn Buf := AllocMem(n);rn GetFileVersionInfo(PChar(S),0,n,Buf);rn endrn else beginrn buf:=nil;rn end;rn InfoNum:=11;rnend;rnrnrndestructor TAppObj.Destroy;rnbeginrn if not (buf=nil) then dispose(buf);rn inherited;rnend;rnrnfunction TAppObj.FileName: string;rnbeginrn result:=ExtractFileNAme(Application.ExeName);rnend;rnrnfunction TAppObj.LangID: string;rn var len:Dword;rn l :^DWord;rn j :array [1..2] of word;rnbeginrn VerQueryValue(Buf, '\VarFileInfo\Translation',pointer(l),len);rn move(l^,j,4);rn Result:=format('%.4x%.4x',[j[1],j[2]]);rnend;rnrnfunction TAppObj.Path: string;rnbeginrn Result:=ExtractFilePath(Application.ExeName);rnend;rnrnfunction TAppObj.Title: string;rnbeginrn result:=Application.Title;rnend;rnrnfunction TAppObj.Version: string;rnbeginrn Result:=VersionInfo('FileVersion');rnend;rnrnfunction TAppObj.VersionInfo(Key: string): string;rn var KeyValue:PChar;rn Len:DWord;rn Sect:String;rnbeginrn if Buf=nil then beginrn Result:='';rn endrn else beginrn Sect:=format('StringFileInfo\%s\%s',[LangID,Key]);rn If VerQueryValue(Buf,PChar(sect),Pointer(KeyValue),Len) Then beginrn KeyValue:= PChar(Trim(KeyValue));rn result:=KeyValue;rn endrn else beginrn result:=''rn end;rn end;rnend;rnrnfunction TAppObj.VersionInfo(Index: Integer): string;rnconstrn InfoStr : array [1..11] of String =rn ('CompanyName', 'FileDescription', 'FileVersion',rn'InternalName', 'LegalCopyright', 'LegalTradeMarks',rn'OriginalFilename', 'ProductName', 'ProductVersion',rn'Comments', 'Author');rn LabelStr : array [1..11] of String =rn ('Company Name', 'Description', 'File Version',rn 'Internal Name', 'Copyright', 'TradeMarks',rn 'Original File Name', 'Product Name',rn 'Product Version', 'Comments', 'Author');rnbeginrn Result:=format('%s=%s',[LabelStr[index],VersionInfo(InfoStr[index])]);rnend;rnEnd.rn 论坛

没有更多推荐了,返回首页