网站导航免费论文 原创论文 论文搜索 原创论文 网学软件 学术大家 资料中心 会员中心 问题解答 原创论文 论文素材 设计下载 最新论文 下载排行 论文上传 在线投稿 联系我们
返回网学首页
网学联系
最新论文 推荐专题 热门论文 素材专题
当前位置: 网学 > 编程文档 > DELPHI > 正文
Delphi系列的Y2K问题
来源:Http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 12/10/12
下载{$ArticleTitle}原创论文样式

  Delphi发展至今,已经是第五版本了。尽管各个版本有大大小小的Bug,但疵不掩暇,她还是赢得了广大程序员和编程爱好者的追随和爱戴。随着2000年的逼近, Y2K的一系列问题和各种解决方案也就随之提到日程上来。对编程者来说,我们现在关心的焦点是:Delphi系列有没有Y2K问题呢?

---- 答案当然是肯定的。从 Delphi4 起,Inprise 公司就在系统单元 Sysutils. pas(dcu)中增加了TwoDigitCenturyWindow 这一关键词。它表示从当前年份起加到两位数的年份的数值,缺省为50(年),也就是说允许Y2K拖后50年才发生。可以这样举一简单的例子:

---- 当前日期为 1999年,调用 FormatDatetime(LongdateFormat,''20-11-04'') 为 2020年11月4日。而 FormatDatetime(LongdateFormat,''50-11-04'') 却为 1950年 11月4日 而不是 2050 年11月4日。

---- 因此,现在的Y2K问题方案只是在争取时间,而没有彻底解决. 理想的解答是到了 2000年,年份的输入和表示应该是4位数,而不是两位,这样才能除去世纪之交的二义性。

---- 沿着这一思路 Delphi5中最重要的插件 MIDAS 3.X(多层分布式应用服务),也是建立在这一时间差基础之上的,它往往和 BDE 的Y2K 修正日期范围联系在一起。需要注意的是:运行时(RTL)控件,Inspire 建议在日期多应用场合,如出生登记,到期付款凭证等事务处理应用时,可根据自己的实际需要来设定(TwoDigitCenturyWindow) 这一初始值,最好实在窗口建立时,及 OnCreate 事件里面设置。Inprise 建议用 100年的世纪窗口(the century window)(相对2000年以前),大部分程序员都喜欢这样设 TwoDigitYearCenturyWindow := CurrentYear - 1950。

---- 100年的世纪窗口(the century window)应作如下解释 :

---- 设 TwoDigitCenturyWindow := 20,那么从现在起,时间支持是20年,其中80年应为过去时间。如:当前时间是 1999年,FormatDatetime(LongdateFormat,''18-11-04'') 为 2018年11月4日,超过了期限,FormatDatetime(LongdateFormat,''20-11-04'') 为 1920年11月4日。

---- 在标准控件中,与日期输入有关的插件是 TMaskEdit.及其派生的子类。TdateTimePicker 插件在没有安装最新的微软 Visual Dev 6.0 以前,到了2000年2月29日时,不能显示正确的日期。另外由于操作系统的原因,COMCTL32.DLL如果不更新到 4.72.2106.4 版本(及以后),那么在 NT 4 或视窗 95 操作系统上,TdateTimePicker 将会用1752 替换所有的奇数。

---- 在数据库控件中,漏斗和过滤(Filter)函数将 ''00-1-1'' 转换到 ’1900-1-1'', 在用 Locate 指令时,''00-1-1'' 到 ''99-1-1''期间将被转换成 ''20XX-1-11'',''30-1-1'' 到 ''99-1-1'' 期间将被转换到 ''19XX-1-1''.原因是 Locate 使用变数(variants)进行定位,日期定位并被没有通过 Delphi 的运行时库进行,而是调用了 WIN32 API 函数转换到日期类型。这是由于 OLE 自动服务器对象的 OLE 字串转换到日期类型的规则造成的。尤其是当你调VarToDateTime 函数去试图从一包含日期的字串分离出 TDateTime 类型时。一些数据库操作在内部使用变体来提取实际数据,TDataset.Locate 和 Tparams 类将依照 OLE 变体转换规则来实施具体操作,而非通过Delphi的"字串-日期"转换过程。

---- 因此,Delphi IDE 环境和 DBExplorer 都在安装时设定了50 年的世纪窗口,其设定对独立运行的 SQL Explorer.exe 也有效,在数据浏览时的"2-4"年份转换都是这样设定. 不过,这些值是可以修改的。IDE 的注册表项为

"HKEY_CURRENTUSER\Software\Borland\Delphi\4.x\
Globals\TwoDigitYearCenturyWindow".
DBExplorer.EXE 的注册表项为
"HKEY_CURRENTUSER\Software\Borland\Database Ex
  • 上一篇资讯: 改变文件的属性
  • 下一篇资讯: 自制THyperLink组件
  • 网学推荐

    免费论文

    原创论文

    浏览:
    设为首页 | 加入收藏 | 论文首页 | 论文专题 | 设计下载 | 网学软件 | 论文模板 | 论文资源 | 程序设计 | 关于网学 | 站内搜索 | 网学留言 | 友情链接 | 资料中心
    版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
    Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved
    湘ICP备09003080号