CnPack Forum


 
Subject: CnCalendar.pas和CnCalClass.pas的问题
gdlpc
新警察
Rank: 1



UID 5741
Digest Posts 0
Credits 11
Posts 9
点点分 11
Reading Access 10
Registered 2007-2-14
Status Offline
Post at 2007-2-14 02:46  Profile | Blog | P.M. 
CnCalendar.pas和CnCalClass.pas的问题

十分感谢你们提供了历法控件,但在使用中发现一个问题:
  四柱中年不能跟二十四节气转变,例如2007年1月1日至2007年2月4日(立春)应该还是属于“丙戌”年,但你们的控件已显示是“丁亥”年。
  请开发组修正这问题,多谢!
Top
Passion (LiuXiao)
管理员
Rank: 9Rank: 9Rank: 9


UID 359
Digest Posts 19
Credits 6762
Posts 3557
点点分 6762
Reading Access 102
Registered 2004-3-28
Status Offline
Post at 2007-2-14 10:10  Profile | Blog | P.M. 
您可能使用的是旧版本的CnCalendar.pas,旧版本的CnCalendar中是有这个问题,而我们最新的CVS上的代码已经修正了这个问题。
如果您想获得最新的CVS代码,请参考网站上的CVS使用说明。
Top
Passion (LiuXiao)
管理员
Rank: 9Rank: 9Rank: 9


UID 359
Digest Posts 19
Credits 6762
Posts 3557
点点分 6762
Reading Access 102
Registered 2004-3-28
Status Offline
Post at 2007-2-14 10:12  Profile | Blog | P.M. 
目前CnCalendar的行为是这样的:2007年1月1日至2007年2月3日(立春前一天)我们显示为“丙戌”年,2007年2月4日(立春)及以后显示为“丁亥”年,请问是否符合您的要求?
Top
gdlpc
新警察
Rank: 1



UID 5741
Digest Posts 0
Credits 11
Posts 9
点点分 11
Reading Access 10
Registered 2007-2-14
Status Offline
Post at 2007-2-14 11:38  Profile | Blog | P.M. 
多谢版主!
  你说的符合要求。
  但我用的是cnpack_20061001版,是有上述的问题。
Top
Passion (LiuXiao)
管理员
Rank: 9Rank: 9Rank: 9


UID 359
Digest Posts 19
Credits 6762
Posts 3557
点点分 6762
Reading Access 102
Registered 2004-3-28
Status Offline
Post at 2007-2-14 14:13  Profile | Blog | P.M. 
网站上的打包下载的源文件是有这个问题。请上CVS获得最新的代码。
如果您不能上CVS,可以留个联系法子,我想法把这部分代码给你。
Top
gdlpc
新警察
Rank: 1



UID 5741
Digest Posts 0
Credits 11
Posts 9
点点分 11
Reading Access 10
Registered 2007-2-14
Status Offline
Post at 2007-2-14 15:05  Profile | Blog | P.M. 
真是万分感谢版主!
  如方便,麻烦您发邮件到:nflpc88@21cn.com
Top
Passion (LiuXiao)
管理员
Rank: 9Rank: 9Rank: 9


UID 359
Digest Posts 19
Credits 6762
Posts 3557
点点分 6762
Reading Access 102
Registered 2004-3-28
Status Offline
Post at 2007-2-14 17:32  Profile | Blog | P.M. 
好的。晚上发。
Top
Passion (LiuXiao)
管理员
Rank: 9Rank: 9Rank: 9


UID 359
Digest Posts 19
Credits 6762
Posts 3557
点点分 6762
Reading Access 102
Registered 2004-3-28
Status Offline
Post at 2007-2-15 08:55  Profile | Blog | P.M. 
已发,请查收。
Top
gdlpc
新警察
Rank: 1



UID 5741
Digest Posts 0
Credits 11
Posts 9
点点分 11
Reading Access 10
Registered 2007-2-14
Status Offline
Post at 2007-2-15 11:09  Profile | Blog | P.M. 
多谢管理员LiuXiao
  但附件不能解压(它说文件损坏),请问可否重新压缩原件给寄上?
Top
Passion (LiuXiao)
管理员
Rank: 9Rank: 9Rank: 9


UID 359
Digest Posts 19
Credits 6762
Posts 3557
点点分 6762
Reading Access 102
Registered 2004-3-28
Status Offline
Post at 2007-2-15 11:32  Profile | Blog | P.M. 
又发了一回,没压缩的。
Top
jAmEs_
灌水部部长
Rank: 8Rank: 8



Medal No.1  
UID 886
Digest Posts 0
Credits 1134
Posts 600
点点分 1134
Reading Access 10
Registered 2005-6-5
Location 广东
Status Offline
Post at 2007-2-15 11:52  Profile | Blog | P.M. 
天啊。。。
Top
gdlpc
新警察
Rank: 1



UID 5741
Digest Posts 0
Credits 11
Posts 9
点点分 11
Reading Access 10
Registered 2007-2-14
Status Offline
Post at 2007-2-15 12:10  Profile | Blog | P.M. 
多谢管理员LiuXiao
     你们的效率很高,祝你们的开发组万事胜意,新春进步,财源滚滚!
又要麻烦管理员LiuXiao了,我用了您发来的CnCalendar.pas和CnCalClass.pas也不能解决问题,是否我的用法不当或还需要其它设置?
Top
Passion (LiuXiao)
管理员
Rank: 9Rank: 9Rank: 9


UID 359
Digest Posts 19
Credits 6762
Posts 3557
点点分 6762
Reading Access 102
Registered 2004-3-28
Status Offline
Post at 2007-2-15 12:44  Profile | Blog | P.M. 
请贴贴代码?
Top
Passion (LiuXiao)
管理员
Rank: 9Rank: 9Rank: 9


UID 359
Digest Posts 19
Credits 6762
Posts 3557
点点分 6762
Reading Access 102
Registered 2004-3-28
Status Offline
Post at 2007-2-15 13:00  Profile | Blog | P.M. 
抱歉,经过查证,CnCalendar.pas 中的算法虽然没有问题,但如果您是使用CnCalClass中的日的类及其子类,子类在给日期赋值的时候未重新更新计算年干支,这是CnCalClasses中的一个bug。
我已经把修复问题后的此文件发到您的油箱。
Top
gdlpc
新警察
Rank: 1



UID 5741
Digest Posts 0
Credits 11
Posts 9
点点分 11
Reading Access 10
Registered 2007-2-14
Status Offline
Post at 2007-2-15 19:57  Profile | Blog | P.M. 
管理员LiuXiao您好。
  经测试,控件中的“年”是按公历的年定义的,跟“月”(节气)无关?不知我的看法是否正确?或者还要用哪一个函数,我基本不懂(我只会仿你们的代码)。请指教,多谢!

以下是我的测试过程。

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    YearEdit: TEdit;
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation
uses CnCalendar, CnCalClass;
{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
  HourObj: TCnHourObj;
begin
  HourObj:=TCnHourObj.Create;
  HourObj.Year:=StrtoInt(Trim(YearEdit.Text)); //2005;
  Showmessage(GetGanZhiFromNumber(HourObj.YearGanZhi));

end;

end.
Top
Passion (LiuXiao)
管理员
Rank: 9Rank: 9Rank: 9


UID 359
Digest Posts 19
Credits 6762
Posts 3557
点点分 6762
Reading Access 102
Registered 2004-3-28
Status Offline
Post at 2007-2-15 23:52  Profile | Blog | P.M. 
类中的年月日目前都是公历年月日。
类如果直接用年而不用月和日的话,计算出来的年干支默认以立春后的某日为准。
TCnHourObj如果给月和日也赋值了的话,才会根据年月日在立春前面还是后面来区分年干支是前一年的还是后一年的。
Top
gdlpc
新警察
Rank: 1



UID 5741
Digest Posts 0
Credits 11
Posts 9
点点分 11
Reading Access 10
Registered 2007-2-14
Status Offline
Post at 2007-2-16 00:22  Profile | Blog | P.M. 
您现在还在写控件,真是辛苦了!
如是这样,GetGanZhiFromNumbe这个函数如何使用?(有时间再回复吧)
Top
Passion (LiuXiao)
管理员
Rank: 9Rank: 9Rank: 9


UID 359
Digest Posts 19
Credits 6762
Posts 3557
点点分 6762
Reading Access 102
Registered 2004-3-28
Status Offline
Post at 2007-2-16 09:41  Profile | Blog | P.M. 
看看CnCalendar的说明?

function GetGanZhiFromNumber(const AValue: Integer): string;
{* 从数字获得天干地支名, 0-59}

这个函数用来把类中返回的干支数字转换成中文的干支名,干支数字以0到59表示。
只要类返回的干支数值正确,转换的中文名也会正确。

我上面说的问题的关键是类返回年干支数值有点问题,现已修正。
Top
gdlpc
新警察
Rank: 1



UID 5741
Digest Posts 0
Credits 11
Posts 9
点点分 11
Reading Access 10
Registered 2007-2-14
Status Offline
Post at 2007-2-16 20:37  Profile | Blog | P.M. 
多谢你们了。
  用这个函数GetGanZhiFromNumber(GetGanZhiFromYear(AYear, AMonth, ADay))就可以了。
Top
 




All times are GMT++8, the time now is 2024-5-8 04:01

    本论坛支付平台由支付宝提供
携手打造安全诚信的交易社区 Powered by Discuz! 5.0.0  © 2001-2006 Comsenz Inc.
Processed in 0.007739 second(s), 7 queries , Gzip enabled

Clear Cookies - Contact Us - CnPack Website - Archiver - WAP