Unit2 unit Dates;
interfacetype
TDate = class
private
fDate: TDateTime;
procedure SetDay(const Value: Integer);
procedure SetMonth(const Value: Integer);
procedure SetYear(const Value: Integer);
function GetDay: Integer;
function GetMonth: Integer;
function GetYear: Integer;
public
constructor Create; overload; <---这段有被引用吗??
constructor Create (y, m, d: Integer); overload;
procedure SetValue (y, m, d: Integer); overload; <---这段有被引用吗??
procedure SetValue (NewDate: TDateTime); overload;
function LeapYear: Boolean;
procedure Increase (NumberOfDays: Integer = 1);
procedure Decrease (NumberOfDays: Integer = 1);
function GetText: string;
property Year: Integer read GetYear write SetYear; <---这段有被引用吗??
property Month: Integer read GetMonth write SetMonth; <---这段有被引用吗??
property Day: Integer read GetDay write SetDay; <---这段有被引用吗??
end;implementation
uses
SysUtils, DateUtils;procedure TDate.SetValue (y, m, d: Integer);
begin
fDate := EncodeDate (y, m, d);
end;function TDate.LeapYear: Boolean;
begin
Result := IsInLeapYear(fDate);
end;procedure TDate.Increase (NumberOfDays: Integer = 1);
begin
fDate := fDate + NumberOfDays;
end;function TDate.GetText: string;
begin
GetText := DateToStr (fDate);
end;procedure TDate.Decrease (NumberOfDays: Integer = 1);
begin
fDate := fDate - NumberOfDays;
end;constructor TDate.Create (y, m, d: Integer);
begin
fDate := EncodeDate (y, m, d);
end;constructor TDate.Create;
begin
fDate := Date;
end;procedure TDate.SetValue(NewDate: TDateTime);
begin
fDate := NewDate;
end;procedure TDate.SetDay(const Value: Integer);
begin
fDate := RecodeDay (fDate, Value);
end;procedure TDate.SetMonth(const Value: Integer);
begin
fDate := RecodeMonth (fDate, Value);
end;procedure TDate.SetYear(const Value: Integer);
begin
fDate := RecodeYear (fDate, Value);
end;function TDate.GetDay: Integer;
begin
Result := DayOf (fDate);
end;function TDate.GetMonth: Integer;
begin
Result := MonthOf (fDate);
end;function TDate.GetYear: Integer;
begin
Result := YearOf (fDate);
end;
end.
Unit1unit DateF;
interfaceuses
SysUtils, Windows, Messages, Classes, Graphics, Controls,
Forms, Dialogs, Dates, StdCtrls;type
TDateForm = class(TForm)
LabelDate: TLabel;
BtnIncrease: TButton;
BtnDecrease: TButton;
BtnAdd10: TButton;
BtnSubtract10: TButton;
BtnLeap: TButton;
BtnToday: TButton;
procedure BtnIncreaseClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure BtnDecreaseClick(Sender: TObject);
procedure BtnAdd10Click(Sender: TObject);
procedure BtnSubtract10Click(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure BtnLeapClick(Sender: TObject);
procedure BtnTodayClick(Sender: TObject);
private
TheDay: TDate;
public
{ Public declarations }
end;var
DateForm: TDateForm;implementation{$R *.DFM}procedure TDateForm.FormCreate(Sender: TObject);
begin
TheDay := TDate.Create (2001, 12, 25);
LabelDate.Caption := TheDay.GetText;
end;procedure TDateForm.BtnIncreaseClick(Sender: TObject);
begin
TheDay.Increase;
LabelDate.Caption := TheDay.GetText;
end;procedure TDateForm.BtnDecreaseClick(Sender: TObject);
begin
TheDay.Decrease;
LabelDate.Caption := TheDay.GetText;
end;procedure TDateForm.BtnAdd10Click(Sender: TObject);
begin
TheDay.Increase (10);
LabelDate.Caption := TheDay.GetText;
end;procedure TDateForm.BtnSubtract10Click(Sender: TObject);
begin
TheDay.Decrease (10);
LabelDate.Caption := TheDay.GetText;
end;procedure TDateForm.FormDestroy(Sender: TObject);
begin
TheDay.Free;
end;procedure TDateForm.BtnLeapClick(Sender: TObject);
begin
if TheDay.LeapYear then
ShowMessage ('Leap year')
else
ShowMessage ('NON Leap year');
end;procedure TDateForm.BtnTodayClick(Sender: TObject);
begin
TheDay.SetValue (Date); <--- TheDay.SetValue (Date 和 Now 的功能有什么分别???);
LabelDate.Caption := TheDay.GetText;
end;
end.
interfacetype
TDate = class
private
fDate: TDateTime;
procedure SetDay(const Value: Integer);
procedure SetMonth(const Value: Integer);
procedure SetYear(const Value: Integer);
function GetDay: Integer;
function GetMonth: Integer;
function GetYear: Integer;
public
constructor Create; overload; <---这段有被引用吗??
constructor Create (y, m, d: Integer); overload;
procedure SetValue (y, m, d: Integer); overload; <---这段有被引用吗??
procedure SetValue (NewDate: TDateTime); overload;
function LeapYear: Boolean;
procedure Increase (NumberOfDays: Integer = 1);
procedure Decrease (NumberOfDays: Integer = 1);
function GetText: string;
property Year: Integer read GetYear write SetYear; <---这段有被引用吗??
property Month: Integer read GetMonth write SetMonth; <---这段有被引用吗??
property Day: Integer read GetDay write SetDay; <---这段有被引用吗??
end;implementation
uses
SysUtils, DateUtils;procedure TDate.SetValue (y, m, d: Integer);
begin
fDate := EncodeDate (y, m, d);
end;function TDate.LeapYear: Boolean;
begin
Result := IsInLeapYear(fDate);
end;procedure TDate.Increase (NumberOfDays: Integer = 1);
begin
fDate := fDate + NumberOfDays;
end;function TDate.GetText: string;
begin
GetText := DateToStr (fDate);
end;procedure TDate.Decrease (NumberOfDays: Integer = 1);
begin
fDate := fDate - NumberOfDays;
end;constructor TDate.Create (y, m, d: Integer);
begin
fDate := EncodeDate (y, m, d);
end;constructor TDate.Create;
begin
fDate := Date;
end;procedure TDate.SetValue(NewDate: TDateTime);
begin
fDate := NewDate;
end;procedure TDate.SetDay(const Value: Integer);
begin
fDate := RecodeDay (fDate, Value);
end;procedure TDate.SetMonth(const Value: Integer);
begin
fDate := RecodeMonth (fDate, Value);
end;procedure TDate.SetYear(const Value: Integer);
begin
fDate := RecodeYear (fDate, Value);
end;function TDate.GetDay: Integer;
begin
Result := DayOf (fDate);
end;function TDate.GetMonth: Integer;
begin
Result := MonthOf (fDate);
end;function TDate.GetYear: Integer;
begin
Result := YearOf (fDate);
end;
end.
Unit1unit DateF;
interfaceuses
SysUtils, Windows, Messages, Classes, Graphics, Controls,
Forms, Dialogs, Dates, StdCtrls;type
TDateForm = class(TForm)
LabelDate: TLabel;
BtnIncrease: TButton;
BtnDecrease: TButton;
BtnAdd10: TButton;
BtnSubtract10: TButton;
BtnLeap: TButton;
BtnToday: TButton;
procedure BtnIncreaseClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure BtnDecreaseClick(Sender: TObject);
procedure BtnAdd10Click(Sender: TObject);
procedure BtnSubtract10Click(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure BtnLeapClick(Sender: TObject);
procedure BtnTodayClick(Sender: TObject);
private
TheDay: TDate;
public
{ Public declarations }
end;var
DateForm: TDateForm;implementation{$R *.DFM}procedure TDateForm.FormCreate(Sender: TObject);
begin
TheDay := TDate.Create (2001, 12, 25);
LabelDate.Caption := TheDay.GetText;
end;procedure TDateForm.BtnIncreaseClick(Sender: TObject);
begin
TheDay.Increase;
LabelDate.Caption := TheDay.GetText;
end;procedure TDateForm.BtnDecreaseClick(Sender: TObject);
begin
TheDay.Decrease;
LabelDate.Caption := TheDay.GetText;
end;procedure TDateForm.BtnAdd10Click(Sender: TObject);
begin
TheDay.Increase (10);
LabelDate.Caption := TheDay.GetText;
end;procedure TDateForm.BtnSubtract10Click(Sender: TObject);
begin
TheDay.Decrease (10);
LabelDate.Caption := TheDay.GetText;
end;procedure TDateForm.FormDestroy(Sender: TObject);
begin
TheDay.Free;
end;procedure TDateForm.BtnLeapClick(Sender: TObject);
begin
if TheDay.LeapYear then
ShowMessage ('Leap year')
else
ShowMessage ('NON Leap year');
end;procedure TDateForm.BtnTodayClick(Sender: TObject);
begin
TheDay.SetValue (Date); <--- TheDay.SetValue (Date 和 Now 的功能有什么分别???);
LabelDate.Caption := TheDay.GetText;
end;
end.
now是取得当前时间,包括日期和时分秒毫秒
1.當你知道那段代碼有沒有被引用或調用過,你可以設置斷點和註釋、showmessage等方法去確認;
2.SetValue有被引用,這裡的SetValue(date或now,date只取日期部分,而now精確到年月日時分秒)。
但是constructor Create (y, m, d: Integer); overload;
在TheDay := TDate.Create (2001, 12, 25);时用到
当你创建这个类时被用到
procedure SetValue (y, m, d: Integer); overload 没用到
但是procedure SetValue (NewDate: TDateTime); overload;
在TheDay.SetValue 时用到
调用就有用到,否则没有。
已学了 9个月..
showmessage 该放在哪里??