var
  daynumber:integer;
  Year, Month;
begin
  daynumber :=MonthDays(Year,Month);
end;
[Pascal Error] uSearchfrm.pas(257): E2066 Missing operator or semicolon
[Pascal Error] uSearchfrm.pas(257): E2010 Incompatible types: 'Integer' and 'Array'

解决方案 »

  1.   

    var
      daynumber:integer;
    begin
      daynumber :=MonthDays(YearOf(Date),MonthOf(Date));
    end;
      

  2.   

    应该是
    function DaysInAMonth(const AYear, AMonth: Word): Word;
      

  3.   

    MonthDays是一个多维数组,你需要这样访问:
    MonthDays[False][Month]
    其中第一个下标取是否为闰年,第二个下标是第几个月
      

  4.   

    楼主要干吗?如果没错的话 ,你应该使用MonthDays并不是一个函数,而是SysUtils当中的一个const定义
    const
      MonthDays: array [Boolean] of TDayTable =
        ((31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31),
         (31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31));不知道楼主真正需要的是不是DateUtils单元当中定义的DaysInAMonth?
    function DaysInMonth(const AValue: TDateTime): Word;
    var
      LYear, LMonth, LDay: Word;
    begin
      DecodeDate(AValue, LYear, LMonth, LDay);
      Result := DaysInAMonth(LYear, LMonth);
    end;function DaysInAMonth(const AYear, AMonth: Word): Word;
    begin
      Result := MonthDays[(AMonth = 2) and IsLeapYear(AYear), AMonth];
    end;
      

  5.   


    uses DateUtils;procedure TForm1.Button1Click(Sender: TObject);
    var
      daynumber:integer;
      Year, Month: word; // Year, Month 变量要指定类型
    begin
      // MonthDays 是二维数组,可以这样使用
      daynumber :=MonthDays[false,2]; //2月份有28天
      // 或 :
      daynumber :=MonthDays[true,2]; //2月份有29天
      //你可能要的是:
      Year:=2009;
      Month:=12;
      daynumber := DaysInAMonth(year, month);
      showmessage('2009年12月有'+inttostr(daynumber)+'天');
    end;