Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2002.08.08;
Скачать: [xml.tar.bz2];

Вниз

Работа с указателем   Найти похожие ветки 

 
Andy BitOff   (2002-07-28 23:32) [0]

Здравстуйте.
Подскажите как сделать следуюшее;
Проверяю правильность введенного числа месяцу и году. Делаю так:
var
god :array[1..12] of integer = (31,28,31,30,31,30,31,31,30,31,30,31); //обычный
godv:array[1..12] of integer = (31,29,31,30,31,30,31,31,30,31,30,31); //високосный
g:^integer;
begin
...
g:=@god;
if (Year mod 4) = 0 then g:=@godv; // то високосный
но как мне теперь обратится к определенному индексу? Типа так g[Month]
Т.е. Month например 2 и я должен получить 28 или 29


 
VEG   (2002-07-28 23:45) [1]

Ой, для решения такой простой задачи, ты используешь такое трудное решение! Все это можно было реализовать при помощи функции:
Function days (Year, Month):Integer;
begin
Case month of
1: Result:=31;
2: If (Year mod 4)=0 then Result:=29 else Result:=28;
3: Result:=31;
4: Result:=30;
5: Result:=31;
6: Result:=30;
7: Result:=31;
8: Result:=31;
9: Result:=30;
10: Result:=31;
11: Result:=30;
12: Result:=31;
end; //©VEG, 28.07.2002 22:53


 
Andy BitOff   (2002-07-28 23:48) [2]

Поэтому и спрашиваю у Вас помощи. Не научился еще :(


 
Юрий Зотов   (2002-07-28 23:48) [3]

Вы делаете то, что уже сделано в VCL. И указатели здесь совершенно ни при чем.

См. в модуле SysUtils функцию IsLeapYear и массив MonthDays.

А проверить правильность числа, месяца и года можно еще проще:

try
EncodeDate(Year, Month, Day);
... // Все ОК
except
... // Неверно
end;


 
Юрий Зотов   (2002-07-28 23:53) [4]

Кстати, с високосным годом не так все просто, проверка делимости на 4 еще не дает верного результата.


 
VEG   (2002-07-28 23:53) [5]

>Юрий Зотов
Об этой функции я не знал... УЖЕ ЗНАЮ!


 
Andy BitOff   (2002-07-28 23:58) [6]

Все дело в том, что мне надо проверить следующее.
Получаю первую дату и вторую, при этом любое поле (день, месяц, год) в любой дате может содержать 0 (ноль), что означает, что это поле неизвестно. И полученные даты надо сравнить, чтобы первая не была больше второй.


 
Юрий Зотов   (2002-07-29 00:17) [7]

А разве такая задача вообще имеет решение?

Вот две даты (в первой неизвестен день, во второй - год, а месяц у них один и тот же): 0.03.1999 и 12.03.0

Какая из них больше?



 
Andy BitOff   (2002-07-29 00:28) [8]

Здесь ответ прост, введенные даты корректны, поскольку не введен год во второй дате и в этом случае, раз она вторая подразумевается, что год больше. Вообще если 0, то дальше как удобно.
Это я к тому написал, что через исключение проверка такой даты не получится.


 
Юрий Зотов   (2002-07-29 01:20) [9]

Хорошо, меняем даты местами: 12.03.0 и 0.03.1999.

Теперь какая больше?


 
RV   (2002-07-29 08:08) [10]

Юрий, почему делимость на 4 ничего не дает?


 
MBo   (2002-07-29 08:15) [11]

>RV
Високосный год - делится на 4, исключая те, что делятся на 100, но включая делящиеся на 400
1900 невисокосный, 2000- високосный



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2002.08.08;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.006 c
7-24248
GreatMaster
2002-05-25 17:36
2002.08.08
Ыскейп команды для принтера или как обломать автопрогон страницы?


3-23869
Ptr
2002-07-19 15:07
2002.08.08
Чистка Interbase


1-24027
ZEE
2002-07-28 17:02
2002.08.08
Таблица в Word.Application


3-23888
BJValentine
2002-07-17 14:14
2002.08.08
Connection TimeOut


1-23979
maxim2
2002-07-23 08:20
2002.08.08
Есть ли в цикле for оператор котор переберал каждую вторую запись





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский