| 
 ▼ Mr.XRAYさん 
> ▼ takaさんどうもです. 
>  
> > ほかの暦ソースから自動抽出して検証してみたのですが、間違いがありました。 
>  
> あららっ.お手数おかけしました. 
> さて...っと... 
 
未検証部分の大部分が比較用にもってきたデータの間違いでした。 
 
問題の部分だけ抜粋しました 
 
1966/2/11 期待値[False] 実際の値[True] 
1979/9/23 期待値[False] 実際の値[True] 
1995/7/20 期待値[False] 実際の値[True] 
2017/12/23 期待値[True] 実際の値[False] 
 
procedure TForm1.Button2Click(Sender: TObject); 
  const bstr : array[Boolean] of string = ('False', 'True'); 
  procedure check(ADate : TDateTime; ExpectedRes : boolean); 
    var b: boolean; 
        name : string; 
  begin 
    b := IsSpecialHoliday(ADate, name); 
    if (b <> ExpectedRes) then 
       Memo1.Lines.Add(FormatDateTime('yyyy/m/d', ADate) 
                     + Format(' 期待値[%s] 実際の値[%s]', 
                      [ bstr[ExpectedRes], bstr[b] ])); 
  end; 
begin 
  // 間違い検証用 
  check(EncodeDate(1966,2,11), False); // 建国記念の日 1967- 
  check(EncodeDate(1979,9,23), False); 
  check(EncodeDate(1979,9,24), True);  // 秋分の日 1979/9/24 
  check(EncodeDate(1995,7,20), False); // 海の日 1996- 
  check(EncodeDate(2017,12,23), True); // 天皇誕生日 
end; 
   |