回 帖 发 新 帖 刷新版面

主题:一个万年历的QB库(请下载试用,有问题请回应)

用了好多时间,VGA和XMS未成功,有点心烦,也有点失望
在网上狂搜,就是没有QB和其他语言接口的例子,去C/C++区
也不见高手回答,哎...........

下面是一个万年历的QB库,1920-2049年,未经严格测试

下载地址:
http://upload.programfan.com/upfile/200510242355177.rar

请用 qbx/l wnl.qlb 形式装入库文件(适用于4.5和7.1版本)
里面有三个函数:

function IsLeapYear%(y%)
参数:y% 年份(国历)
返回: -1 闰年  0 不是闰年

function Week$(y%,m%,d%)
参数:y%/m%/d% 年/月/日(国历)
返回:星期几(汉字)

function Wnl$(y%,m%,d%)
参数:y%/m%/d% 年/月/日(国历)
返回:24字节字符串:
1~8  字节    农历年       如:二零零五
9~12 字节    农历月       如:闰五
13~16字节    农历日       如:初二
17~20字节    年天干/地支  如:甲子
21~24字节    日天干/地支  如:乙丑

例: a$=Wnl(2005,10,25)
a$将是:二零零五  九廿三乙酉壬午

因为这个函数要用了很多数据,源代码移植比较麻烦,所以
做成QLB库.
空闲时我将整理成为一个单一函数,并把数据放到函数里面,
以源代码形式贴出来
如果应用中有发现问题,请在这里回应!!!!!谢谢!!!!!

回复列表 (共7个回复)

沙发

我也曾找过一些农历(阴历)的计算方法,
可是要牵涉到天文计算,(要计算到太阳和月亮还有地球什么时候连一线的问题)
而且听说百年后的历法还没确定,(有两种说法,当然是要不要闰一闰的问题了)
让人摸不着头脑,而且我又看了下VB的源代码,
也有一部份人做的QB的源代码,
遗憾的是,竟然是把那些日历的计算做成DATA常数库以供调用读取的。
这样的程序实在是有点那个了......

板凳

楼主我下载了!我不太懂运行!你能说明点吗?  

             呵呵...我刚学QB的.

3 楼

To:ttosoft

把wnl.rar解压放到一个目录:X:\wnl.qlb(X为路径)

启动QB时加上 /l 参数,如果QB7.1:

qbx/l X:\wnl.qlb
在程序开头写上函数声明:
DECLARE function IsLeapYear%(y%)
DECLARE function Week$(y%,m%,d%)
DECLARE function wnl$(y%,m%,d%)
这样任何时候都可以调用这三个函数了

如:a$=week$(2005,10,22)
a$将="四"
其他的也一样

To:Moz
据我所知,农历是没有公式的,他需要查历法才能知道的
算命的是用强记法,即记住每年的初一的数据和月的大小,
但里面是有一定技巧的,其实也是不难记的,这个万年历也是
使用这种方法,其实数据也不多,一年占用16个字节(可以再压缩一半字节)

4 楼

[em1]楼主多谢你的指引!我用的是QB7.1。按楼主的指示我试了当输入BQX/L X:\WNL.PLB后显示"INPUT PATH:"????[em10][em18]我要??请点明!谢谢...

5 楼

把wnl.qlb文件放到你的QB7.1目录下的子目录lib中
假设你的QB7.1目录是d:\bc7

那么用如下方法装入:
qbx/l d:\bc7\lib\wnl.qlb

6 楼

没错呀!!我就是按你写的操作来做的.[em10]

7 楼

有没有在你的程序开头写上函数的声明?如下:
DECLARE function IsLeapYear%(y%)
DECLARE function Week$(y%,m%,d%)
DECLARE function wnl$(y%,m%,d%)
要不去贴子 时钟(万年历的应用)源代码
复制源代码用

我来回复

您尚未登录,请登录后再回复。点此登录或注册