[分享][翻译]你未必知道的VFP中的秘密:解密类库和表单中的时间戳
<P>标题:Decoding the timestamp in class libararies and forms<BR>作者:Calvin_Hsia <BR>时间:Friday, January 21, 2005 11:55 AM <BR>翻译:<a href="http://trustqf.spaces.live.com" target="_blank" >xinjie<BR></A> <BR> 我曾经被问到这样一个问题: </P><P> 有什么方式可以将类库中的时间戳转换为可阅读的格式? </P>
<P> </P>
<P> Visual Foxpro 在表(表单或类库)中的很多记录中放置了一个时间戳。这个字段本来是用于在不同的平台上进行记录的协调:DOS、Mac、Unix、Windows。 </P>
<P> </P>
<P> VFP 保留了一个变量 “_screen”作为一个表单实例的对象引用,它代表 VFP 的桌面。因为它是一个表单引用,所以你可以使用SaveAsClass 方法将其作为一个类来保存。 这样就会在下面的运行代码中导致产生一个时间戳字段。示例代码延迟3秒,创建一个表单的子类,并增加一个按钮,然后显示出类库中的时间戳字段。 </P>
<P> </P>
<P> 时间戳显示为一个标准格式。 </P>
<P> </P>
<P>ERASE t.vcx </P>
<P>_screen.AddObject("btn","commandbutton") && 在桌面增加一个按钮 </P>
<P>_screen.SaveAsClass("t.vcx","myform") && 创建目标文件 myform 类 </P>
<P>INKEY(3) && 延迟3秒 </P>
<P>MODIFY CLASS xx OF t.vcx as myform FROM t.vcx nowait && 在同一类库中创建 myform 的子类 </P>
<P>ASELOBJ(aArray,1) && 在设计器中得到类的对象引用 </P>
<P>aArray[1].addobject("btn2","commandbutton") && 在类中增加 btn2 </P>
<P>aArray[1].btn2.top=200 && 移动新增 btn2 使之可见 </P>
<P>KEYBOARD "Y" && 在“你想保存更改吗?”中按"y" </P>
<P>RELEASE WINDOWS "Class designer" && 关闭设计器 </P>
<P>USE t.vcx && 打开表 </P>
<P>SCAN FOR timestamp!=0 && 查找时间戳字段 </P>
<P> ?timestamp,DecodeTimeStamp(timestamp),objname+" "+class </P>
<P>ENDSCAN </P>
<P> </P>
<P>PROCEDURE DecodeTimeStamp(nTimestamp as Number) as Datetime && see <a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/sysinfo/base/filetimetodosdatetime.asp" target="_blank" >http://msdn.microsoft.com/library/default.asp?url=/library/en-us/sysinfo/base/filetimetodosdatetime.asp</A> </P>
<P> nDate=BITRSHIFT(nTimestamp,16) </P>
<P> nTime=BITAND(nTimestamp,2^16-1) </P>
<P> </P>
<P> nYear=BITAND(BITRSHIFT(nDate,9),2^8-1)+1980 </P>
<P> nMonth=BITAND(BITRSHIFT(nDate,5),2^4-1) </P>
<P> nDay=BITAND(nDate,2^5-1) </P>
<P> </P>
<P> nHr=BITAND(BITRSHIFT(nTime,11),2^5-1) </P>
<P> nMin=BITAND(BITRSHIFT(nTime,5),2^6-1) </P>
<P> nSec=BITAND(nTime,2^5-1) </P>
<P> </P>
<P> RETURN DATETIME(nYear,nMonth,nDay,nHr,nMin,nSec) </P>
<P>RETURN <BR></P>
谢谢老大
[tk05] 强力支持 向你们学习页:
[1]
