看这个函数var
  WeekCount, year, month, day: word;
begin
  if DayOfWeek(date) = 6 then
  begin
    showmessage('今天是星期5!');
    DecodeDate(Date, year, month, day);
    WeekCount := trunc(Now-EncodeDate(Year,1,1))div 7;
    inc(WeekCount);
    showmessage('而且今天是今年第[ '+ InttoStr(weekCount) + ' ]个星期五');
  end;
end;

解决方案 »

  1.   

    函数:
    procedure judgeFriday(var IsBool: Boolean; var qWeekCount: Integer; qDate: TDate);
    var
      year, month, day: word;
    begin
      IsBool := False;
      DecodeDate(Date, year, month, day);
      qWeekCount := trunc(Now-EncodeDate(Year,1,1))div 7;
      inc(qWeekCount);
      Day := DayOfWeek(qdate);
      if Day = 6 then
      begin
        showmessage('星期5!');
        IsBool := True;
        showmessage('而且今天是今年第[ '+ InttoStr(qweekCount) + ' ]个星期五');
      end
      else showmessage('今天是今年第[ '+ InttoStr(qweekCount) + ' ]个星期 '+ IntTostr(day));
    end;
    调用例子:
    var
      Bool: Boolean;
      iCnter: Integer;
    begin
      judgeFriday(Bool, iCnter, date );
    end;
      

  2.   

    TO laza(麻风瘦)
    恕我愚昧,IsBool有用吗?我看不出来,用我学的看它是个标号,可程序需要标号吗?
    还有就是TRUNC这个函数好像它的值不太精确呀!上回《程序员》的《巧算星期几》我就用的它可结果不是太满意!有时会出现误差了!
    我很菜呀是吧:)
      

  3.   

    isBool我做的传址变量,也许调用的用户需要这个参数,showmessage测试使用的。
    你有精确的吗?赐教!    怎么标号?不太明白。我的程序里没有标号。
      

  4.   

    to laza(麻风瘦) 
    真的有吗?不知道呀!我只是讨论讨论!和你讨论一下嘛,何必当真呢!真的有吗???
    还是不明白呀,IsBool不用还不是可以吗!
    我太菜了呀!请赐教呀!
    我的QQ:2223934
      

  5.   

    当真,当然要当真的。 呵呵。解决问题不认真可不行。
    isbool,isbool 你看的不顺眼自己改改嘛。我给需要的用户的。讨论这个很无聊。qq是什么?OICQ?
      

  6.   

    我整理了一下过程,看这个吧。如果有好的方法请通知我。为了测试我定义了静态书组,要放到全局变量的声明处声明;
    ...
    var
      Form1: TForm1;
      TDayDay :Array[0..6] of string = ('星期天', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六');
    implementation
    ...过程procedure judgeFriday(var IsBool: Boolean; var qWeekCount: Integer; qDate: TDate);
    var
      year, month, day: word;begin
      IsBool := False;
      DecodeDate(qDate, year, month, day);
      qWeekCount := trunc(qDate - EncodeDate(Year,1,1))div 7;
      inc(qWeekCount);
      Day := DayOfWeek(qdate);
      if Day = 6 then
      begin
        showmessage('星期5!');
        IsBool := True;
        showmessage('而且这天是这年第[ '+ InttoStr(qweekCount) + ' ]个星期五');
      end
      else begin
        dec(day);
        showmessage('这天是这年第[ '+ InttoStr(qweekCount) + ' ]个 '+ TDayDay[day]);
      end;
    end;
    调用:
    var
      Bool: Boolean;
      iCnter: Integer;begin
      judgeFriday(Bool, iCnter, strTodate(SMCalendarEdit1.Text));
    end;OK.