Code:OdejmijLMD: Różnice pomiędzy wersjami

Z Motława
(techniczne)
Linia 7: Linia 7:
  
 
== techniczne ==
 
== techniczne ==
<code>
+
<pre>
function OdejmijLMD(OdRok, OdMc, OdDzien, DoRok, DoMc, DoDzien : Word; aCzyDaty: Boolean = True) : TLMD;
+
function OdejmijLMD(OdRok, OdMc, OdDzien, DoRok, DoMc, DoDzien : Word; aCzyDaty: Boolean = True) : TLMD;
begin
+
begin
 
   // dni
 
   // dni
 
   if DoDzien + 1 < OdDzien then
 
   if DoDzien + 1 < OdDzien then
Linia 50: Linia 50:
 
   end;
 
   end;
 
end;
 
end;
</code>
+
</pre>

Wersja z 10:02, 17 gru 2009

Function-icon.jpg Funkcja:
OdejmijLMD
opis skrócony:
parametry wejściowe: OdRoku, OdMiesiaca, OdDnia, DoRoku, DoMiesiaca, DoDnia - liczby, aCzyDaty - Boolean
parametry wyjściowe: rekord typu TLMD

techniczne

 function OdejmijLMD(OdRok, OdMc, OdDzien, DoRok, DoMc, DoDzien : Word; aCzyDaty: Boolean = True) : TLMD;
 begin
  // dni
  if DoDzien + 1 < OdDzien then
  begin
    if DoMc = 1 then
    begin
      Inc(DoMc, 12);
      Dec(DoRok);
    end;
    Inc(DoDzien, DaysInAMonth(DoRok, DoMc-1));
    Dec(DoMc);
  end;
  Result.Dni := DoDzien - OdDzien;// + 1;
  if aCzyDaty then
    Inc(Result.Dni, 1);

  { obsluga sytuacji gdy otrzymalismy tyle dni ile ma miesiac - ma to miejsce
    gdy wprowadzimy okres od 1go do ost. dnia miesiaca}
  if ((DoMc = OdMc) OR (OdDzien = 1)) AND (Result.Dni = DaysInAMonth(DoRok, DoMc)) then
  begin
    Result.Dni := 0;
    Inc(DoMc);
  end;

  // miesiace
  if DoMc < OdMc then
  begin
    Inc(DoMc,12);
    Dec(DoRok);
  end;
  Result.Mies := DoMc - OdMc;

  // lata
  Result.Lata := DoRok - OdRok;
  if Result.Lata < 0 then
  begin
    Result.Dni := 0;
    Result.Mies := 0;
    Result.Lata := 0;
  end;
end;