我想在MEMO1中列举出DateTimePicker1.DateTime到DateTimePicker2.DateTime之间的所有指定格式的时间(前者小于后者),写了以下程序:
var
TempDateTime:TDateTime; //保存中间时间
i:integer;//循环变量
begin
For i:=0 To MonthsBetween(DateTimePicker1.DateTime,DateTimePicker2.DateTime) Do——①
begin
TempDateTime:=IncMonth(DateTimePicker1.DateTime,1); ———————————————②
//将开始时间按月份每次增加1月。IncMonth是我自定义的函数,没问题。
memo1.Lines.Add(DateTimeToStr(TempDateTime)) ; ————————————————③
end;
end;执行后,为什么在Memo1中只显示DateTimePicker1.DateTime下一个月的时间?如果DateTimePicker1.DateTime到DateTimePicker2.DateTime之间有10个月,也是只显示DateTimePicker1.DateTime下一个月的时间。我看程序没错呀。①句设置循环条件,从0到两个时间之间的所有月数;②句每次累加,这样TempDateTime中就保存了所有符合条件的时间,直到循环条件不成立;③句每累加一次就朝Memo中加一次时间,这样就把所有时间加到Memo1里了,直到条件不成立。不是吗?
var
TempDateTime:TDateTime; //保存中间时间
i:integer;//循环变量
begin
For i:=0 To MonthsBetween(DateTimePicker1.DateTime,DateTimePicker2.DateTime) Do——①
begin
TempDateTime:=IncMonth(DateTimePicker1.DateTime,1); ———————————————②
//将开始时间按月份每次增加1月。IncMonth是我自定义的函数,没问题。
memo1.Lines.Add(DateTimeToStr(TempDateTime)) ; ————————————————③
end;
end;执行后,为什么在Memo1中只显示DateTimePicker1.DateTime下一个月的时间?如果DateTimePicker1.DateTime到DateTimePicker2.DateTime之间有10个月,也是只显示DateTimePicker1.DateTime下一个月的时间。我看程序没错呀。①句设置循环条件,从0到两个时间之间的所有月数;②句每次累加,这样TempDateTime中就保存了所有符合条件的时间,直到循环条件不成立;③句每累加一次就朝Memo中加一次时间,这样就把所有时间加到Memo1里了,直到条件不成立。不是吗?
------------
procedure TForm1.Button1Click(Sender: TObject);
var i: Integer;
begin
for i := 1 to 12 do
Memo1.Lines.Add(DateToStr(IncMonth(Now,i)));
end;
TempDateTime : TDateTime;
i : integer;
begin
TempDateTime := DateTimePicker1.DateTime;
for i:= 0 To MonthsBetween(DateTimePicker1.DateTime,DateTimePicker2.DateTime) do
begin
memo1.Lines.Add(DateTimeToStr(TempDateTime));
TempDateTime := IncMonth(TempDateTime, 1);
end;
end;
其实IncAMonth()才是Delphi的函数,而IncMonth()不是,两者就相差一个字母A。
等我上机试一下您的程序,再……