Форум: "Начинающим";
Текущий архив: 2007.09.02;
Скачать: [xml.tar.bz2];
ВнизКак по дате определить знак зодиака? Найти похожие ветки
← →
rolex2002 (2007-08-06 10:54) [0]Например Овен (21.03 - 20.04), в DataTimePicker забивается дата рождения. Как определить?
← →
stanislav © (2007-08-06 11:12) [1]нужна база соответствия.
Делаешь тип Record у которого 3 поле 1 строковое наименование, 2 и 3 дата
2 - "с" 3 - "по".
И потом массив от 1 до 12, наплняешь значениями и сохраняешь в файл, потом из него читаешь.
Можно использовать БД. Короче вариантов много.
← →
rolex2002 (2007-08-06 11:22) [2]Мля... можно примерчик?
← →
rolex2002 (2007-08-06 11:24) [3]Хотя бы как сравнить...
← →
{RASkov} © (2007-08-06 11:35) [4]case Mounth of
1: case Day of
1..20: Result:="Козерог";
21..31: Result:= "Водолей";
2: case day of
1..20: Result:="Водолей";
21..29: Result:="Рыбы";
и т.д....
← →
rolex2002 (2007-08-06 11:44) [5]А как тогда вытащить из формата TDateTime: Month и Day ?
← →
{RASkov} © (2007-08-06 11:45) [6]> [5] rolex2002 (06.08.07 11:44)
DecodeXxx
← →
{RASkov} © (2007-08-06 11:46) [7]Т.е.
procedure DecodeDate(const DateTime: TDateTime; var Year, Month, Day: Word);
← →
stanislav © (2007-08-06 11:48) [8]rolex2002 (06.08.07 11:44) [5]
см. модуль dateutils
← →
rolex2002 (2007-08-06 12:20) [9]всем спасибо всё работает.
Сделал так:function zodiac(const DT: TDateTime): string;
var year,Mounth,day:word;
begin
DecodeDate(DT,year,mounth,day);
case Mounth of
1: case Day of
1..20: Result:="Козерог";
21..31: Result:= "Водолей";
end;
2: case day of
1..19: Result:="Водолей";
20..29: Result:="Рыбы";
end;
3: case day of
1..20: Result:="Рыбы";
21..31: Result:="Овен";
end;
4: case day of
1..20: Result:="Овен";
21..31: Result:="Телец";
end;
5: case day of
1..21: Result:="Телец";
22..31: Result:="Близнецы";
end;
6: case day of
1..21: Result:="Близнецы";
22..31: Result:="Рак";
end;
7: case day of
1..23: Result:="Рак";
24..31: Result:="Лев";
end;
8: case day of
1..23: Result:="Лев";
24..31: Result:="Дева";
end;
9: case day of
1..23: Result:="Дева";
24..31: Result:="Весы";
end;
10: case day of
1..23: Result:="Весы";
24..31: Result:="Скорпион";
end;
11: case day of
1..22: Result:="Скорпион";
23..31: Result:="Стрелец";
end;
12: case day of
1..21: Result:="Стрелец";
22..31: Result:="Козерог";
end;
end;
End;
← →
{RASkov} © (2007-08-06 12:25) [10]> [9] rolex2002 (06.08.07 12:20)
> var year,Mounth,day:word;
Мою ошибку хотя бы исправь :)
← →
rolex2002 (2007-08-06 12:33) [11]Да я заметил. Потом забил :)
Ещё вопрос, как правильно сравнить две даты? Потому что я помню там есть какие-то подводные камни.
Например,var DT:TDateTime;
if FormatDateTime("dd.mm.yyyy",DT)>="10.02.1910" then beep;
← →
{RASkov} © (2007-08-06 12:34) [12]> [11] rolex2002 (06.08.07 12:33)
См [8]
← →
{RASkov} © (2007-08-06 12:36) [13]> [11] rolex2002 (06.08.07 12:33)
> Ещё вопрос, как правильно сравнить две даты?
Дата - это число, а как числа сравнивать знаешь?
← →
{RASkov} © (2007-08-06 12:38) [14]> [11] rolex2002 (06.08.07 12:33)
> if FormatDateTime("dd.mm.yyyy",DT)>="10.02.1910" then beep;
Зачем дату переводить в строку для сравнения??? Лучше наоборот - строку в дату и сравнивать...
← →
rolex2002 (2007-08-06 12:50) [15]
function ID(const DT: TDateTime): string;
begin
if DT>=StrToDate("10.02.1910") then result:="Собака";
if DT>=StrToDate("30.01.1911") then result:="Кабан";
...
end;
Так?
← →
Jeer © (2007-08-06 16:09) [16]function GetSign(dt: TDateTime): string;
const
arSign: array[0..11] of string = ("Kozerog", "Vodoley",..);
var m: integer;
begin
m := MonthOf(dt);
if DayOf(dt) > GetSplitDay(m) then Inc(m);
if (m > 12) then m := 1;
Result := arSign[m];
end;
// get split day
function GetSplitDay(m: integer): integer;
const
arC: array[0..11] of integer = (0, -1, 1, 0, 1, 0, 2, 0, 0, 0, -1, -1);
var
i: integer;
begin
Result := 20;
for i := 0 to m - 1 do
Result := Result + arC[i];
end;
//
ShowMessage(GetSign(Now));
← →
TStas © (2007-08-06 21:33) [17]А зачем это делать? Вы в астрологию искренне верите?
← →
Котик Б (2007-08-08 14:29) [18]Фигня это, а не определение знака - правильно определять нужно по эфемеридам...
← →
Сергей М. © (2007-08-08 14:31) [19]
> о эфемеридам.
Эт еще куда ?)
← →
stanislav © (2007-08-08 15:07) [20]rolex2002 (06.08.07 12:50) [15]
Ни фига себе, ты так собираешься определять все года?
Тут надо не так, всего 12 строк такого вида:
if ((YearOf(Date)-2007) mod 12)=0 then a:="Свинья"
и так 12 раз только меняешь год и надпись за then
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2007.09.02;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.046 c