-
а как бы закодить такую штуку) скажем имеется у меня 6 это номер месяца, тоесть июнь, я прибавляю 8 это 14, это буит февраль, на выходе месяцы с июня по февраль
-
на выходе откуда?
-
6+8=14 ??? Это с каких это пор? 6+8=Е
-
> а как бы закодить такую штуку
MOD 12
-
> я прибавляю 8
9 надо прибавлять
-
> [0] kazar (27.06.08 14:30)
Только с июня текущего года по февраль следующего? > [3] Игорь Шевченко © (27.06.08 14:46) > MOD 12
Не покатит - месяца 0 не существует.
-
> Не покатит - месяца 0 не существует.
а если хоть капельку подумать?
информация для капельки: mod 12 вернет значения от 0 до 11. (всего 12 возможных значений)
-
> [6] McSimm © (27.06.08 15:16) > а если хоть капельку подумать? > > информация для капельки: > mod 12 вернет значения от 0 до 11. (всего 12 возможных значений)
Да я не о том. Вопрос не понятен. Что за: "на выходе месяцы"?
-
27.06.2008 - 27.14.2008
-
> Не покатит - месяца 0 не существует.
Ну а с единицы только на Бейсике индексируют ;)
-
Реализация for m := 6 to 14 do x := '27.' + FormatFloat('00', m) + '.2008';
-
это не месяц. месяц круглый и желтый.
-
> Поросенок Винни-Пух © (27.06.08 15:50) [11] > это не месяц. месяц круглый и желтый.
Гы... Он не круглый, круглая Луна. И то, не всегда. Месяц, он серповидный... :))
-
Насчёт выхода, скажем пусть пишет в массив. Я получил 14 месяцев, например: июнь 2008 г, июль 2008 г, август 2008 г, ........июнь 2009 г. Тоесть в массиве будут чисто названия этих месяцев.
-
это оптический обман. еще галилей знал, что месяц круглый
-
Const
Months:Array [0..11] of String=(
'Январь',
'Февраль',
'Март',
'Апрель',
'Май',
'Июнь',
'Июль',
'Август',
'Сентябрь',
'Ноябрь',
'Декабрь')
Var
a:Array [0..6] of String;
y,i:Integer;
y:=2008;
For i:=8 to 14 Do a[i-8]:=Months[i mod 12]+' '+IntToStr(y+(i div 12));
-
> Anatoly Podgoretsky © (27.06.08 15:49) [10]
Не сработает :) А без цикла не обойтись. Если: "на выходе месяцы с июня по февраль " Далее IncMonth() в руки, ну и, как водится - F1
-
> Поросенок Винни-Пух (27.06.2008 16:08:14) [14]
Месяц не круглый, в нем от 28 до 31 дня.
-
Const Months:Array [0..11] of String=( 'Январь', 'Февраль', 'Март', 'Апрель', 'Май', 'Июнь', 'Июль', 'Август', 'Сентябрь', 'Ноябрь', 'Декабрь')
Ай-ай! Как не стыдно! Sysutils.LongMonthNames
-
а они с 1 начинаются, а нафига лишний инкремент, очень сильно влияет на производительность
-
> korneley (27.06.2008 16:15:16) [16]
Как это не сработает, я же проверял, у меня получилось 27.14.2008
-
> Palladin © (27.06.08 16:13) [15]
О, блин! Только понял: "Так автору нужны только месяцы!". Поэтому +IntToStr(y+(i div 12)); можно исключить. :)
-
Anatoly Podgoretsky © (27.06.08 16:26) [20]
До сих пор в 14-ом месяце было 25 дней
-
> Anatoly Podgoretsky © (27.06.08 16:26) [20]
:)) Боюсь, читатели даты будут немного дезориентированы :))
-
> korneley © (27.06.08 16:27) [21]
да не... в [13] аффтар примеры привел... но мой код все равно на смарку... я букву гэ не добавил...
-
> korneley (27.06.2008 16:30:23) [23]
Сменить читателей.
-
> я букву гэ не добавил...
Без буквы Гэ это не код, а без буквы Гэ
-
И все таки, ёще раз, начальная дата 29.06.2008, конечная дата 29.02.2009. Резульата Июнь2008, Июль2008, Август2008 …… Январь2009, Февраль2009. Но начальная и конечная дата могут меняться.
-
IncMonth() в цикле по числу "прибавляемых" месяцев, в каждой итерации - сравнение полученного в рез-те инкремента значения даты с указанной границей диапазона дат.
-
сори, пример можно?
-
> kazar (29.06.08 23:54) [29] > сори, пример можно
вар МайДатеТайм, типа, TДатеТайм;
...
МайДатеТайм присвоить Нау;
фор и присвоить ноль до КоличествоМесяцев минус один бегин
...
МайДатеТайм присвоить IncMonth(МайДатеТайм);
...
end;
-
> [29] kazar (29.06.08 23:54)
А чем тебе [15] - не пример? Вот примерно тоже самое, т.е. подправлено: procedure EnumMes(FromYear, FromMes, CountMes: Integer; Lst: TStrings);
var i: Integer;
begin
for i:=FromMes-1 to FromMes+CountMes-2 do
Lst.Add(Format('%s %d г.', [LongMonthNames[i mod 12+1], FromYear+(i div 12)]));
end;
Например:
EnumMes(2008, 6, 8, ListBox.Items);
|