Модераторы: Snowy, MetalFan, bems, Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Проверить дату 
:(
    Опции темы
Михалыч
Дата 24.1.2010, 18:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 472
Регистрация: 1.7.2008

Репутация: нет
Всего: нет



Подскажите,нужно при нажатии на кнопку проверять введенную дату и сравнивать с настоящей,если меньше,то ошибка.
Но тут не все так просто,у меня на форме три Spinedit, в первый ввожу
год,во второй месяц и в третий число.Далее нужно проверить с сегоднешним.Делаю так: трем переменным присваиваю sSpinEdit4.Value,
далее перевожу в строку, делаю еще одну переменную и ей присваиваю
вот такой формат: 24.01.2010  
А вот как по условию проверить все это?

Еще хотел сделать через DecodeDate , но так можно проверить только год,
если он меньше чем сегодня,то ошибка. А как проверять месяц и число?


--------------------
За частый поиск был забанен во всех известных поисковых системах.
Обиженных  комодераторов: 1 
PM MAIL   Вверх
Демо
Дата 24.1.2010, 18:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1278
Регистрация: 3.11.2005

Репутация: 7
Всего: 50



Цитата(Михалыч @  24.1.2010,  18:05 Найти цитируемый пост)
Еще хотел сделать через DecodeDate , но так можно проверить только год,


Код

procedure DecodeDate(Date: TDateTime; var Year, Month, Day: Word);


var Year, Month, Day: Word

Добавлено через 2 минуты
+ CompareDate
+ FormatDateTime('yyyymmdd',...)  с последующим сравнением строк


--------------------
    
PM MAIL ICQ Skype   Вверх
Данкинг
Дата 24.1.2010, 18:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 11
Всего: 130



Если я правильно понял, то как-то так:
Код

procedure TForm1.FormCreate(Sender: TObject);
var d1:tdatetime;
begin
d1:=strtodate('21.01.2010');
if d1<date() then showmessage('Ошибка!');
end;



--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
amsoft
Дата 24.1.2010, 18:47 (ссылка) |  (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 201
Регистрация: 17.10.2009
Где: KZ, Astana

Репутация: 1
Всего: 4



Код

procedure TForm1.Button1Click(Sender: TObject);
begin
if EncodeDate(SpinEdit1.Value,SpinEdit2.Value,SpinEdit3.Value) < Date
then ShowMessage('Ошибка');
end;

--------------------
"Кто бы ты ни был - не думай о себе слишком"Дельфин
PM   Вверх
Михалыч
Дата 24.1.2010, 18:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 472
Регистрация: 1.7.2008

Репутация: нет
Всего: нет



Извеняюсь за неполную информацию(уже крыша едет) , дело в том  что набирать нужно обязательно во всех трех Spinedit,
но набирать можно не только сегоднешнюю дату а и  каторая будет через месяц , например  07.02.2010 .
Вот в чем вопрос,как определить что дата 07.02.2010 ,больше чем 24.01.2010  
Если сравнивать только месяца: 02 больше чем 01 , то как быть с годом,
вообщем ни как условие проверки не придумаю

Добавлено через 14 минут и 17 секунд
Не успел договорить,уже тему в другое место скинули smile 


--------------------
За частый поиск был забанен во всех известных поисковых системах.
Обиженных  комодераторов: 1 
PM MAIL   Вверх
amsoft
Дата 24.1.2010, 19:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 201
Регистрация: 17.10.2009
Где: KZ, Astana

Репутация: 1
Всего: 4



Михалыч, чем не устраивает мой вариант
--------------------
"Кто бы ты ни был - не думай о себе слишком"Дельфин
PM   Вверх
Михалыч
Дата 24.1.2010, 19:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 472
Регистрация: 1.7.2008

Репутация: нет
Всего: нет



Вы просто сравниваете введенную дату с настоящей,если сегодняшняя дата больше введенной ,то ошибка.
А если сегодня 24.01.2010 а я введу  01.02.2010 то ваш код посчитает это как прошедшее


--------------------
За частый поиск был забанен во всех известных поисковых системах.
Обиженных  комодераторов: 1 
PM MAIL   Вверх
Михалыч
Дата 24.1.2010, 20:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 472
Регистрация: 1.7.2008

Репутация: нет
Всего: нет



Всем спасибо,вопрос решен!
Если кому надо то путем  function FormatDateTime
Спасибо Демо за правильное направление

Это сообщение отредактировал(а) Михалыч - 24.1.2010, 20:09


--------------------
За частый поиск был забанен во всех известных поисковых системах.
Обиженных  комодераторов: 1 
PM MAIL   Вверх
Данкинг
Дата 24.1.2010, 20:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 11
Всего: 130



Цитата(Михалыч @  24.1.2010,  19:43 Найти цитируемый пост)
А если сегодня 24.01.2010 а я введу  01.02.2010 то ваш код посчитает это как прошедшее

Почему это?


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
kami
Дата 24.1.2010, 21:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1806
Регистрация: 25.8.2007
Где: Санкт-Петербург

Репутация: 22
Всего: 72



Цитата(Михалыч @  24.1.2010,  19:43 Найти цитируемый пост)
ваш код посчитает это как прошедшее

Глупости, уж извините за откровенность.
Лучший код для решения этой задачи привел amsoftМихалыч - прежде чем говорить "неправильно", неплохо было бы проверить.
PM MAIL WWW   Вверх
xfoby
Дата 27.1.2010, 08:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 25
Регистрация: 21.2.2009
Где: Анапа

Репутация: нет
Всего: нет



А ещё неплохо иногда использовать не SpinEdit'ы, а DateTimePicker, как положено...
PM MAIL WWW ICQ Skype Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Для новичков"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0881 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.