Code:OdejmijLMD: Różnice pomiędzy wersjami
Z Motława
(Nie pokazano 5 pośrednich wersji utworzonych przez tego samego użytkownika) | |||
Linia 1: | Linia 1: | ||
{{FunkcjaDesc | {{FunkcjaDesc | ||
|nazwa=OdejmijLMD | |nazwa=OdejmijLMD | ||
− | |opis= | + | |opis= Funkcja obliczająca rożnicę pomiędzy dwiema datami / wymiarami czasu |
|wejscie=OdRoku, OdMiesiaca, OdDnia, DoRoku, DoMiesiaca, DoDnia - liczby, aCzyDaty - Boolean | |wejscie=OdRoku, OdMiesiaca, OdDnia, DoRoku, DoMiesiaca, DoDnia - liczby, aCzyDaty - Boolean | ||
|wyjscie= [[rekord]] typu [[Code:TLMD|TLMD]] | |wyjscie= [[rekord]] typu [[Code:TLMD|TLMD]] | ||
Linia 8: | Linia 8: | ||
− | + | Parametry wejściowe: | |
aCzyDaty - determinuje interpretację pozostałych argumentów, dla których funkcja ma wyliczyć różnicę między nimi: | aCzyDaty - determinuje interpretację pozostałych argumentów, dla których funkcja ma wyliczyć różnicę między nimi: | ||
True - argumenty są dwiema datami | True - argumenty są dwiema datami | ||
False - argumenty są dwiema sumami lat, miesięcy, dni | False - argumenty są dwiema sumami lat, miesięcy, dni | ||
− | OdRoku, OdMiesiaca, OdDnia - data początkowa | + | OdRoku, OdMiesiaca, OdDnia - data początkowa / wymiar czasu, która będzie odejmowany |
− | DoRoku, DoMiesiaca, DoDnia - data końcowa | + | DoRoku, DoMiesiaca, DoDnia - data końcowa / wymiar czasu, który będzie zmniejszany |
+ | |||
+ | Parametry wyjściowe: | ||
+ | ilość lat, miesięcy, dni będąca różnicą pomiędzy argumentami wejściowymi | ||
== techniczne == | == techniczne == |
Aktualna wersja na dzień 08:36, 18 gru 2009
![]() |
Funkcja: | ||
---|---|---|---|
OdejmijLMD | |||
opis skrócony: | Funkcja obliczająca rożnicę pomiędzy dwiema datami / wymiarami czasu | ||
parametry wejściowe: | OdRoku, OdMiesiaca, OdDnia, DoRoku, DoMiesiaca, DoDnia - liczby, aCzyDaty - Boolean | ||
parametry wyjściowe: | rekord typu TLMD |
Ten artykuł jest w trakcie tworzenia, nie wszystkie odnośniki mogą działać poprawnie lub być rozwinięte Możesz nam pomóc przy rozbudowie dokumentacji systemu - zobacz jak możesz tego dokonać |
Parametry wejściowe:
aCzyDaty - determinuje interpretację pozostałych argumentów, dla których funkcja ma wyliczyć różnicę między nimi:
True - argumenty są dwiema datami False - argumenty są dwiema sumami lat, miesięcy, dni
OdRoku, OdMiesiaca, OdDnia - data początkowa / wymiar czasu, która będzie odejmowany
DoRoku, DoMiesiaca, DoDnia - data końcowa / wymiar czasu, który będzie zmniejszany
Parametry wyjściowe:
ilość lat, miesięcy, dni będąca różnicą pomiędzy argumentami wejściowymi
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; // to powinno być chyba tylko gdy aCzyDaty = True Inc(DoDzien, DaysInAMonth(DoRok, DoMc-1)); // j.w. gdy aCzyDaty = False // Inc(DoDzien, 30); 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} // to powinno być chyba tylko gdy aCzyDaty = True 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;